sequenceDiagram
    participant C721 as Chaingear's ERC721
    participant O as Chaingear Owner
    participant CC as Chaingear Contract
    participant RC as Registry Creator
    participant U1 as User 1
    participant R as Registry
    participant S as Registry Safe
    participant EC as Entry Core
    participant R721 as Registry's ERC721 
    
    O->>RC: constructor
    Note over O, RC: Initializing with Registry V1 smart-contract
    
    O->>CC: constructor
    Note over O, RC: Also Initializing of ERC721 and SplitPayment
    
    O->>RC: setBuilder
    Note over O, RC: Set chaingear's contract address as builder
    
    O->>CC: addRegistryCreatorVersion
    Note over O, CC: Add RegistryCreator address to inner </br> library of creators
    
    U1->>+CC: registerRegistry
    CC-->>RC: create
    RC-->>R: constructor
    RC-->>CC: returns Registry address
    R-->>S: new
    CC-->C721: mint ID=0
    CC-->>-U1: returns Registry address, Registry Token ID ID=0
    Note over R, CC: Initializing ERC721 Registry token for User, creates Registry and sets User as Registry admin
    
    U1->>+R: initializeRegistry
    R-->>EC: constructor
    R-->>-U1: returns EntryCore address
    Note over U1, EC: User sets smart-contract with their custom data structure for registry, should implements </br> RegistryInterface
    
    U1->>+R: createEntry
    R-->>EC: createEntry
    R-->R721: mint ID=0
    R-->>-U1: returns entryID ID=0
    Note over U1, EC: Initializing ERC721 Entry token for User, creates empty structured object 
    
    U1->>EC: updateEntry ID=0
    Note over U1, EC: User as token owner sets fields of Entry object with provided EntryID
    
    U1->>+EC: entryInfo ID=0
    EC-->>-U1: returns entry information
