function transfer(address _to, uint _value)
    public
    onlyPayloadSize(2 * 32)
    returns (bool)
    {
        require(_to != address(0x0), "No address specified");
        require(balances[msg.sender] >= _value, "Insufficiently fund");
        uint previousBalances = balances[msg.sender] + balances[_to];
        
        balances[msg.sender] = safeSub(balances[msg.sender], _value);
        balances[_to] = safeAdd(balances[_to], _value);
        emit Transfer(msg.sender, _to, _value);
        
        assert(balances[msg.sender] + balances[_to] == previousBalances);
        return true;
    }