partially implemented client-server