# Advanced Integration

{% hint style="info" %}
Advanced integration involves connecting your contract to the Micapass protocol on-chain similar to basic integration, but unlike to basic one - no need to inherit MicapassBasicClient.sol and use modifiers within methods that need to be protected by Micapass.&#x20;

Advanced integration means that you smart contract is responsible for interaction with Micapass smart contract.
{% endhint %}

{% content-ref url="advanced-integration/why-advanced-integration" %}
[why-advanced-integration](https://micapass.gitbook.io/micapass/sc-integration/advanced-integration/why-advanced-integration)
{% endcontent-ref %}

**Advanced Integration steps example overview:**

1. **Import and definition**&#x20;
   1. Add the Micapass interfaces contracts to your codebase&#x20;
      * `IMicapassBaseVerifier.sol` - interface of Micapass main smart contract
   2. Import `IMicapassBaseVerifier.sol` interface to your smart contract&#x20;
   3. Define variable within your smart contract responsible for Micapass smart contract instance&#x20;
2. **Initialization**
   1. Pass actual address of [Micapass](https://micapass.gitbook.io/micapass/sc-integration/broken-reference) to you smart contract during initialization, or through the setter method. Use the Micapass address of the chain you are going to deploy your smart contracts&#x20;
   2. Declare needed claim topic ID’s upon initialization&#x20;
3. **Prepare methods and requirements**&#x20;
   1. Define your functions that are going to be protected by Micapass&#x20;
   2. Define which user should be checked for Micapass proofs (sender, receiver, etc)&#x20;
4. **Protection implementation**
   1. In each of the defined functions add the check or required statement for a user(s) verification check&#x20;
