More work on the protocol.  Passable now, but still glitchy