# 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/CMCtKgV0bk1lwR4tWK3W/blobs/LV4CUgaBsXt9GvtpUMk6/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/manual/asset-management/load-via), and [**Instantiate via**](https://docs.coherence.io/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/CMCtKgV0bk1lwR4tWK3W/blobs/MeLJpGwZHJ4QGhywrMbZ/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.

<figure><img src="https://content.gitbook.com/content/CMCtKgV0bk1lwR4tWK3W/blobs/HSgGdxl1rQkq72VASFtR/image%20(267).png" 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.
