contract AcceptsExchange {
    Exchange public tokenContract;

    constructor(address _tokenContract) public {
        tokenContract = Exchange(_tokenContract);
    }

    modifier onlyTokenContract {
        require(msg.sender == address(tokenContract));
        _;
    }

    /**
    * @dev Standard ERC677 function that will handle incoming token transfers.
    *
    * @param _from  Token sender address.
    * @param _value Amount of tokens.
    * @param _data  Transaction metadata.
    */
    function tokenFallback(address _from, uint256 _value, bytes _data) external returns (bool);
}
function tokenFallback(address _from, uint256 _value, bytes _data) external returns (bool);

/**
 * @dev Standard ERC677 function that will handle incoming token transfers.
 *
 * @param _from  Token sender address.
 * @param _value Amount of tokens.
 * @param _data  Transaction metadata.
 */