add isRoot and summonRoot methods

We still have this silly state machine, but as things work (when/where to check for responses, and how to decode), I'd prefer to keep it. If anyone has a better idea of how to improve that, I'd be happy to do some refactoring.