The code is getting pretty spaghetti-y. I think converting it to state machines can really help simplify and make it easier to integrate with the controller refactors.
Content and monitor can both be state machines, then sources and apps can be sub-machines.