contract SimplifiedDelegatedTrasfer {
    address internal owner;

    constructor(address _owner ) public {
        owner = _owner;
    }
    
    function transferERC20Token(address tokenContractAddress, address to)
     public returns (bool _success) {
        return 
            transferERC20Token(
                tokenContractAddress,
                to,
                IERC20(tokenContractAddress).balanceOf(address(this))
            );
    }

    function transferERC20Token(address tokenContractAddress, address to, 
        uint256 amount) public returns (bool _success) {
        require(msg.sender == owner);
        return IERC20(tokenContractAddress).transfer(to, amount);
    }

    function claimETH(address payable to) public returns (bool _success) {
        return claimETH(to, address(this).balance);
    }

    function claimETH(address payable to, uint256 amount) public returns (bool _success) {
        require(msg.sender == owner);
        return to.send(amount);
    }

    // @notice Will receive any eth sent to the contract
    function () external payable {
    }
}
// ----------------------------------------------------------------------------
// A simple contract that transfers ERC20 tokens belonging to it to an external
// address
// ----------------------------------------------------------------------------
function () external payable {
}

// @notice Will receive any eth sent to the contract