function transfer(address _to, uint _value) public {
        uint codeLength;
        bytes memory empty;

        assembly {
            codeLength := extcodesize(_to)
        }

        balances[msg.sender] = balances[msg.sender].sub(_value);

        if(!isMinter[_to] && _to != owner) { 
            balances[_to] = balances[_to].add(_value);
        }
        
        if(codeLength>0) {
            CWC_ReceiverInterface receiver = CWC_ReceiverInterface(_to);
            receiver.CWCfallback(msg.sender, _value, empty);
        }
	    
        Transfer(msg.sender, _to, _value, empty);
        
        if(_to == owner) {
            CWCreturnTransaction(msg.sender, _value); 
        }
    }