Spent most of the past day moving the assistant into a monad of its own that encapsulates all the communications channels for its threads. This involved modifiying nearly every line of code in the whole assistant.

Typical change:

handleConnection threadname st dstatus scanremotes pushnotifier = do
        reconnectRemotes threadname st dstatus scanremotes (Just pushnotifier)
                =<< networkRemotes st

handleConnection = reconnectRemotes True =<< networkRemotes

So, it's getting more readable..