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_;
 };
 
