contract TokenHolder is ITokenHolder, Owned, Utils {
    /**
        @dev constructor
    */
    function TokenHolder() {
    }

    /**
        @dev withdraws tokens held by the contract and sends them to an account
        can only be called by the owner

        @param _token   ERC20 token contract address
        @param _to      account to receive the new amount
        @param _amount  amount to withdraw
    */
    function withdrawTokens(IERC20Token _token, address _to, uint256 _amount)
        public
        ownerOnly
        validAddress(_token)
        validAddress(_to)
        notThis(_to)
    {
        assert(_token.transfer(_to, _amount));
    }
}
/*
 We consider every contract to be a 'token holder' since it's currently not possible
 for a contract to deny receiving tokens.
 
 The TokenHolder's contract sole purpose is to provide a safety mechanism that allows
 the owner to send tokens that were sent to the contract by mistake back to their sender.
 */
function TokenHolder() {
}

/**
 @dev constructor
 */