contract HasNoEther is MultiOwnable {
    using SafeERC20 for ERC20Basic;

    event ReclaimToken(address _token);

    /**
     * @dev Constructor that rejects incoming Ether
     * The `payable` flag is added so we can access `msg.value` without compiler warning. If we
     * leave out payable, then Solidity will allow inheriting contracts to implement a payable
     * constructor. By doing it this way we prevent a payable constructor from working. Alternatively
     * we could use assembly to access msg.value.
     */
    constructor() public payable {
        require(msg.value == 0);
    }

    /**
     * @dev Disallows direct send by settings a default function without the `payable` flag.
     */
    function() external {}

    function reclaimToken(ERC20Basic _token)
        external
        onlyReclaimer
        returns (bool)
    {
        uint256 balance = _token.balanceOf(address(this));

        _token.safeTransfer(superOwner, balance);

        emit ReclaimToken(address(_token));

        return true;
    }
}
/**
 * @title HasNoEther
 */
function() external {}

/**
 * @dev Disallows direct send by settings a default function without the `payable` flag.
 */