@Quedlinbug Not a bad idea but I don't think that will work in my current app.
The core ApplicationState concrete type will be a single type that is composed of different protocols defined by the different features, i.e. the properties defined in the examples protocols FreezeState and UserState, to maintain a single source of truth. When a property on the ApplicationState concrete type changes (e.g. appState.userDidChange = true), it will post itself to the FeatureContainer, which will determines if any property defined in the properties it cares about have changed.