diff --git a/SUMMARY.md b/SUMMARY.md
index fc3eb45e..c14de6d7 100644
--- a/SUMMARY.md
+++ b/SUMMARY.md
@@ -41,7 +41,7 @@
* [Pricing Schemas](developers/asset-pricing.md)
* [Fees](developers/fees.md)
* [Metadata](developers/contracts/metadata.md)
- * [Revenue](developers/revenue.md)
+ * [Revenue](developers/contracts/revenue.md)
* [Fractional Ownership](developers/fractional-ownership.md)
* [Community Monetization](developers/community-monetization.md)
* [Identifiers & Metadata](developers/Identifiers-Metadata.md)
diff --git a/developers/community-monetization.md b/developers/community-monetization.md
index f7728d03..ea86cffd 100644
--- a/developers/community-monetization.md
+++ b/developers/community-monetization.md
@@ -16,7 +16,7 @@ The datasets can take one of many shapes. For AI use cases, they may be raw data
The first opportunity of data NFTs is the potential to sell the base intellectual property (IP) as an exclusive license to others. This is akin to EMI selling the Beatles’ master tapes to Universal Music: whoever owns the masters has the right to create records, CDs, and digital [sub-licenses](../discover/glossary.md#sub-licensee). It’s the same for data: as the data NFT owner you have the **exclusive right** to create ERC20 datatoken sub-licenses. With Ocean V4, this right is now transferable as a data NFT. You can sell these data NFTs in **OpenSea** and other NFT marketplaces.
-If you’re part of an established organization or a growing startup, you’ll also love the new role structure that comes with data NFTs. For example, you can specify a different address to collect [revenue](revenue.md) compared to the address that owns the NFT. It’s now possible to fully administer your project through these [roles](contracts/roles.md).
+If you’re part of an established organization or a growing startup, you’ll also love the new role structure that comes with data NFTs. For example, you can specify a different address to collect [revenue](contracts/revenue.md) compared to the address that owns the NFT. It’s now possible to fully administer your project through these [roles](contracts/roles.md).
**In short, if you have data to sell, then Ocean V4 gives you superpowers to scale up and manage your data project. We hope this enables you to bring your data to new audiences and increase your profits.**
@@ -30,7 +30,7 @@ Another new opportunity is using your own **ERC20** token in your dApp, where it
### 3. Running Your Own Provider
-Now this is a completely brand new opportunity to start generating [revenue](revenue.md) — running your own [provider](https://github.com/oceanprotocol/provider). We have been aware for a while now that many of you haven’t taken up the opportunity to run your own provider, and the reason seems obvious — there aren’t strong enough incentives to do so.
+Now this is a completely brand new opportunity to start generating [revenue](contracts/revenue.md) — running your own [provider](https://github.com/oceanprotocol/provider). We have been aware for a while now that many of you haven’t taken up the opportunity to run your own provider, and the reason seems obvious — there aren’t strong enough incentives to do so.
For those that aren’t aware, [Ocean Provider](provider/) is the proxy service that’s responsible for encrypting/ decrypting the data and streaming it to the consumer. It also validates if the user is allowed to access a particular data asset or service. It’s a crucial component in Ocean’s architecture.
diff --git a/developers/contracts/metadata.md b/developers/contracts/metadata.md
index 03b81156..30abbb99 100644
--- a/developers/contracts/metadata.md
+++ b/developers/contracts/metadata.md
@@ -1,12 +1,29 @@
# Metadata
-In the Ocean V4, you will hear about two metadata fields:
-One set at the NFT level
-On the NFT itself, there is a [metadata store](https://github.com/oceanprotocol/contracts/blob/9e29194d910f28a4f0ef17ce6dc8a70741f63309/contracts/templates/ERC721Template.sol#L247) used to store the following information.
+Imagine you're searching for data on Spanish almond production within a dApp operating within the Ocean ecosystem, managed by a European fruit and nut association. This hypothetical dApp may host a vast collection of datasets, making it essential to have a way to identify the relevant ones. One effective approach is to have metadata associated with each dataset to serve as valuable information about the data itself.
+
+Metadata plays a **crucial role** in asset **discovery**, providing essential information such as **asset type, name, creation date, and licensing details**. Each data asset can have a [decentralized identifier (DID)](../Identifiers-Metadata.md) that resolves to a DID document ([DDO](../ddo-specification.md)) containing associated metadata. The DDO is essentially [JSON](https://www.json.org/) filling in metadata fields. To understand working with OCEAN DIDs, you can refer to the [DID documentation](../Identifiers-Metadata.md). For a more comprehensive understanding of metadata structure, the [DDO Specification](../ddo-specification.md) documentation provides in-depth information.
+
+In general, any dApp within the Ocean ecosystem is required to store metadata for every listed dataset. It's important to note that dApps do not necessarily need to possess the datasets themselves; they primarily focus on storing and managing the associated metadata. While specific metadata requirements may vary, certain fundamental pieces of metadata, including:
+
+* **name**, e.g. “Largueta Almond Production: 1995 to 2005”
+* **dateCreated**, e.g. “2007–01–20”
+* **datePublished**, e.g. “2022–11–10T12:32:15Z”
+* **author**, e.g. “Spanish Almond Board”
+* **license**, e.g. “SAB Data License v4”
+* **price**, e.g. “0”
+* technical information about the **files**, such as the content type.
+
+Other metadata might also be available. For example:
+
+* **categories**, e.g. \[“agriculture”, “economics”]
+* **tags**, e.g. \[“Europe”, “Italy”, “nuts”, “almonds”]
+* **description**, e.g. “2002 Italian almond production statistics for 14 varieties and 20 regions.”
+* **additionalInformation** can be used to store any other facts about the asset.
+
-This information is used in the discovery process by aquarius and also gives important information about the asset itself.
```solidity
/**
@@ -35,82 +52,3 @@ This information is used in the discovery process by aquarius and also gives imp
-One set at the DDO level
-
-
-
-
-
-Imagine you're searching for data on Spanish almond production within a dApp operating within the Ocean ecosystem, managed by a European fruit and nut association. This hypothetical dApp may host a vast collection of datasets, making it essential to have a way to identify the relevant ones. One effective approach is to have metadata associated with each dataset to serve as valuable information about the data itself.
-
-Metadata plays a **crucial role** in asset **discovery**, providing essential information such as **asset type, name, creation date, and licensing details**. Each data asset can have a [decentralized identifier (DID)](../Identifiers-Metadata.md) that resolves to a DID document ([DDO](../ddo-specification.md)) containing associated metadata. The DDO is essentially [JSON](https://www.json.org/) filling in metadata fields. To understand working with OCEAN DIDs, you can refer to the [DID documentation](../Identifiers-Metadata.md). For a more comprehensive understanding of metadata structure, the [DDO Specification](../ddo-specification.md) documentation provides in-depth information.
-
-In general, any dApp within the Ocean ecosystem is required to store metadata for every listed dataset. It's important to note that dApps do not necessarily need to possess the datasets themselves; they primarily focus on storing and managing the associated metadata. While specific metadata requirements may vary, certain fundamental pieces of metadata, including:
-
-* **name**, e.g. “Largueta Almond Production: 1995 to 2005”
-* **dateCreated**, e.g. “2007–01–20”
-* **datePublished**, e.g. “2022–11–10T12:32:15Z”
-* **author**, e.g. “Spanish Almond Board”
-* **license**, e.g. “SAB Data License v4”
-* **price**, e.g. “0”
-* technical information about the **files**, such as the content type.
-
-Other metadata might also be available. For example:
-
-* **categories**, e.g. \[“agriculture”, “economics”]
-* **tags**, e.g. \[“Europe”, “Italy”, “nuts”, “almonds”]
-* **description**, e.g. “2002 Italian almond production statistics for 14 varieties and 20 regions.”
-* **additionalInformation** can be used to store any other facts about the asset.
-
-
-
-There is a complete list of all the possible metadata in [Ocean Enhancement Proposal #8 (OEP-8)](https://github.com/oceanprotocol/OEPs/tree/master/8), which is based on [schema.org’s Dataset schema](https://schema.org/Dataset). The metadata is stored and sent around inside a [JSON](http://json.org/) object like the following example:
-
-```json
-{
- "curation": {
- "rating": 0.892,
- "numVotes": 1040,
- "isListed": true
- },
- "base": {
- "name": "Madrid Weather forecast",
- "description": "Weather forecast of Europe/Madrid",
- "dateCreated": "2019-05-16T12:36:14.535Z",
- "author": "Norwegian Meteorological Institute",
- "type": "dataset",
- "license": "Public Domain",
- "copyrightHolder": "Norwegian Meteorological Institute",
- "files": [
- {
- "contentLength": "0",
- "contentType": "text/xml",
- "compression": "none",
- "index": 0
- }
- ],
- "categories": [
- "Meteorology"
- ],
- "tags": ["Europe", "Spain", "Madrid"],
- "price": "0",
- "encryptedFiles": "0x7a0d1c66ae861…df43aa9",
- "checksum": "d7296ccaaec…9cc9adf05faebfca",
- "datePublished": "2019-05-16T12:41:01Z"
- },
- "additionalInformation": {
- "isUseful": true,
- "isMagic": false
- }
-}
-
-```
-
-When building dApps, you, as a developer, can leverage the power of metadata in the Ocean Protocol ecosystem.
-
-OEP8 specifies the Ocean metadata schema, including the required fields. This schema is based on the public DataSet schema from schema.org. By utilizing Ethereum mainnet and compatible networks as an on-chain metadata store, Ocean ensures the availability and discoverability of data assets. Once the transaction fee is paid, there are no additional expenses or DevOps work required to maintain metadata accessibility in the future. This simplifies integration with the rest of the Ethereum-based Ocean system. Although storage costs on Ethereum mainnet are not negligible, they are manageable and the benefits outweigh the trade-offs compared to alternative solutions.
-
-Thanks to the permissionless and decentralized nature of data on the Ethereum mainnet, any last mile tool can access metadata. Ocean [Aquarius](../aquarius/) supports different metadata fields for each specific Ocean-based marketplace, and developers can also utilize The Graph to observe metadata fields common across all marketplaces.
-
-
-
diff --git a/developers/contracts/revenue.md b/developers/contracts/revenue.md
new file mode 100644
index 00000000..348a2671
--- /dev/null
+++ b/developers/contracts/revenue.md
@@ -0,0 +1,54 @@
+---
+description: Explore and manage the revenue generated from your data NFTs.
+---
+
+# Revenue
+
+Having a [data NFT](data-nfts.md) that generates revenue continuously, even when you're not actively involved, is an excellent source of income. This revenue stream allows you to earn consistently without actively dedicating your time and effort. Each time someone buys access to your NFT, you receive money, further enhancing the financial benefits. This steady income allows you to enjoy the rewards of your asset while minimizing the need for constant engagement:moneybag:
+
+
+
+By default, the revenue generated from a [data NFT](data-nfts.md) is directed to the [owner](roles.md#nft-owner) of the NFT. This arrangement automatically updates whenever the data NFT is transferred to a new owner. C
+
+However, there are scenarios where you may prefer the revenue to be sent to a different account instead of the owner. This can be accomplished by designating a new payment collector. This feature becomes particularly beneficial when the data NFT is owned by an organization or enterprise rather than an individual.
+
+{% hint style="info" %}
+There are two templates available: [ERC20Template](datatoken-templates.md#regular-template) and [ERC20TemplateEnterprise](datatoken-templates.md#enterprise-template).
+
+In the case of [ERC20TemplateEnterprise](datatoken-templates.md#enterprise-template), when you deploy a fixed rate exchange, the funds generated as revenue are automatically sent to the owner's address. The owner receives the revenue without any manual intervention.
+
+
+
+On the other hand, with [ERC20Template](datatoken-templates.md#regular-template), for a fixed rate exchange, the revenue is available at the fixed rate exchange level. The owner or the payment collector has the authority to manually retrieve the revenue.
+{% endhint %}
+
+
+
+There are several methods available for establishing a new **payment collector**. You have the option to utilize the ERC20Template/ERC20TemplateEnterprise contract directly. Another approach is to leverage the [ocean.py](../ocean.py/) and [ocean.js](../ocean.js/) libraries. Alternatively, you can employ the network explorer associated with your asset. Lastly, you can directly set it up within the Ocean Market.
+
+Here are some examples of how to set up a new payment collector using the mentioned methods:
+
+1. Using [Ocean.js](https://github.com/oceanprotocol/ocean.js/blob/ae2ff1ccde53ace9841844c316a855de271f9a3f/src/contracts/Datatoken.ts#L393).
+
+```typescript
+datatokenAddress = 'Your datatoken address'
+paymentCollectorAddress = 'New payment collector address'
+
+await datatoken.setPaymentCollector(datatokenAddress, callerAddress, paymentCollectorAddress)
+```
+
+2. Using [Ocean.py](https://github.com/oceanprotocol/ocean.py/blob/bad11fb3a4cb00be8bab8febf3173682e1c091fd/ocean\_lib/models/test/test\_datatoken.py#L39).
+
+```python
+datatokenAddress = 'Your datatoken address'
+paymentCollectorAddress = 'New payment collector address'
+
+datatoken.setPaymentCollector(paymentCollectorAddress, {"from": publisher_wallet})
+```
+
+3. Using the [Ocean Market](https://market.oceanprotocol.com/).
+
+Go to the asset detail page and then click on “Edit Asset” and then scroll down to the field called “Payment Collector Address”. Add the new Ethereum address in this field and then click “Submit“. Finally, you will then need to sign two transactions to finalize the update.
+
+
+
diff --git a/developers/revenue.md b/developers/revenue.md
deleted file mode 100644
index 0beba7c4..00000000
--- a/developers/revenue.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-description: Explore and manage the revenue generated from your data NFTs.
----
-
-# Revenue
-
-Having a [data NFT](contracts/data-nfts.md) that generates revenue continuously, even when you're not actively involved, is an excellent source of income. This revenue stream allows you to earn consistently without actively dedicating your time and effort. Each time someone buys access to your NFT, you receive money, further enhancing the financial benefits. This steady income allows you to enjoy the rewards of your asset while minimizing the need for constant engagement. :moneybag:
-
-
-
-By default, the revenue generated from a [data NFT](contracts/data-nfts.md) is directed to the [owner](contracts/roles.md#nft-owner) of the NFT. This arrangement automatically updates whenever the data NFT is transferred to a new owner. C
-
-However, there are scenarios where you may prefer the revenue to be sent to a different account instead of the owner. This can be accomplished by designating a new payment collector. This feature becomes particularly beneficial when the data NFT is owned by an organization or enterprise rather than an individual.
-
-{% hint style="info" %}
-There are two templates available: [ERC20Template](contracts/datatoken-templates.md#regular-template) and [ERC20TemplateEnterprise](contracts/datatoken-templates.md#enterprise-template).
-
-In the case of [ERC20TemplateEnterprise](contracts/datatoken-templates.md#enterprise-template), when you deploy a fixed rate exchange, the funds generated as revenue are automatically sent to the owner's address. The owner receives the revenue without any manual intervention.
-
-
-
-On the other hand, with [ERC20Template](contracts/datatoken-templates.md#regular-template), for a fixed rate exchange, the revenue is available at the fixed rate exchange level. The owner or the payment collector has the authority to manually retrieve the revenue.
-{% endhint %}
-
-
-
-There are several methods available for establishing a new **payment collector**. You have the option to utilize the ERC20Template/ERC20TemplateEnterprise contract directly. Another approach is to leverage the [ocean.py](ocean.py/) and [ocean.js](ocean.js/) libraries. Alternatively, you can employ the network explorer associated with your asset. Lastly, you can directly set it up within the Ocean Market.
-
-Here are some examples of how to set up a new payment collector using the mentioned methods:
-
-1. Using [Ocean.js](https://github.com/oceanprotocol/ocean.js/blob/ae2ff1ccde53ace9841844c316a855de271f9a3f/src/contracts/Datatoken.ts#L393).
-
-```typescript
-datatokenAddress = 'Your datatoken address'
-paymentCollectorAddress = 'New payment collector address'
-
-await datatoken.setPaymentCollector(datatokenAddress, callerAddress, paymentCollectorAddress)
-```
-
-2. Using [Ocean.py](https://github.com/oceanprotocol/ocean.py/blob/bad11fb3a4cb00be8bab8febf3173682e1c091fd/ocean\_lib/models/test/test\_datatoken.py#L39).
-
-```python
-datatokenAddress = 'Your datatoken address'
-paymentCollectorAddress = 'New payment collector address'
-
-datatoken.setPaymentCollector(paymentCollectorAddress, {"from": publisher_wallet})
-```
-
-3. Using the [Ocean Market](https://market.oceanprotocol.com/)
-
-Go to the asset detail page and then click on “Edit Asset” and then scroll down to the field called “Payment Collector Address”. Add the new Ethereum address in this field and then click “Submit“. Finally, you will then need to sign two transactions to finalize the update.
-
-
-