refactor Core.Server
parameterize Protocol monad with family ProtoT