Rename to AsyncGeneric*
diff --git a/Makefile b/Makefile
index 853a8a3..e6b2975 100644
--- a/Makefile
+++ b/Makefile
@@ -3108,7 +3108,7 @@
     src/cpp/common/completion_queue.cc \
     src/cpp/common/rpc_method.cc \
     src/cpp/proto/proto_utils.cc \
-    src/cpp/server/generic_service.cc \
+    src/cpp/server/async_generic_service.cc \
     src/cpp/server/insecure_server_credentials.cc \
     src/cpp/server/server.cc \
     src/cpp/server/server_builder.cc \
@@ -3121,6 +3121,7 @@
     src/cpp/util/time.cc \
 
 PUBLIC_HEADERS_CXX += \
+    include/grpc++/async_generic_service.h \
     include/grpc++/async_unary_call.h \
     include/grpc++/byte_buffer.h \
     include/grpc++/channel_arguments.h \
@@ -3130,7 +3131,6 @@
     include/grpc++/config.h \
     include/grpc++/create_channel.h \
     include/grpc++/credentials.h \
-    include/grpc++/generic_service.h \
     include/grpc++/impl/call.h \
     include/grpc++/impl/client_unary_call.h \
     include/grpc++/impl/internal_stub.h \
@@ -3195,7 +3195,7 @@
 src/cpp/common/completion_queue.cc: $(OPENSSL_DEP)
 src/cpp/common/rpc_method.cc: $(OPENSSL_DEP)
 src/cpp/proto/proto_utils.cc: $(OPENSSL_DEP)
-src/cpp/server/generic_service.cc: $(OPENSSL_DEP)
+src/cpp/server/async_generic_service.cc: $(OPENSSL_DEP)
 src/cpp/server/insecure_server_credentials.cc: $(OPENSSL_DEP)
 src/cpp/server/server.cc: $(OPENSSL_DEP)
 src/cpp/server/server_builder.cc: $(OPENSSL_DEP)
@@ -3261,7 +3261,7 @@
 $(OBJDIR)/$(CONFIG)/src/cpp/common/completion_queue.o: 
 $(OBJDIR)/$(CONFIG)/src/cpp/common/rpc_method.o: 
 $(OBJDIR)/$(CONFIG)/src/cpp/proto/proto_utils.o: 
-$(OBJDIR)/$(CONFIG)/src/cpp/server/generic_service.o: 
+$(OBJDIR)/$(CONFIG)/src/cpp/server/async_generic_service.o: 
 $(OBJDIR)/$(CONFIG)/src/cpp/server/insecure_server_credentials.o: 
 $(OBJDIR)/$(CONFIG)/src/cpp/server/server.o: 
 $(OBJDIR)/$(CONFIG)/src/cpp/server/server_builder.o: 
@@ -3352,7 +3352,7 @@
     src/cpp/common/completion_queue.cc \
     src/cpp/common/rpc_method.cc \
     src/cpp/proto/proto_utils.cc \
-    src/cpp/server/generic_service.cc \
+    src/cpp/server/async_generic_service.cc \
     src/cpp/server/insecure_server_credentials.cc \
     src/cpp/server/server.cc \
     src/cpp/server/server_builder.cc \
@@ -3365,6 +3365,7 @@
     src/cpp/util/time.cc \
 
 PUBLIC_HEADERS_CXX += \
+    include/grpc++/async_generic_service.h \
     include/grpc++/async_unary_call.h \
     include/grpc++/byte_buffer.h \
     include/grpc++/channel_arguments.h \
@@ -3374,7 +3375,6 @@
     include/grpc++/config.h \
     include/grpc++/create_channel.h \
     include/grpc++/credentials.h \
-    include/grpc++/generic_service.h \
     include/grpc++/impl/call.h \
     include/grpc++/impl/client_unary_call.h \
     include/grpc++/impl/internal_stub.h \
@@ -3454,7 +3454,7 @@
 $(OBJDIR)/$(CONFIG)/src/cpp/common/completion_queue.o: 
 $(OBJDIR)/$(CONFIG)/src/cpp/common/rpc_method.o: 
 $(OBJDIR)/$(CONFIG)/src/cpp/proto/proto_utils.o: 
-$(OBJDIR)/$(CONFIG)/src/cpp/server/generic_service.o: 
+$(OBJDIR)/$(CONFIG)/src/cpp/server/async_generic_service.o: 
 $(OBJDIR)/$(CONFIG)/src/cpp/server/insecure_server_credentials.o: 
 $(OBJDIR)/$(CONFIG)/src/cpp/server/server.o: 
 $(OBJDIR)/$(CONFIG)/src/cpp/server/server_builder.o: 
diff --git a/build.json b/build.json
index 4ec74b8..999e140 100644
--- a/build.json
+++ b/build.json
@@ -12,6 +12,7 @@
     {
       "name": "grpc++_base",
       "public_headers": [
+        "include/grpc++/async_generic_service.h",
         "include/grpc++/async_unary_call.h",
         "include/grpc++/byte_buffer.h",
         "include/grpc++/channel_arguments.h",
@@ -21,7 +22,6 @@
         "include/grpc++/config.h",
         "include/grpc++/create_channel.h",
         "include/grpc++/credentials.h",
-        "include/grpc++/generic_service.h",
         "include/grpc++/impl/call.h",
         "include/grpc++/impl/client_unary_call.h",
         "include/grpc++/impl/internal_stub.h",
@@ -57,7 +57,7 @@
         "src/cpp/common/completion_queue.cc",
         "src/cpp/common/rpc_method.cc",
         "src/cpp/proto/proto_utils.cc",
-        "src/cpp/server/generic_service.cc",
+        "src/cpp/server/async_generic_service.cc",
         "src/cpp/server/insecure_server_credentials.cc",
         "src/cpp/server/server.cc",
         "src/cpp/server/server_builder.cc",
diff --git a/include/grpc++/generic_service.h b/include/grpc++/async_generic_service.h
similarity index 88%
rename from include/grpc++/generic_service.h
rename to include/grpc++/async_generic_service.h
index 724982e..05fa761 100644
--- a/include/grpc++/generic_service.h
+++ b/include/grpc++/async_generic_service.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef GRPCXX_GENERIC_SERVICE_H
-#define GRPCXX_GENERIC_SERVICE_H
+#ifndef GRPCXX_ASYNC_GENERIC_SERVICE_H
+#define GRPCXX_ASYNC_GENERIC_SERVICE_H
 
 #include <grpc++/byte_buffer.h>
 #include <grpc++/stream.h>
@@ -41,7 +41,7 @@
 
 namespace grpc {
 
-typedef ServerAsyncReaderWriter<ByteBuffer, ByteBuffer> GenericServerReaderWriter;
+typedef ServerAsyncReaderWriter<ByteBuffer, ByteBuffer> GenericServerAsyncReaderWriter;
 
 class GenericServerContext GRPC_FINAL : public ServerContext {
  public:
@@ -55,14 +55,14 @@
   grpc::string host_;
 };
 
-class GenericService GRPC_FINAL {
+class AsyncGenericService GRPC_FINAL {
  public:
   // TODO(yangg) Once we can add multiple completion queues to the server
   // in c core, add a CompletionQueue* argument to the ctor here.
-  GenericService() : server_(nullptr) {}
+  AsyncGenericService() : server_(nullptr) {}
 
   void RequestCall(GenericServerContext* ctx,
-                   GenericServerReaderWriter* reader_writer,
+                   GenericServerAsyncReaderWriter* reader_writer,
                    CompletionQueue* cq, void* tag);
 
  private:
@@ -72,4 +72,4 @@
 
 } // namespace grpc
 
-#endif  // GRPCXX_GENERIC_SERVICE_H
+#endif  // GRPCXX_ASYNC_GENERIC_SERVICE_H
diff --git a/include/grpc++/generic_stub.h b/include/grpc++/generic_stub.h
index 92c4df1..6038d7c 100644
--- a/include/grpc++/generic_stub.h
+++ b/include/grpc++/generic_stub.h
@@ -39,16 +39,19 @@
 
 namespace grpc {
 
-typedef ClientAsyncReaderWriter<ByteBuffer, ByteBuffer> GenericClientReaderWriter;
+typedef ClientAsyncReaderWriter<ByteBuffer, ByteBuffer>
+    GenericClientAsyncReaderWriter;
 
 // Generic stubs provide a type-unsafe interface to call gRPC methods
 // by name.
 class GenericStub GRPC_FINAL {
  public:
-  explicit GenericStub(std::shared_ptr<ChannelInterface> channel) : channel_(channel) {}
+  explicit GenericStub(std::shared_ptr<ChannelInterface> channel)
+      : channel_(channel) {}
 
   // begin a call to a named method
-  std::unique_ptr<GenericClientReaderWriter> Call(ClientContext* context, const grpc::string& method);
+  std::unique_ptr<GenericClientAsyncReaderWriter> Call(
+      ClientContext* context, const grpc::string& method);
 
  private:
   std::shared_ptr<ChannelInterface> channel_;
diff --git a/include/grpc++/server.h b/include/grpc++/server.h
index a330627..e05bde7 100644
--- a/include/grpc++/server.h
+++ b/include/grpc++/server.h
@@ -50,7 +50,7 @@
 namespace grpc {
 class AsynchronousService;
 class GenericServerContext;
-class GenericService;
+class AsyncGenericService;
 class RpcService;
 class RpcServiceMethod;
 class ServerCredentials;
@@ -73,7 +73,7 @@
   CompletionQueue* cq() { return &cq_; }
 
  private:
-  friend class GenericService;
+  friend class AsyncGenericService;
   friend class ServerBuilder;
 
   class SyncRequest;
@@ -86,7 +86,7 @@
   // The service must exist for the lifetime of the Server instance.
   bool RegisterService(RpcService* service);
   bool RegisterAsyncService(AsynchronousService* service);
-  void RegisterGenericService(GenericService* service);
+  void RegisterAsyncGenericService(AsyncGenericService* service);
   // Add a listening port. Can be called multiple times.
   int AddPort(const grpc::string& addr, ServerCredentials* creds);
   // Start the server.
@@ -104,9 +104,9 @@
                         ServerAsyncStreamingInterface* stream,
                         CompletionQueue* cq, void* tag) GRPC_OVERRIDE;
 
-  void RequestGenericCall(GenericServerContext* context,
-                          ServerAsyncStreamingInterface* stream,
-                          CompletionQueue* cq, void* tag);
+  void RequestAsyncGenericCall(GenericServerContext* context,
+                               ServerAsyncStreamingInterface* stream,
+                               CompletionQueue* cq, void* tag);
 
   // Completion queue.
   CompletionQueue cq_;
diff --git a/include/grpc++/server_builder.h b/include/grpc++/server_builder.h
index dbd9871..c09c8fe 100644
--- a/include/grpc++/server_builder.h
+++ b/include/grpc++/server_builder.h
@@ -41,9 +41,9 @@
 
 namespace grpc {
 
+class AsyncGenericService;
 class AsynchronousService;
 class CompletionQueue;
-class GenericService;
 class RpcService;
 class Server;
 class ServerCredentials;
@@ -66,7 +66,7 @@
   void RegisterAsyncService(AsynchronousService* service);
 
   // Register a generic service.
-  void RegisterGenericService(GenericService* service);
+  void RegisterAsyncGenericService(AsyncGenericService* service);
 
   // Add a listening port. Can be called multiple times.
   void AddPort(const grpc::string& addr,
@@ -91,7 +91,7 @@
   std::vector<AsynchronousService*> async_services_;
   std::vector<Port> ports_;
   std::shared_ptr<ServerCredentials> creds_;
-  GenericService* generic_service_;
+  AsyncGenericService* generic_service_;
   ThreadPoolInterface* thread_pool_;
 };
 
diff --git a/src/cpp/server/generic_service.cc b/src/cpp/server/async_generic_service.cc
similarity index 84%
rename from src/cpp/server/generic_service.cc
rename to src/cpp/server/async_generic_service.cc
index 8ced775..67241fe 100644
--- a/src/cpp/server/generic_service.cc
+++ b/src/cpp/server/async_generic_service.cc
@@ -31,16 +31,16 @@
  *
  */
 
-#include <grpc++/generic_service.h>
+#include <grpc++/async_generic_service.h>
 
 #include <grpc++/server.h>
 
 namespace grpc {
 
-void GenericService::RequestCall(GenericServerContext* ctx,
-                                 GenericServerReaderWriter* reader_writer,
-                                 CompletionQueue* cq, void* tag) {
-  server_->RequestGenericCall(ctx, reader_writer, cq, tag);
+void AsyncGenericService::RequestCall(
+    GenericServerContext* ctx, GenericServerAsyncReaderWriter* reader_writer,
+    CompletionQueue* cq, void* tag) {
+  server_->RequestAsyncGenericCall(ctx, reader_writer, cq, tag);
 }
 
 } // namespace grpc
diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc
index f72b8a3..cc632a7 100644
--- a/src/cpp/server/server.cc
+++ b/src/cpp/server/server.cc
@@ -39,7 +39,7 @@
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 #include <grpc++/completion_queue.h>
-#include <grpc++/generic_service.h>
+#include <grpc++/async_generic_service.h>
 #include <grpc++/impl/rpc_service_method.h>
 #include <grpc++/impl/service_type.h>
 #include <grpc++/server_context.h>
@@ -228,7 +228,7 @@
   return true;
 }
 
-void Server::RegisterGenericService(GenericService* service) {
+void Server::RegisterAsyncGenericService(AsyncGenericService* service) {
   GPR_ASSERT(service->server_ == nullptr &&
              "Can only register an generic service against one server.");
   service->server_ = this;
@@ -395,9 +395,9 @@
   new AsyncRequest(this, registered_method, context, request, stream, cq, tag);
 }
 
-void Server::RequestGenericCall(GenericServerContext* context,
-                                ServerAsyncStreamingInterface* stream,
-                                CompletionQueue* cq, void* tag) {
+void Server::RequestAsyncGenericCall(GenericServerContext* context,
+                                     ServerAsyncStreamingInterface* stream,
+                                     CompletionQueue* cq, void* tag) {
   new AsyncRequest(this, context, stream, cq, tag);
 }
 
diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc
index 083509e..835596d 100644
--- a/src/cpp/server/server_builder.cc
+++ b/src/cpp/server/server_builder.cc
@@ -52,10 +52,10 @@
   async_services_.push_back(service);
 }
 
-void ServerBuilder::RegisterGenericService(GenericService* service) {
+void ServerBuilder::RegisterAsyncGenericService(AsyncGenericService* service) {
   if (generic_service_) {
     gpr_log(GPR_ERROR,
-            "Adding multiple GenericService is unsupported for now. "
+            "Adding multiple AsyncGenericService is unsupported for now. "
             "Dropping the service %p", service);
     return;
   }
@@ -96,7 +96,7 @@
     }
   }
   if (generic_service_) {
-    server->RegisterGenericService(generic_service_);
+    server->RegisterAsyncGenericService(generic_service_);
   }
   for (auto& port : ports_) {
     int r = server->AddPort(port.addr, port.creds.get());
diff --git a/test/cpp/end2end/generic_end2end_test.cc b/test/cpp/end2end/generic_end2end_test.cc
index 0dd6400..b165eae 100644
--- a/test/cpp/end2end/generic_end2end_test.cc
+++ b/test/cpp/end2end/generic_end2end_test.cc
@@ -37,7 +37,7 @@
 #include "test/core/util/test_config.h"
 #include "test/cpp/util/echo.pb.h"
 #include "src/cpp/util/time.h"
-#include <grpc++/generic_service.h>
+#include <grpc++/async_generic_service.h>
 #include <grpc++/async_unary_call.h>
 #include <grpc++/byte_buffer.h>
 #include <grpc++/channel_arguments.h>
@@ -87,7 +87,7 @@
     // Setup server
     ServerBuilder builder;
     builder.AddPort(server_address_.str(), InsecureServerCredentials());
-    builder.RegisterGenericService(&generic_service_);
+    builder.RegisterAsyncGenericService(&generic_service_);
     server_ = builder.BuildAndStart();
   }
 
@@ -124,7 +124,7 @@
 
       ClientContext cli_ctx;
       GenericServerContext srv_ctx;
-      GenericServerReaderWriter stream(&srv_ctx);
+      GenericServerAsyncReaderWriter stream(&srv_ctx);
 
       send_request.set_message("Hello");
       std::unique_ptr<ClientAsyncResponseReader<EchoResponse> > response_reader(
@@ -171,7 +171,7 @@
   CompletionQueue srv_cq_;
   std::unique_ptr<grpc::cpp::test::util::TestService::Stub> stub_;
   std::unique_ptr<Server> server_;
-  GenericService generic_service_;
+  AsyncGenericService generic_service_;
   std::ostringstream server_address_;
 };