# Asset management

In this section we cover in-depth how coherence handles loading networked Prefabs into memory, and how it instantiates them when a new remote entity appears on the network.

## CoherenceSyncConfig assets

Whenever you start synchronizing one of your Prefabs, either by adding the CoherenceSync component manually or clicking the **Sync with coherence** toggle in the Prefab Inspector, coherence will create a **CoherenceSyncConfig** ScriptableObject to track the existence of this entity, and add it to a [registry](#the-coherencesyncconfigregistry).

This object holds information on how a certain type of network entity is **loaded** and **instantiated**.

<figure><img src="https://content.gitbook.com/content/8utFtIPIKpqSCWkfmEu3/blobs/fze7RmRkJDXRbHCvcICn/CoherenceSyncConfig.png" alt="" width="563"><figcaption><p>A CoherenceSyncConfig</p></figcaption></figure>

As a user, the two main changeable options here are [**Load via**](https://docs.coherence.io/1.6/manual/asset-management/load-via), and [**Instantiate via**](https://docs.coherence.io/1.6/manual/asset-management/instantiate-via).

There is a 1:1 correspondence between a networked Prefab and its CoherenceSyncConfig object, so you can also edit the related CoherenceSyncConfig directly from the Inspector of any CoherenceSync component:

<figure><img src="https://content.gitbook.com/content/8utFtIPIKpqSCWkfmEu3/blobs/ZjRIOVfVkTXgNqQiwKns/PooledNetworkEntity_Inspector.png" alt="" width="563"><figcaption><p>CoherenceSyncConfig in CoherenceSync Inspector</p></figcaption></figure>

These edits will in fact be saved not in the Networked Prefab, but on the associated CoherenceSyncConfig asset.

Behind the scenes, the CoherenceSyncConfig object allows coherence to do the following:

* Hard reference the prefab in Editor, this means that whenever we have to do postprocessing in synced prefabs, we don't have to do a lookup or load them from Resources.
* Serialize the method of loading and instantiating this prefab in runtime.
* Soft reference the prefab in Runtime with a GUID, this means we can access the loading and instantiating implementations without having to load the prefab itself into memory.

{% hint style="info" %}
:file\_folder: `Assets/coherence/CoherenceSyncConfigs` is the default location of all CoherenceSyncConfig objects.
{% endhint %}

### The CoherenceSyncConfigRegistry

Every time a CoherenceSyncConfig object is created, it gets added to a registry, represented by a single ScriptableObject of type **CoherenceSyncConfigRegistry**.

This asset is generated by coherence, and is located in :file\_folder: `Assets/coherence`.

In addition to inspecting the assets themselves, you can use the Networked Prefabs window for a holistic view. This window is accessible from the coherence / Networked Prefabs menu item, and from the Hub's Networked Prefabs tab.&#x20;

<figure><img src="https://3473996028-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F8utFtIPIKpqSCWkfmEu3%2Fuploads%2FxnZPSfrQYYCGk8pHQ3Zq%2Fimage.png?alt=media&#x26;token=14834b23-4212-4b7b-afe5-9c01f402cea2" alt=""><figcaption></figcaption></figure>

This is a great way to see the configuration of different entities next to each other, and it allows you to do mass edits by clicking the **Edit Mode** button.
