Make Channel ctor private
diff --git a/src/cpp/client/create_channel.cc b/src/cpp/client/create_channel.cc
index 7044706..70ea7e0 100644
--- a/src/cpp/client/create_channel.cc
+++ b/src/cpp/client/create_channel.cc
@@ -38,6 +38,8 @@
 #include <grpc++/channel_arguments.h>
 #include <grpc++/create_channel.h>
 
+#include "src/cpp/client/create_channel_internal.h"
+
 namespace grpc {
 class ChannelArguments;
 
@@ -49,10 +51,10 @@
   user_agent_prefix << "grpc-c++/" << grpc_version_string();
   cp_args.SetString(GRPC_ARG_PRIMARY_USER_AGENT_STRING,
                     user_agent_prefix.str());
-  return creds ? creds->CreateChannel(target, cp_args)
-               : std::shared_ptr<Channel>(
-                     new Channel(grpc_lame_client_channel_create(
-                         NULL, GRPC_STATUS_INVALID_ARGUMENT,
-                         "Invalid credentials.")));
+  return creds
+             ? creds->CreateChannel(target, cp_args)
+             : CreateChannelInternal("", grpc_lame_client_channel_create(
+                                             NULL, GRPC_STATUS_INVALID_ARGUMENT,
+                                             "Invalid credentials."));
 }
 }  // namespace grpc