diff --git a/Makefile b/Makefile
index 3a61f79fb3931f30fb0a53ba6206390bebfce6ae..f2884fd8e5e40ef66cafbc79f324b5fa05080c2d 100644
--- a/Makefile
+++ b/Makefile
@@ -2632,6 +2632,7 @@ PUBLIC_HEADERS_CXX += \
     include/grpc++/config.h \
     include/grpc++/create_channel.h \
     include/grpc++/credentials.h \
+    include/grpc++/impl/call.h \
     include/grpc++/impl/client_unary_call.h \
     include/grpc++/impl/internal_stub.h \
     include/grpc++/impl/rpc_method.h \
diff --git a/build.json b/build.json
index fdb32ebf717cbb99e8ea37ce4707178202679fce..602d7752a1c2e1e5c0671ffe544bb33f93320bac 100644
--- a/build.json
+++ b/build.json
@@ -385,6 +385,7 @@
         "include/grpc++/config.h",
         "include/grpc++/create_channel.h",
         "include/grpc++/credentials.h",
+        "include/grpc++/impl/call.h",
         "include/grpc++/impl/client_unary_call.h",
         "include/grpc++/impl/internal_stub.h",
         "include/grpc++/impl/rpc_method.h",
diff --git a/include/grpc++/call.h b/include/grpc++/impl/call.h
similarity index 100%
rename from include/grpc++/call.h
rename to include/grpc++/impl/call.h
diff --git a/include/grpc++/stream.h b/include/grpc++/stream.h
index c30825a7a57681385d87d891d2871bdf1df2483c..57ca86ad706e9db1d6528a4bca6f66c2f2380e68 100644
--- a/include/grpc++/stream.h
+++ b/include/grpc++/stream.h
@@ -34,9 +34,9 @@
 #ifndef __GRPCPP_STREAM_H__
 #define __GRPCPP_STREAM_H__
 
-#include <grpc++/call.h>
 #include <grpc++/channel_interface.h>
 #include <grpc++/completion_queue.h>
+#include <grpc++/impl/call.h>
 #include <grpc++/status.h>
 #include <grpc/support/log.h>
 
diff --git a/src/cpp/client/channel.cc b/src/cpp/client/channel.cc
index a1539e4711d7a45c6c71dad3428786533107aebc..da94739ea0d2986ffb6a823930cb951431425324 100644
--- a/src/cpp/client/channel.cc
+++ b/src/cpp/client/channel.cc
@@ -42,12 +42,12 @@
 #include <grpc/support/slice.h>
 
 #include "src/cpp/proto/proto_utils.h"
-#include <grpc++/call.h>
 #include <grpc++/channel_arguments.h>
 #include <grpc++/client_context.h>
 #include <grpc++/completion_queue.h>
 #include <grpc++/config.h>
 #include <grpc++/credentials.h>
+#include <grpc++/impl/call.h>
 #include <grpc++/impl/rpc_method.h>
 #include <grpc++/status.h>
 #include <google/protobuf/message.h>
diff --git a/src/cpp/client/client_unary_call.cc b/src/cpp/client/client_unary_call.cc
index e652750e22a01e329c6fd72c03884e22fedda53b..8598592068563a023d40f03425aad809a36a23bd 100644
--- a/src/cpp/client/client_unary_call.cc
+++ b/src/cpp/client/client_unary_call.cc
@@ -32,7 +32,7 @@
  */
 
 #include <grpc++/impl/client_unary_call.h>
-#include <grpc++/call.h>
+#include <grpc++/impl/call.h>
 #include <grpc++/channel_interface.h>
 #include <grpc++/completion_queue.h>
 #include <grpc++/status.h>
diff --git a/src/cpp/common/call.cc b/src/cpp/common/call.cc
index d3a9de3620eea1919d26ba524cf1786c8f07fb24..0315ffb6bdd9ddad4e518597615ed80ff5ea8aa6 100644
--- a/src/cpp/common/call.cc
+++ b/src/cpp/common/call.cc
@@ -31,7 +31,7 @@
  *
  */
 
-#include <include/grpc++/call.h>
+#include <include/grpc++/impl/call.h>
 #include <include/grpc++/channel_interface.h>
 
 namespace grpc {