function _transfer(address _from, address _to, uint _value) internal {
        
        require(locked[_from] == 0);
        
        
        if (locked[_to] > 0) {
            require(balances[_to] + _value <= retentionMax);
        }
        
        
        require(_to != 0x0);
        
        
        require(balances[_from] >= _value);
        
        
        require(balances[_to] + _value > balances[_to]);
        
        
        uint256 previousBalances = balances[_from] + balances[_to];
        
        
        balances[_from] -= _value;
        
        
        balances[_to] += _value;
        Transfer(_from, _to, _value);
        
        
        assert(balances[_from] + balances[_to] == previousBalances);
    }