contract Gate {
    ERC20Basic private TOKEN;
    address private PROXY;

    /// Gates are to be created by the TokenProxy.
    function Gate(ERC20Basic _token, address _proxy) public {
        TOKEN = _token;
        PROXY = _proxy;
    }

    /// Transfer requested amount of tokens from Gate to Proxy address.
    /// Only the Proxy can request this and should request transfer of all
    /// tokens.
    function transferToProxy(uint256 _value) public {
        require(msg.sender == PROXY);

        require(TOKEN.transfer(PROXY, _value));
    }
}
function transferToProxy(uint256 _value) public {
    require(msg.sender == PROXY);

    require(TOKEN.transfer(PROXY, _value));
}

/// Transfer requested amount of tokens from Gate to Proxy address.
/// Only the Proxy can request this and should request transfer of all
/// tokens.