client server implementation