On top of that, I really dislike the direct passing around of these subsystems together directly, as it feels like it's violating separation of concerns.  Ultimately the presentation layer will need its state updated periodically but not on every request.  Just don't want to grow that can of worms.  Plus, channels model this message passing very well.