bytes memory _data = abi.encodePacked(0x1870c10f, 
					   bytes32(_giver),
					   bytes32(givethReceiverId),
					   bytes32(0),
					   bytes32(0));
    
    success = givethBridge.call.value(_value)(_data);
    return success;
  }

      
  function getGift(address _transitAddress) public view returns (
	     uint256 tokenId,
	     string tokenUri,								 
	     address sender,  
	     uint claimEth,   
	     uint nftPrice,   
	     Statuses status, 
	     string msgHash   
    ) {
    Gift memory gift = gifts[_transitAddress];
    tokenUri =  nft.tokenURI(gift.tokenId);
    TokenCategory memory category = tokenCategories[tokenUri];    
    return (
	    gift.tokenId,
	    tokenUri,
	    gift.sender,
	    gift.claimEth,
	    category.price,	    
	    gift.status,
	    gift.msgHash
	    );
  }
  
  
  function cancelGift(address _transitAddress) public returns (bool success) {
    Gift storage gift = gifts[_transitAddress];

    
    require(gift.status == Statuses.Deposited);
    
    
    require(msg.sender == gift.sender);
    
    
    gift.status = Statuses.Cancelled;

    
    if (gift.claimEth > 0) {
      gift.sender.transfer(gift.claimEth);
    }