function trade(uint64 yourMon, uint64 desiredMon) external
    {
        
        
        
        
        checkOwnership(yourMon);
        
        
        if(listedMonForMon[desiredMon] != yourMon)
        {
            
            uint32 class;
            (,class,,,,,) = EtheremonData(dataAddress).getMonsterObj(yourMon);
            require(listedMonForClass[desiredMon] == class);
        }
        
        
        executeTrade(msg.sender, yourMon, monToTrainer[desiredMon], desiredMon);
        
        
        delist(yourMon);
        delist(desiredMon);
    }