# 10.2 Listing & cancelling

Our marketplace acts as an escrow contract, holding someone's NFT and releasing it when certain conditions are met. One of these conditions is the provision of the correct payment tokens. As tokens are central to the functionality, it is useful to create helper functions that transfer NFTs and fungible tokens. These functions will take a trait reference (either BIP009 or BIP010) and then execute the proper contract call to transfer the token.
