Move events into apps - which give more granular control over specific behaviors.  Try to hide irrelevant bits from within apps, so you have access to only whats been explicitly granted.  Still lots of testing, but this is a good step.  Added a bit of cleanup - WebSockets now reconnect automatically, pollers are now broken apart (may revisit this later).