func: function _safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) 
      internal
      isValidToken(_tokenId) 
      canTransfer(_tokenId)
      {
      address owner = TokenIdToOwner[_tokenId];
      require(owner != address(0) && owner == _from);
      require(_to != address(0));
          
      _transfer(_from, _to, _tokenId);
  
      
      
      bytes4 retval = ERC721TokenReceiver(_to).onERC721Received(_from, _tokenId, data);
      
      require(retval == 0xf0b9e5ba);
    }