add general server implementation