add a protocol for client and server