The Collection Whitepaper
We believe NFTs will blossom into the standard for wrapping all non-fungible assets in the world: Art, brands, IP, synthetic assets, membership, real estate, and more.
NFTs are more than just "jpegs on the blockchain." They wrap data on-chain that could not previously be represented in this way, including avatars, art, collectibles, music, game items, IP, domain names, membership, tickets, identity, synthetic assets, and real estate.
NFTs are one of the most anti-fragile parts of the crypto industry as they represent a highly general protocol that expands the possibilities of what we can do with tokens.
ERC-20 tokens successfully captured a variety of use cases during the DeFi boom of 2020-2021, and as society gains comfort and familiarity with crypto protocols, we will see an array of fundamental use cases emerge using NFTs, ERC-20, and other decentralized protocols. This on-chain activity will subsume a plethora of previously off-chain-only economic activity.
This use-case expansion is why crypto protocols as a whole are anti-fragile from cycle to cycle.
Protocols are developed to bridge the gap, and to allow for trusted representation of real-world assets on-chain. Art, music, and real estate are traded on-chain, where the ledger is immutable, and where the markets are always open with deep liquidity.
Decentralized finance (DeFi) demonstrated what we could do with ERC-20 fungible tokens, with the protocols in the ecosystem expanding to over $54B in total value locked (TVL) by November 2022. Total value locked is an essential and popularized metric to measure since it represents what the committed value on these protocols are.
DeFi enables the permissionless transfer of value with fungible tokens, while NFT finance (NFTFi) does so with non-fungible tokens. However, given the fast-growing development trajectory and innovation speed of NFTFi projects, NFTFi is well-positioned to capture a meaningful share of the $54B DeFi TVL from its current $175M TVL.
By solving the key problems with NFTFi, we will make NFTs fully generalizable and applicable to many use cases, bringing forth the next 100X in TVL. Part of the excitement and promise of NFTFi is the fact that many possibilities — of automated market making, vaulting, trading, and deep liquid markets — happen when the building blocks of DeFi are thoughtfully layered on NFTs. Liquidity begets liquidity within a more flexible market structure.
The collapse of FTX, 3AC, and worries of insolvency on other centralized exchanges is weighing deeply on the crypto industry. It is clear to us that the future of crypto will be one where decentralized finance (DeFi) takes center stage.
In this regard, NFTs, as compared to the rest of crypto, have a head start — the existing popular places to trade NFTs are already smart-contract settled (Opensea, X2Y2, Blur). A more specialized subset is motivated by DeFi market protocols (BendDAO, Sudoswap) and is not just using the blockchain as a settlement layer.
We believe that NFTs will prevail. To enable it to blossom even further, we’ve built a next-generation decentralized NFT trading protocol to create systematically-important liquidity for the whole spectrum of NFTs.
- 1.Deeper liquidity for all NFTs in the collection
- 2.Enhancing composability with any NFT Finance protocol
- 3.Adequate incentives for liquidity providers to reward their commitment
Deeper liquidity of assets in a market drives greater confidence, enabling users to instantly buy and sell NFTs at the best price. Collection.xyz introduces advanced pooling for NFTs, which enables users to create submarkets on subsets of a collection by token IDs, traits, rarity, or other variables. We believe advanced pooling will deepen liquidity for all ranges of NFTs in any given collection.
Existing NFT marketplaces (Opensea, Looksrare, X2Y2) have prioritized focusing their solution and marketplace on individual orderbook for every unique NFT.
Opensea has the following ways to transact an NFT:
- 1.Sell now for a fixed price (suggestions (A) the floor price, (B) the top trait price, or (C) the current best collection bid)
- 2.Timed auction, sell with declining price (Dutch auction)
- 3.Timed auction, sell to highest bidder (English auction)
The first option is based on an individual orderbook. The individual orderbook is the idea that every NFT is completely unique, and there should be a list of bids and asks maintained for each item (SKU in retail parlance).
As an alternative to the other two options, Opensea layers on a set of auction price discovery mechanisms. Imagine having to wait for an auction to complete to purchase every single NFT you’re interested in buying. It’s not ideal for the impatient buyer.
These marketplaces tend to use the blockchain mainly as a settlement layer. The bid side liquidity is generally poor on these marketplaces.
Additionally, there is a large operational overhead as bids and asks needs to be actively managed on each item, and NFT traders on each collection need significant infrastructure investment to manage orders across multiple orderbooks. For example, The Bored Ape Collection has 10,000 items, and if it became fast-moving, that is 10,000 orderbooks that need to be individually managed.
Part of the reason liquidity is unnecessarily hampered in NFT markets compared to DeFi is that
- 1.There is a large bid/ask spread, exacerbated by exchange fees.
- 2.The infrastructure to manage so many individual orderbooks is a necessary evil for professional traders today. Costs and maintaining these is a full-time role that’s only accessible to a few.
- 3.For the regular user, managing multiple NFTs across collections is not possible. Liquidity provisioning is impossible.
To take an example down DeFi history lane: Ethlend gained little traction as a p2p loan matching service. Upon pivoting and rebranding to Aave with a set of centralized pools, their business grew exponentially. NFT markets will always be plagued by liquidity challenges by a focus on individual orderbook per token ID. It is simply not scalable nor desirable for all assets to have an individual orderbook by default. We need to find common touchpoints between collections and token IDs.
An individual orderbook might work well for the rarest and most valuable of NFTs — but for the mid-range, it breaks. For the mid-range, it’s far more efficient to get it from a market that sells it as part of a class.
Let’s dive into some specific examples of the approach of market-making on the basis of class commonalities.
Floor-based valuation per Collection ignores the majority of the collection
To move away from individual orderbook per token ID, the next natural idea is to group assets by the entire collection. This is the approach that current NFTFi protocols take. Whether a Bored Ape or an Azuki, they are identified by their contract addresses for the whole collection.
But how would you value collateral from a single collection? Most fledgling NFT Finance protocols group these collections, and value them on the “floor”, which is the lowest ask price across all token IDs. We think this solution is incomplete because for most collections, 80-90% of collections are not at, or even near, the floor.
For example, with Bored Apes, as of November 23, 141/771 = 18.2% of BAYC were listed in the 60-75 ETH range with the floor being 60ETH. So, if we define the “floor region” as floor + 25%, then more than 80% of NFTs are not at or near the floor. There are few economic incentives for 80% of the NFT collection’s owners to participate in DeFi protocols where their tokens are valued at a haircut. Practically speaking, there is currently no effective price discovery for specific classes of NFT collections other than the floor.
BAYC floor depth of listed tokens - NFTGo, 23 Nov 2022 GMT 1300. The low end forms about 20% of the collection, and the high end (more than 8x the floor) forms about 10% of the collection. ~70% of the collection is in the middle.
We find this distribution replicated across other collections such as CryptoPunks (pictured), MAYC, etc.
We see this 20-70-10 distribution often, where 20% of tokens are at the floor region of [floor, floor * 1.2] and 10% tokens are ≥ 8x the floor, with 70% in the middle
The data reveals that a floor-based valuation method does NOT serve the majority of NFT collectors — many users are discerning and have no reason to participate at the floor price.
Alice is an art collector who doesn’t buy NFTs at the floor. The NFTs she buys are handpicked — ones with traits she thinks are rare or appealing. She’s heard about DeFi, BendDAO and Sudoswap, and wants to try out these new protocols. But alas, BendDAO values her NFT collateral at the floor. And if she wants to try out an automated market maker (AMM), she can use Sudoswap, but she can only set a limit sell order, since Sudoswap as-is doesn’t allow her to place bids on non-floor NFTs effectively. Alice chooses to not do anything since the tools do not enable her to.
If you’ve spent time thinking about the pros and cons of this Azuki vs that Azuki, and you’re willing to take the risk to experiment with Decentralized Finance (DeFi), you will want to try NFT Finance (NFTFi) protocols like Sudoswap. But despite the initial enthusiasm, there is simply no easy way to bridge the gap between art collectors’ needs and DeFi — because existing NFTFi protocols are built solely around floor NFTs. There’s little reason to participate with your non-floor NFTs in the current world of NFT finance.
Valuing an entire NFT collection based on the floor price, multiplied by the total quantity in the collection, impedes the value capture of NFTs as a rich and effective protocol to subsume art and other domains.
No major market is valued based on its least valuable constituent — e.g. the S&P 500 is not valued by the 500th company’s market cap, nor real estate indices by the cheapest property in the portfolio.
The identification of NFT protocols with 10k PFP projects (which may be more forgiving of a floor price-based valuation strategy) may blind NFT-protocol builders to the inappropriateness of using floor price valuation for other potential NFT markets, such as real estate, insurance, or art.
Let’s smash the floor and shake things up.
Different markets have already laboriously built ad hoc solutions to create meaningful subgroups of token IDs.
For ENS domains, which is the largest NFT collection on Ethereum, we find specialty markets like ENS Vision which have come up with meaningful tracked submarkets — albeit still on the level of aggregating individual orderbooks for those subgroups.
ENS Vision - top ENS name categories
For many NFT protocol use cases, we can find many meaningful subgroups at a glance. In domain names: 3 digit ENS names, country names, etc.; in 10k PFP projects, particularly valuable traits such as M2 Mutants for MAYC, Solid Gold Fur for BAYC, etc.
But until now, there is no systematic solution that respects traits and is able to go beyond the individual order-book model for each individual item if it is a non-floor (or valuable part of the collection).
We believe that it isn’t good enough to rely on having an individual order book for each asset. Some NFT projects, such as Spicyest, have tried to build appraisal systems, but this cannot be a long-term solution to building thick liquidity if the rails are inefficient.
Liquidity needs to be instantly available on both the bid and ask sides. Appraisals mean little if there is no committed capital or NFT to buy or sell close to price X due to technical and operational friction.
An appraisal from Spicyest for BAYC #3485
We want a system where valuations are prices committed by both buyers and sellers - liquid valuations.
We also believe that automated market makers (AMMs) are the best current NFTFi primitive to bring liquidity on-chain. AMMs automate the distribution of yield and fees to the user via smart contracts. Anyone could commit two assets in a pair to create a pool that anyone else can trade against. It enables a much wider range of users to become liquidity providers without necessarily needing to set up complex infrastructure.
It’s crucial that the AMM enables anyone to create pools without the need to apply for permissions. Greater access brings about more participants and liquidity. This is similar to how Uniswap brought in a much wider range of liquidity providers that allowed it to provide more liquidity, leapfrogging a more centralized model in Kyber Network.
We believe there is a need to bring the missing middle of NFTs on NFTFi.
Why the middle? Again, to recap, the floor is about 20% of the collection, the top end about 10% of the collection, with 70% of token IDs being in the middle. We think the vast majority of NFTs are simply not being served by the NFTFi paradigm yet.
We see this distribution replicated again and again through each collection. The current NFTFi model of serving the floor may work only when the distribution is heavily towards the floor (and even then, it is a big if), but this is not how collections are empirically distributed.
To solve for this, we have built advanced pooling for NFTs; a primitive that efficiently encodes groups of token IDs onto the pools, using a Merkle root encoding (in the most gas-efficient way). With this, you can create DeFi submarkets on subsets of a collection.
- NFTs may be grouped by trait number, male or female, or their look, to create deep two-sided markets on any subset of the collection. Each NFT-ETH or NFT-ERC20 will have a Merkle root associated with it that corresponds with the token IDs belonging to a trait.
- With greater expressivity and the ability to make a market on any conceivable subset of the market, liquidity can be sourced from all around the curve. Just as Picassos have their own sub-markets — (blue period, rose period, cubist), NFTs collections will be able to have DeFi-native two-sided markets for any part of their collection.
The core implementation problem such a protocol has to solve is resolving the traits data (which is a heterogenous mix of on-chain and off-chain data) AND making it such that we don’t make off-chain indexers a single point of failure (the token IDs must be able to be checked/verified).
For the former, recall that traits are often stuffed into the tokenURI field of the ERC721 standard. In the course of indexing NFTs, a sampling of the diverse trait storage formats we’ve encountered include base64 encoding directly on chain, IPFS representation, web2 URLs hosted on a server somewhere, etc.
The difficulty of parsing these traits and image data results in heavy reliance on APIs to resolve these NFT assets (resolve = fetch media data and metadata in a performant way). Moxie Marlinspike (founder of Signal) blogged about his experience creating an NFT in early 2022, which highlighted the industry’s (then) reliance on the Opensea API to resolve NFTs (https://moxie.org/2022/01/07/web3-first-impressions.html). A year on, there remains no standardized format for traits metadata.
And perhaps there should not be — given that rich metadata storage does not appear to us to be a native concern of core Ethereum protocol development, we also find the near-term prospect of trait standardization unlikely.
The token IDs that make up the pool’s Merkle hash can be easily and transparently compared between multiple providers. This ensures that there are no single points of failure.
As well, you have the final say over the token IDs and Merkle hash committed to each pool. When trading, you can also transparently see the set of token IDs allowed into a pool.
We propose the following workflow to create and trade advanced trait pools. How it works:
- 1.Choose a trait (e.g. Bored Ape → Fur → Solid Gold).
- 2.Use a backend service to get the list of token IDs corresponding to this population (note: we don’t have to trust one third-party provider as the token IDs can be compared with another provider).
- 3.Hash these token IDs into a Merkle root.
- 4.The pool uses this Merkle root only to allow these token IDs to be traded into this pool.
- 5.Now it is possible to trade the vastly more valuable Gold Fur Apes as their own token set, without getting stuffed with Floor Apes (as any protocol relying only on a token contract filter will do). Traits acquire an on-chain representation — and the Merkle encoding of the set of token IDs that represent it. Token IDs are emitted in an encoded format so that developers indexing the smart contract can verify that the token ids are indeed represented with the correct Merkle root.
- 6.We will have an open-source JS library to help generate these proofs. Given a list of token IDs, it should generate the same Merkle proof. This will be a lightweight library — usable both on the frontend and backend. Our design principle for this ensures that everyone should be able to use this JS library to verify membership quickly.
There are two interactions with the contract where you need to know the Merkle encoding, which is available in the open-source library.
- Pair creation. E.g. Bored Ape, Golden Fur <> ETH
- Making a trade on a pair E.g. Selling into the pair
The Merkle tree approach we feel is the most gas-efficient and composable way is to create pairs. We picked this direction as opposed to two other alternatives we considered: Oracles (expensive to make external function calls), and bitmap packing (efficient up to a point, but doesn’t scale well beyond a few thousand; bitmap packing also makes things less composable as there still needs to be a hash to compare for further downstream aggregation and comparison).
We are excited to see how the community interacts with advanced pooling.
We believe strongly in the DeFi principles of composability — allowing multiple protocols to be used in tandem with the hypothecation of valuable economic activity.
A sophisticated financial system — like DeFi, which aims to financialize an ever-increasing amount of the world’s assets — must be able to apportion risk correctly, or have the ability to apportion the risk in the first place.
Productive economic activity (such as AMMs) should be itself subject to market forces.
All DeFi primitives need to be built with composability in mind — and allow value capture by different protocols. This is a core design principle in non-NFT DeFi, and Collection brings it to NFT DeFi with our LP token. Previous generations of AMMs, such as Sudoswap, lacked this LP token and the ensuing composability.
Collection.xyz is a Lego plate - which is a solid building block in any NFT ecosystem. NFT DeFi without an LP token are Lego tiles - terminal and cannot be built upon. As Collection.xyz builds out its vision of an NFT value chain, it will more and more resemble a brick!
Let’s use an analogy from Lego, since DeFi often promulgates a self-image of money-Legos.
In Lego, tiles are often used to smooth out the studded appearance of many models but are seen as a terminal piece that cannot be built upon (for obvious reasons - namely, it lacks studs on top). It can cap building activity but is used only as the last part of the model-making.
Collection.xyz is a plate that allows others to build on, as it has stud connectors above and stud connectors below. The workhorses of the Lego buildings are bricks and plates because they build on top of things, and in turn things can be built on top of them. They are bidirectional and can redirect productive building activity — just as Collection.xyz connects the world of liquidity provision and yield.
We also prefer the ERC-721 over the ERC-20 implementation of LP tokens as ERC-20 complicates retrieval/redemption of the original liquidity provided. ERC-721 tokens don’t have fractionalization issues, and one can have full control over a given pool of liquidity — i.e. with any trade, one can understand how one’s LP collateral evolves, and withdrawal is uncomplicated. The much more important benefit of tokenization is hypothecation over fractionalization.
We know that “composability” is a term that is used fast and loose in DeFi. To us, composability is a set of design principles. It should:
- 1.Be a set of independent and self-contained services that performs a specific function related to money.
- 2.Have use outside of the original team’s protocol (which can be achieved through functions that can be built on, or representation as a standard protocol).
Previous iterations of NFTFi have not conformed to this standard. Sudoswap’s pool ownership representing AMM activities for instance: It lacked an LP representation or any smart contract functionality that could be extended, and thus was difficult to represent to an external protocol.
Composability is important to us because we believe economically useful protocols should have the maximum surface to build off of. Standardized interfaces like ERC721 help keep the mental model simple, making it easy to extend smart contract functions allows for creativity and extension of the core protocol once deployed.
Thus, the Collection AMM focuses on having the ability to represent productive AMM activity through the LP token representation.
All pools in Collection have ownership represented as an ERC721 LP token, which can be used as proof of ownership or further used in other DeFi protocols. LP tokens represent a claim on the base economically productive activity — fees from trading.
NFTFi and DeFi protocols live and die by the liquidity they can attract from users. For most NFT communities and collections, they need additional tools and infrastructure to attract more liquidity providers for their collection. NFT creators can issue additional NFT collections or ERC-20 tokens that perform various utilities. Collection.xyz enable them to reward liquidity providers through these NFT and fungible tokens.
For liquidity providers, vaults with incentives and compensation mechanisms to make up for losing optionality. The risks can also be explained as non-mean-reversion (a.k.a. impermanent loss / negative gamma for the quantitative finance-savvy).
Market makers (of which AMMs are a specific case) are short optionality. A market-maker of asset A vs. asset B makes money based on these factors:
- The volatility of the price ratio A/B (A/B = price of A denominated as multiples of the price of B; the volatility is the degree of change of this ratio)
- The amount of time the market maker is taking on the risk
- The distance of the end number A/B at t1 vs the initial number A/B at t0 (the drift)
What is an AMM? An AMM is a protocol that makes a market through a series of formulae/algorithms around a certain price.
The popular term “impermanent loss”, is misleading because “impermanent” is based on assumption that prices mean-revert to wherever it is you first contributed liquidity. Losses are real if the price has drifted to a new ratio of A/B.
The benefits to a retail user are that an AMM imposes a lot less cognitive overhead. It’s easy to understand and utilize. Anyone can be a market-maker.
AMMs are compensated by the fees and/or the bid/ask spread that is received by the pool. However, in a market that participants believe is not mean reverting, and the more widespread this belief is, the less liquidity will be available to the market.
NFTFi generally works within a range, like Uniswap v3. Unlike in XYK curves in wider defi, given the step-change function (e.g. you buy Azuki #1 for 8 ETH, and then Azuki #2 for 9 ETH) and low amount of liquidity of NFT pairs (i.e., you have 1-50 Azukis on one side, and a limited amount of ETH to buy Azukis; not a highly divisible ERC20 balance unlike previous DeFi), you only have the liquidity to make within a range [p0, p1] where p0 and p1 are prices of the NFT in its pair in ETH or ERC20 token.
Optionality is time-based leverage. If you are long optionality/gamma, you have a chance of an outsize payoff, but pay a fee every day in option decay to achieve it. If you are short optionality, you receive fees but must hope for mean-reversion in order to turn a profit. To read more on gamma: https://www.optionseducation.org/advancedconcepts/gamma
Intuition: For traditional market makers, the market price of risk is approximated by the time premium of selling an at-the-money strangle (strikes = bid/ask). You are short gamma, believing in mean-reversion within the range. In traditional markets such as S&P options, the option premium is the fair market price for the volatility or expected scalps within that period.
A gamma ladder example:
- Centre spot price at $100
- Buy at $80, 85, 90, 95, Sell at $105, 110, 115, 120
- When you are fulfilled on an order, put a new order in the opposite direction above (e.g. you buy at $95, you put a sell order at $100, and your new center spot price is $95)
- As long as you return back to $100, if you roundtrip many times (e.g. $95-$100, 95-100), you will make $2.50 per trade.
- This is the profit that the option premium (up to time t) tries to approximate.
- Losses get large if prices drift far out of the range of the gamma ladder’s orders
If a protocol is designed where a large fraction of liquidity is provided by AMMs, we believe that there need to be alternative channels other than just the fee+bid-ask-scalping to compensate and reward systemically important liquidity.
A smart market maker would simply withdraw liquidity whenever he/she believes it no longer suits to make a market, or that it will no longer be mean-reverting. But this would mean that the underlying trading protocol will undergo reflexive fragmentation, the belief of future directional moves damages liquidity sufficiently such that any volume may move the market. To some extent, this is the reflexive nature of all financial markets.
As market designers, there are counter-cyclical shock absorbers that can be built to be robust against such reflexivity.
Collection’s vaults make it possible to express the view that liquidity is desirable — more than can be compensated by fees — and to reduce the correlation between the liquidity for trading and the incentives for AMM.
Currently, the DeFi protocols for NFTFi (for those that allow for individual liquidity over communal liquidity) do not have ways to compensate providers of liquidity beyond fees.
- Part of the problem is due to the lack of LP tokens representing the LP activity.
- Another part of the problem is discoverability — because the AMMs tend to be on an individual curve basis (in order not to deal with problems of redemption of a communal pool), the trading experience across pools relies on backend indexing for discoverability of pools, and there is no on-chain aggregation.
Therefore we’ve built the plumbing to enable yields to be linked to liquidity provided to an individual pool, while preserving individual liquidity share.
The primitive for liquidity incentives is the Vault, which makes it possible to incentivize AMMs above and beyond their trading fees for a period of time.
- Rewards can be in any ERC-20 token or ERC-721 (think USDC, WETH, 100 Azuki Beans or 1 rare Azuki).
- This provides a route to compensate the market makers for providing systemically important liquidity at times of their choosing.
We’ve observed that many collection creators do not have the capacity to incentivize liquidity with ERC-20 tokens; as such, enabling a draw reward vault with ERC-721 tokens creates the possibility of creating derivative NFT collections to reward liquidity on the primary NFT liquidity.
For vaults that are ERC-20 tokens, users get a fractional reward based on the contribution of liquidity to the overall pool. For ERC-721 tokens, the liquidity provided by users entitles them to tickets to participate in the draw of the ERC-721 NFTs. Using a VRF from the Chainlink oracle, it’s proven to be a fair draw. Parameters are set by the vault creator, thus they can incentivize various factors such as honoring royalties, a certain tight bid-ask delta, fees, and specific classes of NFTs.
Different styles of vaults can arise with different compensation strategies and apportioning mechanisms (two-sided, single-sided, etc), because the Collection AMM is composable with any Collection Vault or protocol utilizing the LP token.
Why we chose not to go down the Uniswap route of a global unified liquidity pool. Uniswap’s model requires you to cede control of the prices you buy at; you join a global liquidity pool that buys and sells at certain points. Additionally, common pools are fungible, but NFTs are non-fungible.
- Have control over where you want to buy/sell
- Clear demarcation of ownership of NFTs. One-to-one — you own your liquidity — if there are no trades, you definitely own your own liquidity
- Need help to determine at-the-money liquidity
- The native notion of at-the money liquidity / effective liquidity because you know which tick you are near
- Communal pooling needs to solve the problem of withdrawing from a common pool. Users are not indifferent to what is withdrawn from the pool, barring any commercial activity, they would like the same NFT to be given to them.
We’re launching with 0% protocol fees, and governance can decide to adopt carry fees. Liquidity pool owners determine the pool fees and royalty % for the pools they create. We encourage liquidity pool creators to honor royalties, and vault creators can incentivize liquidity providers to do so.
DeFi protocols now have zero or near-zero fees and are run as public goods. Flat protocol fees are poor design. NFTs with a tight width (e.g. 2-5%) between bid/ask are charged exactly the same as NFTs with a loose width (5-15%).
What is fairer is that the protocol take should be parameterized by the amount of the actual fees. A more transparent, carry model, on the percent of the fees, itself a percent of the actual transaction value.
Carry can be between 0-X%.
We don’t want to take a flat protocol fee. We believe in the carry model: We make money when you make money.
We know it’s the crypto ice age — but hey, our ancestral mammals also banded together for the journey to spring, right? We look forward to building together with the broader NFT community.
Collection.xyz aims to be the decentralized exchange protocol for NFTs that forms the building bricks for the movement of NFT Finance in the foreseeable future. The core team has been building through various market cycles with companies such as Coinbase, CoinMarketCap, and Chainlink. We welcome any developer or team to join us in the mission to make NFTs more liquid and accessible to everyone.
With your feedback from the testnet launch, we will push for the Ethereum main net release in Q1 2023. Smart contract audits are presently underway and public audit reports will be made available.