move ServerProtocolFactory to protocol