function transferFrom(
        address _from,
        address _to,
        uint256 _value
    )
        public
        returns (bool)
    {
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);
        require(_to != address(0));

        if (this == _to) {
            require(kvtToken.transfer(_from, _value));
            _burn(_from, _value);
        } else {
            balances[_from] = balances[_from].sub(_value);
            balances[_to] = balances[_to].add(_value);   
        }
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        emit Transfer(_from, _to, _value);
        return true;
    }