modifier with public visibility as this function
    
    
    
    
    
    
    
    function performBuyOrder(
        OrderData data,
        uint256 amountToGiveForOrder
    )
        public
        payable
        whenNotPaused
        onlyTotle
        returns (uint256 amountSpentOnOrder, uint256 amountReceivedFromOrder)
    {
        
        if (data.takerAmount != amountToGiveForOrder || msg.value != data.takerAmount) {
            
            msg.sender.transfer(msg.value);
            return (0,0);
        }

        fillAndValidate(data);

        

        if (!ERC20SafeTransfer.safeTransfer(data.makerToken, msg.sender, data.makerAmount)) {
            errorReporter.revertTx("AirSwap: Unable to transfer bought tokens to primary");
        }

        return (data.takerAmount, data.makerAmount);
    }