initial server implementation