function transfer(address _to, uint256 _amount) returns (bool success) {
        require(balanceOf(msg.sender) >= _amount);
        uint previousBalances = balances[msg.sender] + balances[_to];
        addToBalance(_to, _amount);
        decrementBalance(msg.sender, _amount);
        Transfer(msg.sender, _to, _amount);
        assert(balances[msg.sender] + balances[_to] == previousBalances);
        return true;
    }