So what's going on here. We have some state, the counter, and we want to observe changes to this state from anywhere in our application. We want to change this state when events occur in our application, so we have action functions that we can call when those events happen. The way the state changes in response to those actions is defined functionally using reducers. In essence this is the Redux pattern, with two major differences. First, the state tree is implemented with RxJS Observables, with every value, or node, in the tree having its own observable you can subscribe to. Second, actions creators are functions that have their own associated observable. We can hook the state observables and one or more additional observables together using reduce, which accepts a reducer function that works like a Redux reducer.