This should allow us to implement a variety of different bearer channel handlers.
this will save us from rewriting some state machines, at least for a quick start.