You can use the same context on multiple context holders and you can have data properties in contexts which are contexts themselves. So what you can have for your ship: ShipContext - Inventory (InventoryContext) - Other data... Let's say you have a ship prefab. This prefab has a ContextHolder on its root game object. When you instantiate your ship you set the context on the ContextHolder of the instantiated game object. To access the inventory from a behaviour on the ship prefab you just have to set the whole path (e.g. Inventory.Items.Count or Inventory.MaxCount).