# Unlock
**def create_or_merge_managers(self, urls):**
- We shouldn't be setting the lock address on the manager's Wallet node.
**key creation**
*raw data for keys*
for k in l["keys"]:
keys_tmp = {
"id": k["id"],
"address": address,
"expiration": k["expiration"],
"tokenURI": k["tokenURI"],
"createdAt": k["createdAt"],
"network": network,
}
we need to be setting `address` from here as `tokenAddress` and `id` as `tokenId`
**def create_or_merge_managers(self, urls):**
Managers are not `Manager` nodes in the graph, they are `Wallet` nodes.
**def create_or_merge_holders(self, urls):**
Holders are not holder nodes in the graph, they are `Wallet` nodes.
- they should not have data from the nft on their nodes, i.e. keyId, etc. They should just have the wallet address.
**def link_or_merge_managers_to_locks(self, urls):**
- We should be creating these edges based on the data saved in lockManagers, not data set on the nodes in the graph
**def link_or_merge_locks_to_keys(self, urls):**
This can be a query that matches on `tokenAddress` which should be the same on locks / keys
** def link_or_merge_holders_to_locks(self, urls):**
- holders are wallets
- data to create edges should be taken from `lockManagers` not from nodes in graph
**def link_or_merge_holders_to_keys(self, urls):**
- Ibid