# Using the source code directly

If you prefer not to install the npm package, you can integrate the interoperability standard by downloading the source code manually. This approach is useful for teams that want full control over their contract setup or want to review the implementation before upgrading their collection.

#### 1. Download the contract files

The full source code of the interoperability standard is available here:\
[**https://www.npmjs.com/package/@infinity-ecosystem/asset-integration-standard**](https://www.npmjs.com/package/@infinity-ecosystem/asset-integration-standard)

Download the package or copy the relevant Solidity files into your project.

#### 2. Import the contract into your collection

After adding the file to your repository, import it inside your collection contract:

```solidity
import "./lib/AbstractGamingStudioAsset.sol";
```

Make sure the import path matches your project structure.

#### 3. Extend your collection with the standard

Modify your contract definition so it inherits from the interoperability standard:

```solidity
contract MyCollection is
  ...
  AbstractGamingStudioAsset
```

This inheritance enables the protocol to set royalty recipients correctly, verify asset origin, and support parent–child linkage.

#### 4. Initialize the abstract contract

Inside your initializer, call the initializer for the abstract contract:

```solidity
function initialize() public initializer {
    __AbstractGamingStudioAsset_init(_uri, _assetStore);
}
```

\_uri is your collection uri. The second parameter must always be the Asset Store contract address on SEI:

```
0x165F79d307CbB9861bB5a080DA757B368CE57395
```

#### 5. Implement required overrides

Two functions must be overridden to complete integration:

```solidity
function getStudioName() external view override returns (string memory) {}
```

```solidity
function supportsInterface(bytes4 interfaceId)
    public
    view
    override(AbstractGamingStudioAsset)
    returns (bool)
{
    return super.supportsInterface(interfaceId);
}
```

These overrides ensure that lineage tracking, royalty routing, and parent–child validation function correctly.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://infinity-games.gitbook.io/infinity-games-docs/smart-contract-integration/modifying-a-collection-contract/using-the-source-code-directly.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
