diff --git a/include/grpc++/server_builder.h b/include/grpc++/server_builder.h
index 2003d18..d6bb3bd 100644
--- a/include/grpc++/server_builder.h
+++ b/include/grpc++/server_builder.h
@@ -121,8 +121,8 @@
   };
 
   int max_message_size_;
-  std::vector<NamedService<RpcService>> services_;
-  std::vector<NamedService<AsynchronousService>> async_services_;
+  std::vector<std::unique_ptr<NamedService<RpcService>>> services_;
+  std::vector<std::unique_ptr<NamedService<AsynchronousService>>> async_services_;
   std::vector<Port> ports_;
   std::vector<ServerCompletionQueue*> cqs_;
   std::shared_ptr<ServerCredentials> creds_;
diff --git a/src/cpp/server/server_builder.cc b/src/cpp/server/server_builder.cc
index fa158c9..86c78f0 100644
--- a/src/cpp/server/server_builder.cc
+++ b/src/cpp/server/server_builder.cc
@@ -51,21 +51,21 @@
 }
 
 void ServerBuilder::RegisterService(SynchronousService* service) {
-  services_.emplace_back(service->service());
+  services_.emplace_back(new NamedService<RpcService>(service->service()));
 }
 
 void ServerBuilder::RegisterAsyncService(AsynchronousService* service) {
-  async_services_.emplace_back(service);
+  async_services_.emplace_back(new NamedService<AsynchronousService>(service));
 }
 
 void ServerBuilder::RegisterService(
     const grpc::string& addr, SynchronousService* service) {
-  services_.emplace_back(addr, service->service());
+  services_.emplace_back(new NamedService<RpcService>(addr, service->service()));
 }
 
 void ServerBuilder::RegisterAsyncService(
     const grpc::string& addr, AsynchronousService* service) {
-  async_services_.emplace_back(addr, service);
+  async_services_.emplace_back(new NamedService<AsynchronousService>(addr, service));
 }
 
 void ServerBuilder::RegisterAsyncGenericService(AsyncGenericService* service) {
@@ -107,13 +107,13 @@
   }
   for (auto service = services_.begin(); service != services_.end();
        service++) {
-    if (!server->RegisterService(service->host.get(), service->service)) {
+    if (!server->RegisterService((*service)->host.get(), (*service)->service)) {
       return nullptr;
     }
   }
   for (auto service = async_services_.begin();
        service != async_services_.end(); service++) {
-    if (!server->RegisterAsyncService(service->host.get(), service->service)) {
+    if (!server->RegisterAsyncService((*service)->host.get(), (*service)->service)) {
       return nullptr;
     }
   }
