Merge github.com:grpc/grpc into strong-includes
diff --git a/BUILD b/BUILD
index e5c5599..142c78b 100644
--- a/BUILD
+++ b/BUILD
@@ -165,9 +165,24 @@
     "src/core/ext/census/grpc_filter.h",
     "src/core/ext/census/mlog.h",
     "src/core/ext/census/rpc_metric_id.h",
+    "src/core/ext/client_config/client_channel.h",
+    "src/core/ext/client_config/client_channel_factory.h",
+    "src/core/ext/client_config/client_config.h",
+    "src/core/ext/client_config/connector.h",
+    "src/core/ext/client_config/initial_connect_string.h",
+    "src/core/ext/client_config/lb_policy.h",
+    "src/core/ext/client_config/lb_policy_factory.h",
+    "src/core/ext/client_config/lb_policy_registry.h",
+    "src/core/ext/client_config/resolver.h",
+    "src/core/ext/client_config/resolver_factory.h",
+    "src/core/ext/client_config/resolver_registry.h",
+    "src/core/ext/client_config/subchannel.h",
+    "src/core/ext/client_config/subchannel_call_holder.h",
+    "src/core/ext/client_config/subchannel_index.h",
+    "src/core/ext/client_config/uri_parser.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
-    "src/core/ext/transport/chttp2/transport/alpn.h",
+    "src/core/ext/transport/chttp2/alpn/alpn.h",
     "src/core/ext/transport/chttp2/transport/bin_encoder.h",
     "src/core/ext/transport/chttp2/transport/chttp2_transport.h",
     "src/core/ext/transport/chttp2/transport/frame.h",
@@ -191,26 +206,11 @@
     "src/core/lib/channel/channel_args.h",
     "src/core/lib/channel/channel_stack.h",
     "src/core/lib/channel/channel_stack_builder.h",
-    "src/core/lib/channel/client_channel.h",
     "src/core/lib/channel/compress_filter.h",
     "src/core/lib/channel/connected_channel.h",
     "src/core/lib/channel/context.h",
     "src/core/lib/channel/http_client_filter.h",
     "src/core/lib/channel/http_server_filter.h",
-    "src/core/lib/channel/subchannel_call_holder.h",
-    "src/core/lib/client_config/client_channel_factory.h",
-    "src/core/lib/client_config/client_config.h",
-    "src/core/lib/client_config/connector.h",
-    "src/core/lib/client_config/initial_connect_string.h",
-    "src/core/lib/client_config/lb_policy.h",
-    "src/core/lib/client_config/lb_policy_factory.h",
-    "src/core/lib/client_config/lb_policy_registry.h",
-    "src/core/lib/client_config/resolver.h",
-    "src/core/lib/client_config/resolver_factory.h",
-    "src/core/lib/client_config/resolver_registry.h",
-    "src/core/lib/client_config/subchannel.h",
-    "src/core/lib/client_config/subchannel_index.h",
-    "src/core/lib/client_config/uri_parser.h",
     "src/core/lib/compression/algorithm_metadata.h",
     "src/core/lib/compression/message_compress.h",
     "src/core/lib/debug/trace.h",
@@ -299,18 +299,37 @@
     "src/core/ext/census/operation.c",
     "src/core/ext/census/placeholders.c",
     "src/core/ext/census/tracing.c",
+    "src/core/ext/client_config/channel_connectivity.c",
+    "src/core/ext/client_config/client_channel.c",
+    "src/core/ext/client_config/client_channel_factory.c",
+    "src/core/ext/client_config/client_config.c",
+    "src/core/ext/client_config/client_config_plugin.c",
+    "src/core/ext/client_config/connector.c",
+    "src/core/ext/client_config/default_initial_connect_string.c",
+    "src/core/ext/client_config/initial_connect_string.c",
+    "src/core/ext/client_config/lb_policy.c",
+    "src/core/ext/client_config/lb_policy_factory.c",
+    "src/core/ext/client_config/lb_policy_registry.c",
+    "src/core/ext/client_config/resolver.c",
+    "src/core/ext/client_config/resolver_factory.c",
+    "src/core/ext/client_config/resolver_registry.c",
+    "src/core/ext/client_config/subchannel.c",
+    "src/core/ext/client_config/subchannel_call_holder.c",
+    "src/core/ext/client_config/subchannel_index.c",
+    "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
     "src/core/ext/lb_policy/round_robin/round_robin.c",
     "src/core/ext/resolver/dns/native/dns_resolver.c",
     "src/core/ext/resolver/sockaddr/sockaddr_resolver.c",
+    "src/core/ext/transport/chttp2/alpn/alpn.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
     "src/core/ext/transport/chttp2/client/secure/secure_channel_create.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c",
-    "src/core/ext/transport/chttp2/transport/alpn.c",
     "src/core/ext/transport/chttp2/transport/bin_encoder.c",
+    "src/core/ext/transport/chttp2/transport/chttp2_plugin.c",
     "src/core/ext/transport/chttp2/transport/chttp2_transport.c",
     "src/core/ext/transport/chttp2/transport/frame_data.c",
     "src/core/ext/transport/chttp2/transport/frame_goaway.c",
@@ -333,26 +352,10 @@
     "src/core/lib/channel/channel_args.c",
     "src/core/lib/channel/channel_stack.c",
     "src/core/lib/channel/channel_stack_builder.c",
-    "src/core/lib/channel/client_channel.c",
     "src/core/lib/channel/compress_filter.c",
     "src/core/lib/channel/connected_channel.c",
     "src/core/lib/channel/http_client_filter.c",
     "src/core/lib/channel/http_server_filter.c",
-    "src/core/lib/channel/subchannel_call_holder.c",
-    "src/core/lib/client_config/client_channel_factory.c",
-    "src/core/lib/client_config/client_config.c",
-    "src/core/lib/client_config/connector.c",
-    "src/core/lib/client_config/default_initial_connect_string.c",
-    "src/core/lib/client_config/initial_connect_string.c",
-    "src/core/lib/client_config/lb_policy.c",
-    "src/core/lib/client_config/lb_policy_factory.c",
-    "src/core/lib/client_config/lb_policy_registry.c",
-    "src/core/lib/client_config/resolver.c",
-    "src/core/lib/client_config/resolver_factory.c",
-    "src/core/lib/client_config/resolver_registry.c",
-    "src/core/lib/client_config/subchannel.c",
-    "src/core/lib/client_config/subchannel_index.c",
-    "src/core/lib/client_config/uri_parser.c",
     "src/core/lib/compression/compression_algorithm.c",
     "src/core/lib/compression/message_compress.c",
     "src/core/lib/debug/trace.c",
@@ -425,7 +428,6 @@
     "src/core/lib/surface/call_details.c",
     "src/core/lib/surface/call_log_batch.c",
     "src/core/lib/surface/channel.c",
-    "src/core/lib/surface/channel_connectivity.c",
     "src/core/lib/surface/channel_init.c",
     "src/core/lib/surface/channel_ping.c",
     "src/core/lib/surface/channel_stack_type.c",
@@ -514,6 +516,7 @@
   ],
   deps = [
     "//external:protobuf_compiler",
+    ":gpr",
   ],
 )
 
@@ -528,9 +531,24 @@
     "src/core/ext/census/grpc_filter.h",
     "src/core/ext/census/mlog.h",
     "src/core/ext/census/rpc_metric_id.h",
+    "src/core/ext/client_config/client_channel.h",
+    "src/core/ext/client_config/client_channel_factory.h",
+    "src/core/ext/client_config/client_config.h",
+    "src/core/ext/client_config/connector.h",
+    "src/core/ext/client_config/initial_connect_string.h",
+    "src/core/ext/client_config/lb_policy.h",
+    "src/core/ext/client_config/lb_policy_factory.h",
+    "src/core/ext/client_config/lb_policy_registry.h",
+    "src/core/ext/client_config/resolver.h",
+    "src/core/ext/client_config/resolver_factory.h",
+    "src/core/ext/client_config/resolver_registry.h",
+    "src/core/ext/client_config/subchannel.h",
+    "src/core/ext/client_config/subchannel_call_holder.h",
+    "src/core/ext/client_config/subchannel_index.h",
+    "src/core/ext/client_config/uri_parser.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
-    "src/core/ext/transport/chttp2/transport/alpn.h",
+    "src/core/ext/transport/chttp2/alpn/alpn.h",
     "src/core/ext/transport/chttp2/transport/bin_encoder.h",
     "src/core/ext/transport/chttp2/transport/chttp2_transport.h",
     "src/core/ext/transport/chttp2/transport/frame.h",
@@ -554,26 +572,11 @@
     "src/core/lib/channel/channel_args.h",
     "src/core/lib/channel/channel_stack.h",
     "src/core/lib/channel/channel_stack_builder.h",
-    "src/core/lib/channel/client_channel.h",
     "src/core/lib/channel/compress_filter.h",
     "src/core/lib/channel/connected_channel.h",
     "src/core/lib/channel/context.h",
     "src/core/lib/channel/http_client_filter.h",
     "src/core/lib/channel/http_server_filter.h",
-    "src/core/lib/channel/subchannel_call_holder.h",
-    "src/core/lib/client_config/client_channel_factory.h",
-    "src/core/lib/client_config/client_config.h",
-    "src/core/lib/client_config/connector.h",
-    "src/core/lib/client_config/initial_connect_string.h",
-    "src/core/lib/client_config/lb_policy.h",
-    "src/core/lib/client_config/lb_policy_factory.h",
-    "src/core/lib/client_config/lb_policy_registry.h",
-    "src/core/lib/client_config/resolver.h",
-    "src/core/lib/client_config/resolver_factory.h",
-    "src/core/lib/client_config/resolver_registry.h",
-    "src/core/lib/client_config/subchannel.h",
-    "src/core/lib/client_config/subchannel_index.h",
-    "src/core/lib/client_config/uri_parser.h",
     "src/core/lib/compression/algorithm_metadata.h",
     "src/core/lib/compression/message_compress.h",
     "src/core/lib/debug/trace.h",
@@ -648,16 +651,35 @@
     "src/core/ext/census/operation.c",
     "src/core/ext/census/placeholders.c",
     "src/core/ext/census/tracing.c",
+    "src/core/ext/client_config/channel_connectivity.c",
+    "src/core/ext/client_config/client_channel.c",
+    "src/core/ext/client_config/client_channel_factory.c",
+    "src/core/ext/client_config/client_config.c",
+    "src/core/ext/client_config/client_config_plugin.c",
+    "src/core/ext/client_config/connector.c",
+    "src/core/ext/client_config/default_initial_connect_string.c",
+    "src/core/ext/client_config/initial_connect_string.c",
+    "src/core/ext/client_config/lb_policy.c",
+    "src/core/ext/client_config/lb_policy_factory.c",
+    "src/core/ext/client_config/lb_policy_registry.c",
+    "src/core/ext/client_config/resolver.c",
+    "src/core/ext/client_config/resolver_factory.c",
+    "src/core/ext/client_config/resolver_registry.c",
+    "src/core/ext/client_config/subchannel.c",
+    "src/core/ext/client_config/subchannel_call_holder.c",
+    "src/core/ext/client_config/subchannel_index.c",
+    "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
     "src/core/ext/lb_policy/round_robin/round_robin.c",
     "src/core/ext/resolver/dns/native/dns_resolver.c",
     "src/core/ext/resolver/sockaddr/sockaddr_resolver.c",
+    "src/core/ext/transport/chttp2/alpn/alpn.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
-    "src/core/ext/transport/chttp2/transport/alpn.c",
     "src/core/ext/transport/chttp2/transport/bin_encoder.c",
+    "src/core/ext/transport/chttp2/transport/chttp2_plugin.c",
     "src/core/ext/transport/chttp2/transport/chttp2_transport.c",
     "src/core/ext/transport/chttp2/transport/frame_data.c",
     "src/core/ext/transport/chttp2/transport/frame_goaway.c",
@@ -680,26 +702,10 @@
     "src/core/lib/channel/channel_args.c",
     "src/core/lib/channel/channel_stack.c",
     "src/core/lib/channel/channel_stack_builder.c",
-    "src/core/lib/channel/client_channel.c",
     "src/core/lib/channel/compress_filter.c",
     "src/core/lib/channel/connected_channel.c",
     "src/core/lib/channel/http_client_filter.c",
     "src/core/lib/channel/http_server_filter.c",
-    "src/core/lib/channel/subchannel_call_holder.c",
-    "src/core/lib/client_config/client_channel_factory.c",
-    "src/core/lib/client_config/client_config.c",
-    "src/core/lib/client_config/connector.c",
-    "src/core/lib/client_config/default_initial_connect_string.c",
-    "src/core/lib/client_config/initial_connect_string.c",
-    "src/core/lib/client_config/lb_policy.c",
-    "src/core/lib/client_config/lb_policy_factory.c",
-    "src/core/lib/client_config/lb_policy_registry.c",
-    "src/core/lib/client_config/resolver.c",
-    "src/core/lib/client_config/resolver_factory.c",
-    "src/core/lib/client_config/resolver_registry.c",
-    "src/core/lib/client_config/subchannel.c",
-    "src/core/lib/client_config/subchannel_index.c",
-    "src/core/lib/client_config/uri_parser.c",
     "src/core/lib/compression/compression_algorithm.c",
     "src/core/lib/compression/message_compress.c",
     "src/core/lib/debug/trace.c",
@@ -757,7 +763,6 @@
     "src/core/lib/surface/call_details.c",
     "src/core/lib/surface/call_log_batch.c",
     "src/core/lib/surface/channel.c",
-    "src/core/lib/surface/channel_connectivity.c",
     "src/core/lib/surface/channel_init.c",
     "src/core/lib/surface/channel_ping.c",
     "src/core/lib/surface/channel_stack_type.c",
@@ -1025,6 +1030,8 @@
   ],
   deps = [
     "//external:protobuf_clib",
+    ":gpr",
+    ":grpc",
   ],
 )
 
@@ -1149,6 +1156,7 @@
   deps = [
     "//external:protobuf_clib",
     ":gpr",
+    ":grpc",
     ":grpc_unsecure",
   ],
 )
@@ -1219,8 +1227,8 @@
     ".",
   ],
   deps = [
-    ":grpc",
     ":gpr",
+    ":grpc",
   ],
 )
 
@@ -1353,18 +1361,37 @@
     "src/core/ext/census/operation.c",
     "src/core/ext/census/placeholders.c",
     "src/core/ext/census/tracing.c",
+    "src/core/ext/client_config/channel_connectivity.c",
+    "src/core/ext/client_config/client_channel.c",
+    "src/core/ext/client_config/client_channel_factory.c",
+    "src/core/ext/client_config/client_config.c",
+    "src/core/ext/client_config/client_config_plugin.c",
+    "src/core/ext/client_config/connector.c",
+    "src/core/ext/client_config/default_initial_connect_string.c",
+    "src/core/ext/client_config/initial_connect_string.c",
+    "src/core/ext/client_config/lb_policy.c",
+    "src/core/ext/client_config/lb_policy_factory.c",
+    "src/core/ext/client_config/lb_policy_registry.c",
+    "src/core/ext/client_config/resolver.c",
+    "src/core/ext/client_config/resolver_factory.c",
+    "src/core/ext/client_config/resolver_registry.c",
+    "src/core/ext/client_config/subchannel.c",
+    "src/core/ext/client_config/subchannel_call_holder.c",
+    "src/core/ext/client_config/subchannel_index.c",
+    "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
     "src/core/ext/lb_policy/round_robin/round_robin.c",
     "src/core/ext/resolver/dns/native/dns_resolver.c",
     "src/core/ext/resolver/sockaddr/sockaddr_resolver.c",
+    "src/core/ext/transport/chttp2/alpn/alpn.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
     "src/core/ext/transport/chttp2/client/secure/secure_channel_create.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c",
-    "src/core/ext/transport/chttp2/transport/alpn.c",
     "src/core/ext/transport/chttp2/transport/bin_encoder.c",
+    "src/core/ext/transport/chttp2/transport/chttp2_plugin.c",
     "src/core/ext/transport/chttp2/transport/chttp2_transport.c",
     "src/core/ext/transport/chttp2/transport/frame_data.c",
     "src/core/ext/transport/chttp2/transport/frame_goaway.c",
@@ -1387,26 +1414,10 @@
     "src/core/lib/channel/channel_args.c",
     "src/core/lib/channel/channel_stack.c",
     "src/core/lib/channel/channel_stack_builder.c",
-    "src/core/lib/channel/client_channel.c",
     "src/core/lib/channel/compress_filter.c",
     "src/core/lib/channel/connected_channel.c",
     "src/core/lib/channel/http_client_filter.c",
     "src/core/lib/channel/http_server_filter.c",
-    "src/core/lib/channel/subchannel_call_holder.c",
-    "src/core/lib/client_config/client_channel_factory.c",
-    "src/core/lib/client_config/client_config.c",
-    "src/core/lib/client_config/connector.c",
-    "src/core/lib/client_config/default_initial_connect_string.c",
-    "src/core/lib/client_config/initial_connect_string.c",
-    "src/core/lib/client_config/lb_policy.c",
-    "src/core/lib/client_config/lb_policy_factory.c",
-    "src/core/lib/client_config/lb_policy_registry.c",
-    "src/core/lib/client_config/resolver.c",
-    "src/core/lib/client_config/resolver_factory.c",
-    "src/core/lib/client_config/resolver_registry.c",
-    "src/core/lib/client_config/subchannel.c",
-    "src/core/lib/client_config/subchannel_index.c",
-    "src/core/lib/client_config/uri_parser.c",
     "src/core/lib/compression/compression_algorithm.c",
     "src/core/lib/compression/message_compress.c",
     "src/core/lib/debug/trace.c",
@@ -1479,7 +1490,6 @@
     "src/core/lib/surface/call_details.c",
     "src/core/lib/surface/call_log_batch.c",
     "src/core/lib/surface/channel.c",
-    "src/core/lib/surface/channel_connectivity.c",
     "src/core/lib/surface/channel_init.c",
     "src/core/lib/surface/channel_ping.c",
     "src/core/lib/surface/channel_stack_type.c",
@@ -1524,9 +1534,24 @@
     "src/core/ext/census/grpc_filter.h",
     "src/core/ext/census/mlog.h",
     "src/core/ext/census/rpc_metric_id.h",
+    "src/core/ext/client_config/client_channel.h",
+    "src/core/ext/client_config/client_channel_factory.h",
+    "src/core/ext/client_config/client_config.h",
+    "src/core/ext/client_config/connector.h",
+    "src/core/ext/client_config/initial_connect_string.h",
+    "src/core/ext/client_config/lb_policy.h",
+    "src/core/ext/client_config/lb_policy_factory.h",
+    "src/core/ext/client_config/lb_policy_registry.h",
+    "src/core/ext/client_config/resolver.h",
+    "src/core/ext/client_config/resolver_factory.h",
+    "src/core/ext/client_config/resolver_registry.h",
+    "src/core/ext/client_config/subchannel.h",
+    "src/core/ext/client_config/subchannel_call_holder.h",
+    "src/core/ext/client_config/subchannel_index.h",
+    "src/core/ext/client_config/uri_parser.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
-    "src/core/ext/transport/chttp2/transport/alpn.h",
+    "src/core/ext/transport/chttp2/alpn/alpn.h",
     "src/core/ext/transport/chttp2/transport/bin_encoder.h",
     "src/core/ext/transport/chttp2/transport/chttp2_transport.h",
     "src/core/ext/transport/chttp2/transport/frame.h",
@@ -1550,26 +1575,11 @@
     "src/core/lib/channel/channel_args.h",
     "src/core/lib/channel/channel_stack.h",
     "src/core/lib/channel/channel_stack_builder.h",
-    "src/core/lib/channel/client_channel.h",
     "src/core/lib/channel/compress_filter.h",
     "src/core/lib/channel/connected_channel.h",
     "src/core/lib/channel/context.h",
     "src/core/lib/channel/http_client_filter.h",
     "src/core/lib/channel/http_server_filter.h",
-    "src/core/lib/channel/subchannel_call_holder.h",
-    "src/core/lib/client_config/client_channel_factory.h",
-    "src/core/lib/client_config/client_config.h",
-    "src/core/lib/client_config/connector.h",
-    "src/core/lib/client_config/initial_connect_string.h",
-    "src/core/lib/client_config/lb_policy.h",
-    "src/core/lib/client_config/lb_policy_factory.h",
-    "src/core/lib/client_config/lb_policy_registry.h",
-    "src/core/lib/client_config/resolver.h",
-    "src/core/lib/client_config/resolver_factory.h",
-    "src/core/lib/client_config/resolver_registry.h",
-    "src/core/lib/client_config/subchannel.h",
-    "src/core/lib/client_config/subchannel_index.h",
-    "src/core/lib/client_config/uri_parser.h",
     "src/core/lib/compression/algorithm_metadata.h",
     "src/core/lib/compression/message_compress.h",
     "src/core/lib/debug/trace.h",
diff --git a/Makefile b/Makefile
index 2ce51cb..87539a9 100644
--- a/Makefile
+++ b/Makefile
@@ -2457,18 +2457,37 @@
     src/core/ext/census/operation.c \
     src/core/ext/census/placeholders.c \
     src/core/ext/census/tracing.c \
+    src/core/ext/client_config/channel_connectivity.c \
+    src/core/ext/client_config/client_channel.c \
+    src/core/ext/client_config/client_channel_factory.c \
+    src/core/ext/client_config/client_config.c \
+    src/core/ext/client_config/client_config_plugin.c \
+    src/core/ext/client_config/connector.c \
+    src/core/ext/client_config/default_initial_connect_string.c \
+    src/core/ext/client_config/initial_connect_string.c \
+    src/core/ext/client_config/lb_policy.c \
+    src/core/ext/client_config/lb_policy_factory.c \
+    src/core/ext/client_config/lb_policy_registry.c \
+    src/core/ext/client_config/resolver.c \
+    src/core/ext/client_config/resolver_factory.c \
+    src/core/ext/client_config/resolver_registry.c \
+    src/core/ext/client_config/subchannel.c \
+    src/core/ext/client_config/subchannel_call_holder.c \
+    src/core/ext/client_config/subchannel_index.c \
+    src/core/ext/client_config/uri_parser.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
     src/core/ext/lb_policy/pick_first/pick_first.c \
     src/core/ext/lb_policy/round_robin/round_robin.c \
     src/core/ext/resolver/dns/native/dns_resolver.c \
     src/core/ext/resolver/sockaddr/sockaddr_resolver.c \
+    src/core/ext/transport/chttp2/alpn/alpn.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
     src/core/ext/transport/chttp2/client/secure/secure_channel_create.c \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c \
-    src/core/ext/transport/chttp2/transport/alpn.c \
     src/core/ext/transport/chttp2/transport/bin_encoder.c \
+    src/core/ext/transport/chttp2/transport/chttp2_plugin.c \
     src/core/ext/transport/chttp2/transport/chttp2_transport.c \
     src/core/ext/transport/chttp2/transport/frame_data.c \
     src/core/ext/transport/chttp2/transport/frame_goaway.c \
@@ -2491,26 +2510,10 @@
     src/core/lib/channel/channel_args.c \
     src/core/lib/channel/channel_stack.c \
     src/core/lib/channel/channel_stack_builder.c \
-    src/core/lib/channel/client_channel.c \
     src/core/lib/channel/compress_filter.c \
     src/core/lib/channel/connected_channel.c \
     src/core/lib/channel/http_client_filter.c \
     src/core/lib/channel/http_server_filter.c \
-    src/core/lib/channel/subchannel_call_holder.c \
-    src/core/lib/client_config/client_channel_factory.c \
-    src/core/lib/client_config/client_config.c \
-    src/core/lib/client_config/connector.c \
-    src/core/lib/client_config/default_initial_connect_string.c \
-    src/core/lib/client_config/initial_connect_string.c \
-    src/core/lib/client_config/lb_policy.c \
-    src/core/lib/client_config/lb_policy_factory.c \
-    src/core/lib/client_config/lb_policy_registry.c \
-    src/core/lib/client_config/resolver.c \
-    src/core/lib/client_config/resolver_factory.c \
-    src/core/lib/client_config/resolver_registry.c \
-    src/core/lib/client_config/subchannel.c \
-    src/core/lib/client_config/subchannel_index.c \
-    src/core/lib/client_config/uri_parser.c \
     src/core/lib/compression/compression_algorithm.c \
     src/core/lib/compression/message_compress.c \
     src/core/lib/debug/trace.c \
@@ -2583,7 +2586,6 @@
     src/core/lib/surface/call_details.c \
     src/core/lib/surface/call_log_batch.c \
     src/core/lib/surface/channel.c \
-    src/core/lib/surface/channel_connectivity.c \
     src/core/lib/surface/channel_init.c \
     src/core/lib/surface/channel_ping.c \
     src/core/lib/surface/channel_stack_type.c \
@@ -2816,16 +2818,35 @@
     src/core/ext/census/operation.c \
     src/core/ext/census/placeholders.c \
     src/core/ext/census/tracing.c \
+    src/core/ext/client_config/channel_connectivity.c \
+    src/core/ext/client_config/client_channel.c \
+    src/core/ext/client_config/client_channel_factory.c \
+    src/core/ext/client_config/client_config.c \
+    src/core/ext/client_config/client_config_plugin.c \
+    src/core/ext/client_config/connector.c \
+    src/core/ext/client_config/default_initial_connect_string.c \
+    src/core/ext/client_config/initial_connect_string.c \
+    src/core/ext/client_config/lb_policy.c \
+    src/core/ext/client_config/lb_policy_factory.c \
+    src/core/ext/client_config/lb_policy_registry.c \
+    src/core/ext/client_config/resolver.c \
+    src/core/ext/client_config/resolver_factory.c \
+    src/core/ext/client_config/resolver_registry.c \
+    src/core/ext/client_config/subchannel.c \
+    src/core/ext/client_config/subchannel_call_holder.c \
+    src/core/ext/client_config/subchannel_index.c \
+    src/core/ext/client_config/uri_parser.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
     src/core/ext/lb_policy/pick_first/pick_first.c \
     src/core/ext/lb_policy/round_robin/round_robin.c \
     src/core/ext/resolver/dns/native/dns_resolver.c \
     src/core/ext/resolver/sockaddr/sockaddr_resolver.c \
+    src/core/ext/transport/chttp2/alpn/alpn.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
-    src/core/ext/transport/chttp2/transport/alpn.c \
     src/core/ext/transport/chttp2/transport/bin_encoder.c \
+    src/core/ext/transport/chttp2/transport/chttp2_plugin.c \
     src/core/ext/transport/chttp2/transport/chttp2_transport.c \
     src/core/ext/transport/chttp2/transport/frame_data.c \
     src/core/ext/transport/chttp2/transport/frame_goaway.c \
@@ -2848,26 +2869,10 @@
     src/core/lib/channel/channel_args.c \
     src/core/lib/channel/channel_stack.c \
     src/core/lib/channel/channel_stack_builder.c \
-    src/core/lib/channel/client_channel.c \
     src/core/lib/channel/compress_filter.c \
     src/core/lib/channel/connected_channel.c \
     src/core/lib/channel/http_client_filter.c \
     src/core/lib/channel/http_server_filter.c \
-    src/core/lib/channel/subchannel_call_holder.c \
-    src/core/lib/client_config/client_channel_factory.c \
-    src/core/lib/client_config/client_config.c \
-    src/core/lib/client_config/connector.c \
-    src/core/lib/client_config/default_initial_connect_string.c \
-    src/core/lib/client_config/initial_connect_string.c \
-    src/core/lib/client_config/lb_policy.c \
-    src/core/lib/client_config/lb_policy_factory.c \
-    src/core/lib/client_config/lb_policy_registry.c \
-    src/core/lib/client_config/resolver.c \
-    src/core/lib/client_config/resolver_factory.c \
-    src/core/lib/client_config/resolver_registry.c \
-    src/core/lib/client_config/subchannel.c \
-    src/core/lib/client_config/subchannel_index.c \
-    src/core/lib/client_config/uri_parser.c \
     src/core/lib/compression/compression_algorithm.c \
     src/core/lib/compression/message_compress.c \
     src/core/lib/debug/trace.c \
@@ -2925,7 +2930,6 @@
     src/core/lib/surface/call_details.c \
     src/core/lib/surface/call_log_batch.c \
     src/core/lib/surface/channel.c \
-    src/core/lib/surface/channel_connectivity.c \
     src/core/lib/surface/channel_init.c \
     src/core/lib/surface/channel_ping.c \
     src/core/lib/surface/channel_stack_type.c \
@@ -3401,18 +3405,18 @@
 
 
 ifeq ($(SYSTEM),MINGW32)
-$(LIBDIR)/$(CONFIG)/grpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT): $(LIBGRPC++_CODEGEN_LIB_OBJS)  $(ZLIB_DEP) $(PROTOBUF_DEP)
+$(LIBDIR)/$(CONFIG)/grpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT): $(LIBGRPC++_CODEGEN_LIB_OBJS)  $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/gpr.$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/grpc.$(SHARED_EXT)
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
-	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared grpc++_codegen_lib.def -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc++_codegen_lib$(SHARED_VERSION).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc++_codegen_lib$(SHARED_VERSION)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC++_CODEGEN_LIB_OBJS) $(LDLIBS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF)
+	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared grpc++_codegen_lib.def -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc++_codegen_lib$(SHARED_VERSION).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc++_codegen_lib$(SHARED_VERSION)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC++_CODEGEN_LIB_OBJS) $(LDLIBS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) -lgpr-imp -lgrpc-imp
 else
-$(LIBDIR)/$(CONFIG)/libgrpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT): $(LIBGRPC++_CODEGEN_LIB_OBJS)  $(ZLIB_DEP) $(PROTOBUF_DEP)
+$(LIBDIR)/$(CONFIG)/libgrpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT): $(LIBGRPC++_CODEGEN_LIB_OBJS)  $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/libgpr.$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/libgrpc.$(SHARED_EXT)
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 ifeq ($(SYSTEM),Darwin)
-	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC++_CODEGEN_LIB_OBJS) $(LDLIBS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF)
+	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC++_CODEGEN_LIB_OBJS) $(LDLIBS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) -lgpr -lgrpc
 else
-	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc++_codegen_lib.so.0 -o $(LIBDIR)/$(CONFIG)/libgrpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC++_CODEGEN_LIB_OBJS) $(LDLIBS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF)
+	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc++_codegen_lib.so.0 -o $(LIBDIR)/$(CONFIG)/libgrpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC++_CODEGEN_LIB_OBJS) $(LDLIBS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) -lgpr -lgrpc
 	$(Q) ln -sf $(SHARED_PREFIX)grpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/libgrpc++_codegen_lib$(SHARED_VERSION).so.0
 	$(Q) ln -sf $(SHARED_PREFIX)grpc++_codegen_lib$(SHARED_VERSION).$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/libgrpc++_codegen_lib$(SHARED_VERSION).so
 endif
@@ -3669,18 +3673,18 @@
 
 
 ifeq ($(SYSTEM),MINGW32)
-$(LIBDIR)/$(CONFIG)/grpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT): $(LIBGRPC++_UNSECURE_OBJS)  $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/gpr.$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/grpc_unsecure.$(SHARED_EXT)
+$(LIBDIR)/$(CONFIG)/grpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT): $(LIBGRPC++_UNSECURE_OBJS)  $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/gpr.$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/grpc.$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/grpc_unsecure.$(SHARED_EXT)
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
-	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared grpc++_unsecure.def -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc++_unsecure$(SHARED_VERSION).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC++_UNSECURE_OBJS) $(LDLIBS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) -lgpr-imp -lgrpc_unsecure-imp
+	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared grpc++_unsecure.def -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc++_unsecure$(SHARED_VERSION).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC++_UNSECURE_OBJS) $(LDLIBS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) -lgpr-imp -lgrpc-imp -lgrpc_unsecure-imp
 else
-$(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT): $(LIBGRPC++_UNSECURE_OBJS)  $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/libgpr.$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.$(SHARED_EXT)
+$(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT): $(LIBGRPC++_UNSECURE_OBJS)  $(ZLIB_DEP) $(PROTOBUF_DEP) $(LIBDIR)/$(CONFIG)/libgpr.$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/libgrpc.$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/libgrpc_unsecure.$(SHARED_EXT)
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 ifeq ($(SYSTEM),Darwin)
-	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC++_UNSECURE_OBJS) $(LDLIBS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) -lgpr -lgrpc_unsecure
+	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC++_UNSECURE_OBJS) $(LDLIBS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) -lgpr -lgrpc -lgrpc_unsecure
 else
-	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc++_unsecure.so.0 -o $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC++_UNSECURE_OBJS) $(LDLIBS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) -lgpr -lgrpc_unsecure
+	$(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc++_unsecure.so.0 -o $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC++_UNSECURE_OBJS) $(LDLIBS) $(ZLIB_MERGE_LIBS) $(LDLIBSXX) $(LDLIBS_PROTOBUF) -lgpr -lgrpc -lgrpc_unsecure
 	$(Q) ln -sf $(SHARED_PREFIX)grpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION).so.0
 	$(Q) ln -sf $(SHARED_PREFIX)grpc++_unsecure$(SHARED_VERSION).$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure$(SHARED_VERSION).so
 endif
@@ -4062,18 +4066,18 @@
 
 
 ifeq ($(SYSTEM),MINGW32)
-$(LIBDIR)/$(CONFIG)/grpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT): $(LIBGRPC_CSHARP_EXT_OBJS)  $(ZLIB_DEP) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/grpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT): $(LIBGRPC_CSHARP_EXT_OBJS)  $(ZLIB_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(OPENSSL_DEP)
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
-	$(Q) $(LD) $(LDFLAGS) $(if $(subst Linux,,$(SYSTEM)),,-Wl$(comma)-wrap$(comma)memcpy) -L$(LIBDIR)/$(CONFIG) -shared grpc_csharp_ext.def -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc_csharp_ext$(SHARED_VERSION).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC_CSHARP_EXT_OBJS) $(LDLIBS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS)
+	$(Q) $(LD) $(LDFLAGS) $(if $(subst Linux,,$(SYSTEM)),,-Wl$(comma)-wrap$(comma)memcpy) -L$(LIBDIR)/$(CONFIG) -shared grpc_csharp_ext.def -Wl,--output-def=$(LIBDIR)/$(CONFIG)/grpc_csharp_ext$(SHARED_VERSION).def -Wl,--out-implib=$(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION)-dll.a -o $(LIBDIR)/$(CONFIG)/grpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC_CSHARP_EXT_OBJS) $(LDLIBS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(ZLIB_MERGE_LIBS)
 else
-$(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT): $(LIBGRPC_CSHARP_EXT_OBJS)  $(ZLIB_DEP) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(OPENSSL_DEP)
+$(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT): $(LIBGRPC_CSHARP_EXT_OBJS)  $(ZLIB_DEP) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(OPENSSL_DEP)
 	$(E) "[LD]      Linking $@"
 	$(Q) mkdir -p `dirname $@`
 ifeq ($(SYSTEM),Darwin)
-	$(Q) $(LD) $(LDFLAGS) $(if $(subst Linux,,$(SYSTEM)),,-Wl$(comma)-wrap$(comma)memcpy) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC_CSHARP_EXT_OBJS) $(LDLIBS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS)
+	$(Q) $(LD) $(LDFLAGS) $(if $(subst Linux,,$(SYSTEM)),,-Wl$(comma)-wrap$(comma)memcpy) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC_CSHARP_EXT_OBJS) $(LDLIBS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(ZLIB_MERGE_LIBS)
 else
-	$(Q) $(LD) $(LDFLAGS) $(if $(subst Linux,,$(SYSTEM)),,-Wl$(comma)-wrap$(comma)memcpy) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc_csharp_ext.so.0 -o $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC_CSHARP_EXT_OBJS) $(LDLIBS) $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr.a $(ZLIB_MERGE_LIBS)
+	$(Q) $(LD) $(LDFLAGS) $(if $(subst Linux,,$(SYSTEM)),,-Wl$(comma)-wrap$(comma)memcpy) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc_csharp_ext.so.0 -o $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT) $(LIBGRPC_CSHARP_EXT_OBJS) $(LDLIBS) $(LIBDIR)/$(CONFIG)/libgpr.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(ZLIB_MERGE_LIBS)
 	$(Q) ln -sf $(SHARED_PREFIX)grpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION).so.0
 	$(Q) ln -sf $(SHARED_PREFIX)grpc_csharp_ext$(SHARED_VERSION).$(SHARED_EXT) $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext$(SHARED_VERSION).so
 endif
diff --git a/binding.gyp b/binding.gyp
index 8b53b43..9349665 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -567,18 +567,37 @@
         'src/core/ext/census/operation.c',
         'src/core/ext/census/placeholders.c',
         'src/core/ext/census/tracing.c',
+        'src/core/ext/client_config/channel_connectivity.c',
+        'src/core/ext/client_config/client_channel.c',
+        'src/core/ext/client_config/client_channel_factory.c',
+        'src/core/ext/client_config/client_config.c',
+        'src/core/ext/client_config/client_config_plugin.c',
+        'src/core/ext/client_config/connector.c',
+        'src/core/ext/client_config/default_initial_connect_string.c',
+        'src/core/ext/client_config/initial_connect_string.c',
+        'src/core/ext/client_config/lb_policy.c',
+        'src/core/ext/client_config/lb_policy_factory.c',
+        'src/core/ext/client_config/lb_policy_registry.c',
+        'src/core/ext/client_config/resolver.c',
+        'src/core/ext/client_config/resolver_factory.c',
+        'src/core/ext/client_config/resolver_registry.c',
+        'src/core/ext/client_config/subchannel.c',
+        'src/core/ext/client_config/subchannel_call_holder.c',
+        'src/core/ext/client_config/subchannel_index.c',
+        'src/core/ext/client_config/uri_parser.c',
         'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
         'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
         'src/core/ext/lb_policy/pick_first/pick_first.c',
         'src/core/ext/lb_policy/round_robin/round_robin.c',
         'src/core/ext/resolver/dns/native/dns_resolver.c',
         'src/core/ext/resolver/sockaddr/sockaddr_resolver.c',
+        'src/core/ext/transport/chttp2/alpn/alpn.c',
         'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
         'src/core/ext/transport/chttp2/client/secure/secure_channel_create.c',
         'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
         'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c',
-        'src/core/ext/transport/chttp2/transport/alpn.c',
         'src/core/ext/transport/chttp2/transport/bin_encoder.c',
+        'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
         'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
         'src/core/ext/transport/chttp2/transport/frame_data.c',
         'src/core/ext/transport/chttp2/transport/frame_goaway.c',
@@ -601,26 +620,10 @@
         'src/core/lib/channel/channel_args.c',
         'src/core/lib/channel/channel_stack.c',
         'src/core/lib/channel/channel_stack_builder.c',
-        'src/core/lib/channel/client_channel.c',
         'src/core/lib/channel/compress_filter.c',
         'src/core/lib/channel/connected_channel.c',
         'src/core/lib/channel/http_client_filter.c',
         'src/core/lib/channel/http_server_filter.c',
-        'src/core/lib/channel/subchannel_call_holder.c',
-        'src/core/lib/client_config/client_channel_factory.c',
-        'src/core/lib/client_config/client_config.c',
-        'src/core/lib/client_config/connector.c',
-        'src/core/lib/client_config/default_initial_connect_string.c',
-        'src/core/lib/client_config/initial_connect_string.c',
-        'src/core/lib/client_config/lb_policy.c',
-        'src/core/lib/client_config/lb_policy_factory.c',
-        'src/core/lib/client_config/lb_policy_registry.c',
-        'src/core/lib/client_config/resolver.c',
-        'src/core/lib/client_config/resolver_factory.c',
-        'src/core/lib/client_config/resolver_registry.c',
-        'src/core/lib/client_config/subchannel.c',
-        'src/core/lib/client_config/subchannel_index.c',
-        'src/core/lib/client_config/uri_parser.c',
         'src/core/lib/compression/compression_algorithm.c',
         'src/core/lib/compression/message_compress.c',
         'src/core/lib/debug/trace.c',
@@ -693,7 +696,6 @@
         'src/core/lib/surface/call_details.c',
         'src/core/lib/surface/call_log_batch.c',
         'src/core/lib/surface/channel.c',
-        'src/core/lib/surface/channel_connectivity.c',
         'src/core/lib/surface/channel_init.c',
         'src/core/lib/surface/channel_ping.c',
         'src/core/lib/surface/channel_stack_type.c',
diff --git a/build.yaml b/build.yaml
index e166bb9..095564b 100644
--- a/build.yaml
+++ b/build.yaml
@@ -30,7 +30,9 @@
   - src/core/ext/census/placeholders.c
   - src/core/ext/census/tracing.c
   plugin: census_grpc_plugin
-- name: gpr
+  uses:
+  - grpc_base
+- name: gpr_base
   public_headers:
   - include/grpc/support/alloc.h
   - include/grpc/support/atm.h
@@ -118,6 +120,8 @@
   - src/core/lib/support/tmpfile_posix.c
   - src/core/lib/support/tmpfile_win32.c
   - src/core/lib/support/wrap_memcpy.c
+  uses:
+  - gpr_codegen
 - name: gpr_codegen
   public_headers:
   - include/grpc/impl/codegen/alloc.h
@@ -211,6 +215,10 @@
   - src/cpp/util/status.cc
   - src/cpp/util/string_ref.cc
   - src/cpp/util/time.cc
+  deps:
+  - grpc
+  uses:
+  - grpc++_codegen
 - name: grpc++_codegen
   public_headers:
   - include/grpc++/impl/codegen/async_stream.h
@@ -246,6 +254,8 @@
   - include/grpc++/impl/codegen/time.h
   src:
   - src/cpp/codegen/codegen_init.cc
+  deps:
+  - grpc
 - name: grpc_base
   public_headers:
   - include/grpc/byte_buffer.h
@@ -257,26 +267,11 @@
   - src/core/lib/channel/channel_args.h
   - src/core/lib/channel/channel_stack.h
   - src/core/lib/channel/channel_stack_builder.h
-  - src/core/lib/channel/client_channel.h
   - src/core/lib/channel/compress_filter.h
   - src/core/lib/channel/connected_channel.h
   - src/core/lib/channel/context.h
   - src/core/lib/channel/http_client_filter.h
   - src/core/lib/channel/http_server_filter.h
-  - src/core/lib/channel/subchannel_call_holder.h
-  - src/core/lib/client_config/client_channel_factory.h
-  - src/core/lib/client_config/client_config.h
-  - src/core/lib/client_config/connector.h
-  - src/core/lib/client_config/initial_connect_string.h
-  - src/core/lib/client_config/lb_policy.h
-  - src/core/lib/client_config/lb_policy_factory.h
-  - src/core/lib/client_config/lb_policy_registry.h
-  - src/core/lib/client_config/resolver.h
-  - src/core/lib/client_config/resolver_factory.h
-  - src/core/lib/client_config/resolver_registry.h
-  - src/core/lib/client_config/subchannel.h
-  - src/core/lib/client_config/subchannel_index.h
-  - src/core/lib/client_config/uri_parser.h
   - src/core/lib/compression/algorithm_metadata.h
   - src/core/lib/compression/message_compress.h
   - src/core/lib/debug/trace.h
@@ -346,26 +341,10 @@
   - src/core/lib/channel/channel_args.c
   - src/core/lib/channel/channel_stack.c
   - src/core/lib/channel/channel_stack_builder.c
-  - src/core/lib/channel/client_channel.c
   - src/core/lib/channel/compress_filter.c
   - src/core/lib/channel/connected_channel.c
   - src/core/lib/channel/http_client_filter.c
   - src/core/lib/channel/http_server_filter.c
-  - src/core/lib/channel/subchannel_call_holder.c
-  - src/core/lib/client_config/client_channel_factory.c
-  - src/core/lib/client_config/client_config.c
-  - src/core/lib/client_config/connector.c
-  - src/core/lib/client_config/default_initial_connect_string.c
-  - src/core/lib/client_config/initial_connect_string.c
-  - src/core/lib/client_config/lb_policy.c
-  - src/core/lib/client_config/lb_policy_factory.c
-  - src/core/lib/client_config/lb_policy_registry.c
-  - src/core/lib/client_config/resolver.c
-  - src/core/lib/client_config/resolver_factory.c
-  - src/core/lib/client_config/resolver_registry.c
-  - src/core/lib/client_config/subchannel.c
-  - src/core/lib/client_config/subchannel_index.c
-  - src/core/lib/client_config/uri_parser.c
   - src/core/lib/compression/compression_algorithm.c
   - src/core/lib/compression/message_compress.c
   - src/core/lib/debug/trace.c
@@ -423,7 +402,6 @@
   - src/core/lib/surface/call_details.c
   - src/core/lib/surface/call_log_batch.c
   - src/core/lib/surface/channel.c
-  - src/core/lib/surface/channel_connectivity.c
   - src/core/lib/surface/channel_init.c
   - src/core/lib/surface/channel_ping.c
   - src/core/lib/surface/channel_stack_type.c
@@ -442,6 +420,49 @@
   - src/core/lib/transport/static_metadata.c
   - src/core/lib/transport/transport.c
   - src/core/lib/transport/transport_op_string.c
+  deps:
+  - gpr
+  uses:
+  - grpc_codegen
+- name: grpc_client_config
+  headers:
+  - src/core/ext/client_config/client_channel.h
+  - src/core/ext/client_config/client_channel_factory.h
+  - src/core/ext/client_config/client_config.h
+  - src/core/ext/client_config/connector.h
+  - src/core/ext/client_config/initial_connect_string.h
+  - src/core/ext/client_config/lb_policy.h
+  - src/core/ext/client_config/lb_policy_factory.h
+  - src/core/ext/client_config/lb_policy_registry.h
+  - src/core/ext/client_config/resolver.h
+  - src/core/ext/client_config/resolver_factory.h
+  - src/core/ext/client_config/resolver_registry.h
+  - src/core/ext/client_config/subchannel.h
+  - src/core/ext/client_config/subchannel_call_holder.h
+  - src/core/ext/client_config/subchannel_index.h
+  - src/core/ext/client_config/uri_parser.h
+  src:
+  - src/core/ext/client_config/channel_connectivity.c
+  - src/core/ext/client_config/client_channel.c
+  - src/core/ext/client_config/client_channel_factory.c
+  - src/core/ext/client_config/client_config.c
+  - src/core/ext/client_config/client_config_plugin.c
+  - src/core/ext/client_config/connector.c
+  - src/core/ext/client_config/default_initial_connect_string.c
+  - src/core/ext/client_config/initial_connect_string.c
+  - src/core/ext/client_config/lb_policy.c
+  - src/core/ext/client_config/lb_policy_factory.c
+  - src/core/ext/client_config/lb_policy_registry.c
+  - src/core/ext/client_config/resolver.c
+  - src/core/ext/client_config/resolver_factory.c
+  - src/core/ext/client_config/resolver_registry.c
+  - src/core/ext/client_config/subchannel.c
+  - src/core/ext/client_config/subchannel_call_holder.c
+  - src/core/ext/client_config/subchannel_index.c
+  - src/core/ext/client_config/uri_parser.c
+  plugin: grpc_client_config
+  uses:
+  - grpc_base
 - name: grpc_codegen
   public_headers:
   - include/grpc/impl/codegen/byte_buffer.h
@@ -450,6 +471,8 @@
   - include/grpc/impl/codegen/grpc_types.h
   - include/grpc/impl/codegen/propagation_bits.h
   - include/grpc/impl/codegen/status.h
+  deps:
+  - gpr
 - name: grpc_lb_policy_grpclb
   headers:
   - src/core/ext/lb_policy/grpclb/load_balancer_api.h
@@ -459,31 +482,39 @@
   - src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c
   uses:
   - grpc_base
+  - grpc_client_config
+  - nanopb
 - name: grpc_lb_policy_pick_first
   src:
   - src/core/ext/lb_policy/pick_first/pick_first.c
   plugin: grpc_lb_policy_pick_first
   uses:
   - grpc_base
+  - grpc_client_config
 - name: grpc_lb_policy_round_robin
   src:
   - src/core/ext/lb_policy/round_robin/round_robin.c
   plugin: grpc_lb_policy_round_robin
   uses:
   - grpc_base
+  - grpc_client_config
 - name: grpc_resolver_dns_native
   src:
   - src/core/ext/resolver/dns/native/dns_resolver.c
   plugin: grpc_resolver_dns_native
   uses:
   - grpc_base
+  - grpc_client_config
 - name: grpc_resolver_sockaddr
   src:
   - src/core/ext/resolver/sockaddr/sockaddr_resolver.c
   plugin: grpc_resolver_sockaddr
   uses:
   - grpc_base
+  - grpc_client_config
 - name: grpc_secure
+  public_headers:
+  - include/grpc/grpc_security.h
   headers:
   - src/core/lib/security/auth_filters.h
   - src/core/lib/security/b64.h
@@ -519,6 +550,9 @@
   - src/core/lib/tsi/fake_transport_security.c
   - src/core/lib/tsi/ssl_transport_security.c
   - src/core/lib/tsi/transport_security.c
+  uses:
+  - grpc_base
+  - grpc_transport_chttp2_alpn
 - name: grpc_test_util_base
   headers:
   - test/core/end2end/cq_verifier.h
@@ -539,9 +573,11 @@
   - test/core/util/port_server_client.c
   - test/core/util/port_windows.c
   - test/core/util/slice_splitter.c
+  deps:
+  - grpc
+  - gpr_test_util
 - name: grpc_transport_chttp2
   headers:
-  - src/core/ext/transport/chttp2/transport/alpn.h
   - src/core/ext/transport/chttp2/transport/bin_encoder.h
   - src/core/ext/transport/chttp2/transport/chttp2_transport.h
   - src/core/ext/transport/chttp2/transport/frame.h
@@ -563,8 +599,8 @@
   - src/core/ext/transport/chttp2/transport/timeout_encoding.h
   - src/core/ext/transport/chttp2/transport/varint.h
   src:
-  - src/core/ext/transport/chttp2/transport/alpn.c
   - src/core/ext/transport/chttp2/transport/bin_encoder.c
+  - src/core/ext/transport/chttp2/transport/chttp2_plugin.c
   - src/core/ext/transport/chttp2/transport/chttp2_transport.c
   - src/core/ext/transport/chttp2/transport/frame_data.c
   - src/core/ext/transport/chttp2/transport/frame_goaway.c
@@ -584,20 +620,32 @@
   - src/core/ext/transport/chttp2/transport/timeout_encoding.c
   - src/core/ext/transport/chttp2/transport/varint.c
   - src/core/ext/transport/chttp2/transport/writing.c
+  plugin: grpc_chttp2_plugin
   uses:
   - grpc_base
+  - grpc_transport_chttp2_alpn
+- name: grpc_transport_chttp2_alpn
+  headers:
+  - src/core/ext/transport/chttp2/alpn/alpn.h
+  src:
+  - src/core/ext/transport/chttp2/alpn/alpn.c
+  deps:
+  - gpr
 - name: grpc_transport_chttp2_client_insecure
   src:
   - src/core/ext/transport/chttp2/client/insecure/channel_create.c
   uses:
   - grpc_transport_chttp2
   - grpc_base
+  - grpc_client_config
 - name: grpc_transport_chttp2_client_secure
   src:
   - src/core/ext/transport/chttp2/client/secure/secure_channel_create.c
   uses:
   - grpc_transport_chttp2
   - grpc_base
+  - grpc_client_config
+  - grpc_secure
 - name: grpc_transport_chttp2_server_insecure
   src:
   - src/core/ext/transport/chttp2/server/insecure/server_chttp2.c
@@ -610,6 +658,7 @@
   uses:
   - grpc_transport_chttp2
   - grpc_base
+  - grpc_secure
 - name: nanopb
   headers:
   - third_party/nanopb/pb.h
@@ -625,8 +674,7 @@
   build: all
   language: c
   filegroups:
-  - gpr
-  - gpr_codegen
+  - gpr_base
   secure: false
   vs_project_guid: '{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}'
 - name: gpr_test_util
@@ -643,8 +691,6 @@
 - name: grpc
   build: all
   language: c
-  public_headers:
-  - include/grpc/grpc_security.h
   deps:
   - gpr
   baselib: true
diff --git a/config.m4 b/config.m4
index 28a7433..6492999 100644
--- a/config.m4
+++ b/config.m4
@@ -89,18 +89,37 @@
     src/core/ext/census/operation.c \
     src/core/ext/census/placeholders.c \
     src/core/ext/census/tracing.c \
+    src/core/ext/client_config/channel_connectivity.c \
+    src/core/ext/client_config/client_channel.c \
+    src/core/ext/client_config/client_channel_factory.c \
+    src/core/ext/client_config/client_config.c \
+    src/core/ext/client_config/client_config_plugin.c \
+    src/core/ext/client_config/connector.c \
+    src/core/ext/client_config/default_initial_connect_string.c \
+    src/core/ext/client_config/initial_connect_string.c \
+    src/core/ext/client_config/lb_policy.c \
+    src/core/ext/client_config/lb_policy_factory.c \
+    src/core/ext/client_config/lb_policy_registry.c \
+    src/core/ext/client_config/resolver.c \
+    src/core/ext/client_config/resolver_factory.c \
+    src/core/ext/client_config/resolver_registry.c \
+    src/core/ext/client_config/subchannel.c \
+    src/core/ext/client_config/subchannel_call_holder.c \
+    src/core/ext/client_config/subchannel_index.c \
+    src/core/ext/client_config/uri_parser.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
     src/core/ext/lb_policy/pick_first/pick_first.c \
     src/core/ext/lb_policy/round_robin/round_robin.c \
     src/core/ext/resolver/dns/native/dns_resolver.c \
     src/core/ext/resolver/sockaddr/sockaddr_resolver.c \
+    src/core/ext/transport/chttp2/alpn/alpn.c \
     src/core/ext/transport/chttp2/client/insecure/channel_create.c \
     src/core/ext/transport/chttp2/client/secure/secure_channel_create.c \
     src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
     src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c \
-    src/core/ext/transport/chttp2/transport/alpn.c \
     src/core/ext/transport/chttp2/transport/bin_encoder.c \
+    src/core/ext/transport/chttp2/transport/chttp2_plugin.c \
     src/core/ext/transport/chttp2/transport/chttp2_transport.c \
     src/core/ext/transport/chttp2/transport/frame_data.c \
     src/core/ext/transport/chttp2/transport/frame_goaway.c \
@@ -123,26 +142,10 @@
     src/core/lib/channel/channel_args.c \
     src/core/lib/channel/channel_stack.c \
     src/core/lib/channel/channel_stack_builder.c \
-    src/core/lib/channel/client_channel.c \
     src/core/lib/channel/compress_filter.c \
     src/core/lib/channel/connected_channel.c \
     src/core/lib/channel/http_client_filter.c \
     src/core/lib/channel/http_server_filter.c \
-    src/core/lib/channel/subchannel_call_holder.c \
-    src/core/lib/client_config/client_channel_factory.c \
-    src/core/lib/client_config/client_config.c \
-    src/core/lib/client_config/connector.c \
-    src/core/lib/client_config/default_initial_connect_string.c \
-    src/core/lib/client_config/initial_connect_string.c \
-    src/core/lib/client_config/lb_policy.c \
-    src/core/lib/client_config/lb_policy_factory.c \
-    src/core/lib/client_config/lb_policy_registry.c \
-    src/core/lib/client_config/resolver.c \
-    src/core/lib/client_config/resolver_factory.c \
-    src/core/lib/client_config/resolver_registry.c \
-    src/core/lib/client_config/subchannel.c \
-    src/core/lib/client_config/subchannel_index.c \
-    src/core/lib/client_config/uri_parser.c \
     src/core/lib/compression/compression_algorithm.c \
     src/core/lib/compression/message_compress.c \
     src/core/lib/debug/trace.c \
@@ -215,7 +218,6 @@
     src/core/lib/surface/call_details.c \
     src/core/lib/surface/call_log_batch.c \
     src/core/lib/surface/channel.c \
-    src/core/lib/surface/channel_connectivity.c \
     src/core/lib/surface/channel_init.c \
     src/core/lib/surface/channel_ping.c \
     src/core/lib/surface/channel_stack_type.c \
@@ -545,19 +547,20 @@
 
   PHP_ADD_BUILD_DIR($ext_builddir/src/boringssl)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/census)
+  PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/client_config)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/grpclb)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/pick_first)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/round_robin)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/resolver/dns/native)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/resolver/sockaddr)
+  PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/alpn)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/client/insecure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/client/secure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/server/insecure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/server/secure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/transport)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/channel)
-  PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/client_config)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/compression)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/debug)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/http)
diff --git a/gRPC.podspec b/gRPC.podspec
index 06eee01..fb21b2d 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -167,9 +167,24 @@
                       'src/core/ext/census/grpc_filter.h',
                       'src/core/ext/census/mlog.h',
                       'src/core/ext/census/rpc_metric_id.h',
+                      'src/core/ext/client_config/client_channel.h',
+                      'src/core/ext/client_config/client_channel_factory.h',
+                      'src/core/ext/client_config/client_config.h',
+                      'src/core/ext/client_config/connector.h',
+                      'src/core/ext/client_config/initial_connect_string.h',
+                      'src/core/ext/client_config/lb_policy.h',
+                      'src/core/ext/client_config/lb_policy_factory.h',
+                      'src/core/ext/client_config/lb_policy_registry.h',
+                      'src/core/ext/client_config/resolver.h',
+                      'src/core/ext/client_config/resolver_factory.h',
+                      'src/core/ext/client_config/resolver_registry.h',
+                      'src/core/ext/client_config/subchannel.h',
+                      'src/core/ext/client_config/subchannel_call_holder.h',
+                      'src/core/ext/client_config/subchannel_index.h',
+                      'src/core/ext/client_config/uri_parser.h',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
-                      'src/core/ext/transport/chttp2/transport/alpn.h',
+                      'src/core/ext/transport/chttp2/alpn/alpn.h',
                       'src/core/ext/transport/chttp2/transport/bin_encoder.h',
                       'src/core/ext/transport/chttp2/transport/chttp2_transport.h',
                       'src/core/ext/transport/chttp2/transport/frame.h',
@@ -193,26 +208,11 @@
                       'src/core/lib/channel/channel_args.h',
                       'src/core/lib/channel/channel_stack.h',
                       'src/core/lib/channel/channel_stack_builder.h',
-                      'src/core/lib/channel/client_channel.h',
                       'src/core/lib/channel/compress_filter.h',
                       'src/core/lib/channel/connected_channel.h',
                       'src/core/lib/channel/context.h',
                       'src/core/lib/channel/http_client_filter.h',
                       'src/core/lib/channel/http_server_filter.h',
-                      'src/core/lib/channel/subchannel_call_holder.h',
-                      'src/core/lib/client_config/client_channel_factory.h',
-                      'src/core/lib/client_config/client_config.h',
-                      'src/core/lib/client_config/connector.h',
-                      'src/core/lib/client_config/initial_connect_string.h',
-                      'src/core/lib/client_config/lb_policy.h',
-                      'src/core/lib/client_config/lb_policy_factory.h',
-                      'src/core/lib/client_config/lb_policy_registry.h',
-                      'src/core/lib/client_config/resolver.h',
-                      'src/core/lib/client_config/resolver_factory.h',
-                      'src/core/lib/client_config/resolver_registry.h',
-                      'src/core/lib/client_config/subchannel.h',
-                      'src/core/lib/client_config/subchannel_index.h',
-                      'src/core/lib/client_config/uri_parser.h',
                       'src/core/lib/compression/algorithm_metadata.h',
                       'src/core/lib/compression/message_compress.h',
                       'src/core/lib/debug/trace.h',
@@ -318,18 +318,37 @@
                       'src/core/ext/census/operation.c',
                       'src/core/ext/census/placeholders.c',
                       'src/core/ext/census/tracing.c',
+                      'src/core/ext/client_config/channel_connectivity.c',
+                      'src/core/ext/client_config/client_channel.c',
+                      'src/core/ext/client_config/client_channel_factory.c',
+                      'src/core/ext/client_config/client_config.c',
+                      'src/core/ext/client_config/client_config_plugin.c',
+                      'src/core/ext/client_config/connector.c',
+                      'src/core/ext/client_config/default_initial_connect_string.c',
+                      'src/core/ext/client_config/initial_connect_string.c',
+                      'src/core/ext/client_config/lb_policy.c',
+                      'src/core/ext/client_config/lb_policy_factory.c',
+                      'src/core/ext/client_config/lb_policy_registry.c',
+                      'src/core/ext/client_config/resolver.c',
+                      'src/core/ext/client_config/resolver_factory.c',
+                      'src/core/ext/client_config/resolver_registry.c',
+                      'src/core/ext/client_config/subchannel.c',
+                      'src/core/ext/client_config/subchannel_call_holder.c',
+                      'src/core/ext/client_config/subchannel_index.c',
+                      'src/core/ext/client_config/uri_parser.c',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
                       'src/core/ext/lb_policy/pick_first/pick_first.c',
                       'src/core/ext/lb_policy/round_robin/round_robin.c',
                       'src/core/ext/resolver/dns/native/dns_resolver.c',
                       'src/core/ext/resolver/sockaddr/sockaddr_resolver.c',
+                      'src/core/ext/transport/chttp2/alpn/alpn.c',
                       'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
                       'src/core/ext/transport/chttp2/client/secure/secure_channel_create.c',
                       'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
                       'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c',
-                      'src/core/ext/transport/chttp2/transport/alpn.c',
                       'src/core/ext/transport/chttp2/transport/bin_encoder.c',
+                      'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
                       'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
                       'src/core/ext/transport/chttp2/transport/frame_data.c',
                       'src/core/ext/transport/chttp2/transport/frame_goaway.c',
@@ -352,26 +371,10 @@
                       'src/core/lib/channel/channel_args.c',
                       'src/core/lib/channel/channel_stack.c',
                       'src/core/lib/channel/channel_stack_builder.c',
-                      'src/core/lib/channel/client_channel.c',
                       'src/core/lib/channel/compress_filter.c',
                       'src/core/lib/channel/connected_channel.c',
                       'src/core/lib/channel/http_client_filter.c',
                       'src/core/lib/channel/http_server_filter.c',
-                      'src/core/lib/channel/subchannel_call_holder.c',
-                      'src/core/lib/client_config/client_channel_factory.c',
-                      'src/core/lib/client_config/client_config.c',
-                      'src/core/lib/client_config/connector.c',
-                      'src/core/lib/client_config/default_initial_connect_string.c',
-                      'src/core/lib/client_config/initial_connect_string.c',
-                      'src/core/lib/client_config/lb_policy.c',
-                      'src/core/lib/client_config/lb_policy_factory.c',
-                      'src/core/lib/client_config/lb_policy_registry.c',
-                      'src/core/lib/client_config/resolver.c',
-                      'src/core/lib/client_config/resolver_factory.c',
-                      'src/core/lib/client_config/resolver_registry.c',
-                      'src/core/lib/client_config/subchannel.c',
-                      'src/core/lib/client_config/subchannel_index.c',
-                      'src/core/lib/client_config/uri_parser.c',
                       'src/core/lib/compression/compression_algorithm.c',
                       'src/core/lib/compression/message_compress.c',
                       'src/core/lib/debug/trace.c',
@@ -444,7 +447,6 @@
                       'src/core/lib/surface/call_details.c',
                       'src/core/lib/surface/call_log_batch.c',
                       'src/core/lib/surface/channel.c',
-                      'src/core/lib/surface/channel_connectivity.c',
                       'src/core/lib/surface/channel_init.c',
                       'src/core/lib/surface/channel_ping.c',
                       'src/core/lib/surface/channel_stack_type.c',
@@ -490,9 +492,24 @@
                               'src/core/ext/census/grpc_filter.h',
                               'src/core/ext/census/mlog.h',
                               'src/core/ext/census/rpc_metric_id.h',
+                              'src/core/ext/client_config/client_channel.h',
+                              'src/core/ext/client_config/client_channel_factory.h',
+                              'src/core/ext/client_config/client_config.h',
+                              'src/core/ext/client_config/connector.h',
+                              'src/core/ext/client_config/initial_connect_string.h',
+                              'src/core/ext/client_config/lb_policy.h',
+                              'src/core/ext/client_config/lb_policy_factory.h',
+                              'src/core/ext/client_config/lb_policy_registry.h',
+                              'src/core/ext/client_config/resolver.h',
+                              'src/core/ext/client_config/resolver_factory.h',
+                              'src/core/ext/client_config/resolver_registry.h',
+                              'src/core/ext/client_config/subchannel.h',
+                              'src/core/ext/client_config/subchannel_call_holder.h',
+                              'src/core/ext/client_config/subchannel_index.h',
+                              'src/core/ext/client_config/uri_parser.h',
                               'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                               'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
-                              'src/core/ext/transport/chttp2/transport/alpn.h',
+                              'src/core/ext/transport/chttp2/alpn/alpn.h',
                               'src/core/ext/transport/chttp2/transport/bin_encoder.h',
                               'src/core/ext/transport/chttp2/transport/chttp2_transport.h',
                               'src/core/ext/transport/chttp2/transport/frame.h',
@@ -516,26 +533,11 @@
                               'src/core/lib/channel/channel_args.h',
                               'src/core/lib/channel/channel_stack.h',
                               'src/core/lib/channel/channel_stack_builder.h',
-                              'src/core/lib/channel/client_channel.h',
                               'src/core/lib/channel/compress_filter.h',
                               'src/core/lib/channel/connected_channel.h',
                               'src/core/lib/channel/context.h',
                               'src/core/lib/channel/http_client_filter.h',
                               'src/core/lib/channel/http_server_filter.h',
-                              'src/core/lib/channel/subchannel_call_holder.h',
-                              'src/core/lib/client_config/client_channel_factory.h',
-                              'src/core/lib/client_config/client_config.h',
-                              'src/core/lib/client_config/connector.h',
-                              'src/core/lib/client_config/initial_connect_string.h',
-                              'src/core/lib/client_config/lb_policy.h',
-                              'src/core/lib/client_config/lb_policy_factory.h',
-                              'src/core/lib/client_config/lb_policy_registry.h',
-                              'src/core/lib/client_config/resolver.h',
-                              'src/core/lib/client_config/resolver_factory.h',
-                              'src/core/lib/client_config/resolver_registry.h',
-                              'src/core/lib/client_config/subchannel.h',
-                              'src/core/lib/client_config/subchannel_index.h',
-                              'src/core/lib/client_config/uri_parser.h',
                               'src/core/lib/compression/algorithm_metadata.h',
                               'src/core/lib/compression/message_compress.h',
                               'src/core/lib/debug/trace.h',
diff --git a/grpc.gemspec b/grpc.gemspec
index ade8023..e1dce54 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -163,9 +163,24 @@
   s.files += %w( src/core/ext/census/grpc_filter.h )
   s.files += %w( src/core/ext/census/mlog.h )
   s.files += %w( src/core/ext/census/rpc_metric_id.h )
+  s.files += %w( src/core/ext/client_config/client_channel.h )
+  s.files += %w( src/core/ext/client_config/client_channel_factory.h )
+  s.files += %w( src/core/ext/client_config/client_config.h )
+  s.files += %w( src/core/ext/client_config/connector.h )
+  s.files += %w( src/core/ext/client_config/initial_connect_string.h )
+  s.files += %w( src/core/ext/client_config/lb_policy.h )
+  s.files += %w( src/core/ext/client_config/lb_policy_factory.h )
+  s.files += %w( src/core/ext/client_config/lb_policy_registry.h )
+  s.files += %w( src/core/ext/client_config/resolver.h )
+  s.files += %w( src/core/ext/client_config/resolver_factory.h )
+  s.files += %w( src/core/ext/client_config/resolver_registry.h )
+  s.files += %w( src/core/ext/client_config/subchannel.h )
+  s.files += %w( src/core/ext/client_config/subchannel_call_holder.h )
+  s.files += %w( src/core/ext/client_config/subchannel_index.h )
+  s.files += %w( src/core/ext/client_config/uri_parser.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h )
-  s.files += %w( src/core/ext/transport/chttp2/transport/alpn.h )
+  s.files += %w( src/core/ext/transport/chttp2/alpn/alpn.h )
   s.files += %w( src/core/ext/transport/chttp2/transport/bin_encoder.h )
   s.files += %w( src/core/ext/transport/chttp2/transport/chttp2_transport.h )
   s.files += %w( src/core/ext/transport/chttp2/transport/frame.h )
@@ -189,26 +204,11 @@
   s.files += %w( src/core/lib/channel/channel_args.h )
   s.files += %w( src/core/lib/channel/channel_stack.h )
   s.files += %w( src/core/lib/channel/channel_stack_builder.h )
-  s.files += %w( src/core/lib/channel/client_channel.h )
   s.files += %w( src/core/lib/channel/compress_filter.h )
   s.files += %w( src/core/lib/channel/connected_channel.h )
   s.files += %w( src/core/lib/channel/context.h )
   s.files += %w( src/core/lib/channel/http_client_filter.h )
   s.files += %w( src/core/lib/channel/http_server_filter.h )
-  s.files += %w( src/core/lib/channel/subchannel_call_holder.h )
-  s.files += %w( src/core/lib/client_config/client_channel_factory.h )
-  s.files += %w( src/core/lib/client_config/client_config.h )
-  s.files += %w( src/core/lib/client_config/connector.h )
-  s.files += %w( src/core/lib/client_config/initial_connect_string.h )
-  s.files += %w( src/core/lib/client_config/lb_policy.h )
-  s.files += %w( src/core/lib/client_config/lb_policy_factory.h )
-  s.files += %w( src/core/lib/client_config/lb_policy_registry.h )
-  s.files += %w( src/core/lib/client_config/resolver.h )
-  s.files += %w( src/core/lib/client_config/resolver_factory.h )
-  s.files += %w( src/core/lib/client_config/resolver_registry.h )
-  s.files += %w( src/core/lib/client_config/subchannel.h )
-  s.files += %w( src/core/lib/client_config/subchannel_index.h )
-  s.files += %w( src/core/lib/client_config/uri_parser.h )
   s.files += %w( src/core/lib/compression/algorithm_metadata.h )
   s.files += %w( src/core/lib/compression/message_compress.h )
   s.files += %w( src/core/lib/debug/trace.h )
@@ -301,18 +301,37 @@
   s.files += %w( src/core/ext/census/operation.c )
   s.files += %w( src/core/ext/census/placeholders.c )
   s.files += %w( src/core/ext/census/tracing.c )
+  s.files += %w( src/core/ext/client_config/channel_connectivity.c )
+  s.files += %w( src/core/ext/client_config/client_channel.c )
+  s.files += %w( src/core/ext/client_config/client_channel_factory.c )
+  s.files += %w( src/core/ext/client_config/client_config.c )
+  s.files += %w( src/core/ext/client_config/client_config_plugin.c )
+  s.files += %w( src/core/ext/client_config/connector.c )
+  s.files += %w( src/core/ext/client_config/default_initial_connect_string.c )
+  s.files += %w( src/core/ext/client_config/initial_connect_string.c )
+  s.files += %w( src/core/ext/client_config/lb_policy.c )
+  s.files += %w( src/core/ext/client_config/lb_policy_factory.c )
+  s.files += %w( src/core/ext/client_config/lb_policy_registry.c )
+  s.files += %w( src/core/ext/client_config/resolver.c )
+  s.files += %w( src/core/ext/client_config/resolver_factory.c )
+  s.files += %w( src/core/ext/client_config/resolver_registry.c )
+  s.files += %w( src/core/ext/client_config/subchannel.c )
+  s.files += %w( src/core/ext/client_config/subchannel_call_holder.c )
+  s.files += %w( src/core/ext/client_config/subchannel_index.c )
+  s.files += %w( src/core/ext/client_config/uri_parser.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c )
   s.files += %w( src/core/ext/lb_policy/pick_first/pick_first.c )
   s.files += %w( src/core/ext/lb_policy/round_robin/round_robin.c )
   s.files += %w( src/core/ext/resolver/dns/native/dns_resolver.c )
   s.files += %w( src/core/ext/resolver/sockaddr/sockaddr_resolver.c )
+  s.files += %w( src/core/ext/transport/chttp2/alpn/alpn.c )
   s.files += %w( src/core/ext/transport/chttp2/client/insecure/channel_create.c )
   s.files += %w( src/core/ext/transport/chttp2/client/secure/secure_channel_create.c )
   s.files += %w( src/core/ext/transport/chttp2/server/insecure/server_chttp2.c )
   s.files += %w( src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c )
-  s.files += %w( src/core/ext/transport/chttp2/transport/alpn.c )
   s.files += %w( src/core/ext/transport/chttp2/transport/bin_encoder.c )
+  s.files += %w( src/core/ext/transport/chttp2/transport/chttp2_plugin.c )
   s.files += %w( src/core/ext/transport/chttp2/transport/chttp2_transport.c )
   s.files += %w( src/core/ext/transport/chttp2/transport/frame_data.c )
   s.files += %w( src/core/ext/transport/chttp2/transport/frame_goaway.c )
@@ -335,26 +354,10 @@
   s.files += %w( src/core/lib/channel/channel_args.c )
   s.files += %w( src/core/lib/channel/channel_stack.c )
   s.files += %w( src/core/lib/channel/channel_stack_builder.c )
-  s.files += %w( src/core/lib/channel/client_channel.c )
   s.files += %w( src/core/lib/channel/compress_filter.c )
   s.files += %w( src/core/lib/channel/connected_channel.c )
   s.files += %w( src/core/lib/channel/http_client_filter.c )
   s.files += %w( src/core/lib/channel/http_server_filter.c )
-  s.files += %w( src/core/lib/channel/subchannel_call_holder.c )
-  s.files += %w( src/core/lib/client_config/client_channel_factory.c )
-  s.files += %w( src/core/lib/client_config/client_config.c )
-  s.files += %w( src/core/lib/client_config/connector.c )
-  s.files += %w( src/core/lib/client_config/default_initial_connect_string.c )
-  s.files += %w( src/core/lib/client_config/initial_connect_string.c )
-  s.files += %w( src/core/lib/client_config/lb_policy.c )
-  s.files += %w( src/core/lib/client_config/lb_policy_factory.c )
-  s.files += %w( src/core/lib/client_config/lb_policy_registry.c )
-  s.files += %w( src/core/lib/client_config/resolver.c )
-  s.files += %w( src/core/lib/client_config/resolver_factory.c )
-  s.files += %w( src/core/lib/client_config/resolver_registry.c )
-  s.files += %w( src/core/lib/client_config/subchannel.c )
-  s.files += %w( src/core/lib/client_config/subchannel_index.c )
-  s.files += %w( src/core/lib/client_config/uri_parser.c )
   s.files += %w( src/core/lib/compression/compression_algorithm.c )
   s.files += %w( src/core/lib/compression/message_compress.c )
   s.files += %w( src/core/lib/debug/trace.c )
@@ -427,7 +430,6 @@
   s.files += %w( src/core/lib/surface/call_details.c )
   s.files += %w( src/core/lib/surface/call_log_batch.c )
   s.files += %w( src/core/lib/surface/channel.c )
-  s.files += %w( src/core/lib/surface/channel_connectivity.c )
   s.files += %w( src/core/lib/surface/channel_init.c )
   s.files += %w( src/core/lib/surface/channel_ping.c )
   s.files += %w( src/core/lib/surface/channel_stack_type.c )
diff --git a/package.json b/package.json
index 339db46..f367935 100644
--- a/package.json
+++ b/package.json
@@ -106,9 +106,24 @@
     "src/core/ext/census/grpc_filter.h",
     "src/core/ext/census/mlog.h",
     "src/core/ext/census/rpc_metric_id.h",
+    "src/core/ext/client_config/client_channel.h",
+    "src/core/ext/client_config/client_channel_factory.h",
+    "src/core/ext/client_config/client_config.h",
+    "src/core/ext/client_config/connector.h",
+    "src/core/ext/client_config/initial_connect_string.h",
+    "src/core/ext/client_config/lb_policy.h",
+    "src/core/ext/client_config/lb_policy_factory.h",
+    "src/core/ext/client_config/lb_policy_registry.h",
+    "src/core/ext/client_config/resolver.h",
+    "src/core/ext/client_config/resolver_factory.h",
+    "src/core/ext/client_config/resolver_registry.h",
+    "src/core/ext/client_config/subchannel.h",
+    "src/core/ext/client_config/subchannel_call_holder.h",
+    "src/core/ext/client_config/subchannel_index.h",
+    "src/core/ext/client_config/uri_parser.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
-    "src/core/ext/transport/chttp2/transport/alpn.h",
+    "src/core/ext/transport/chttp2/alpn/alpn.h",
     "src/core/ext/transport/chttp2/transport/bin_encoder.h",
     "src/core/ext/transport/chttp2/transport/chttp2_transport.h",
     "src/core/ext/transport/chttp2/transport/frame.h",
@@ -132,26 +147,11 @@
     "src/core/lib/channel/channel_args.h",
     "src/core/lib/channel/channel_stack.h",
     "src/core/lib/channel/channel_stack_builder.h",
-    "src/core/lib/channel/client_channel.h",
     "src/core/lib/channel/compress_filter.h",
     "src/core/lib/channel/connected_channel.h",
     "src/core/lib/channel/context.h",
     "src/core/lib/channel/http_client_filter.h",
     "src/core/lib/channel/http_server_filter.h",
-    "src/core/lib/channel/subchannel_call_holder.h",
-    "src/core/lib/client_config/client_channel_factory.h",
-    "src/core/lib/client_config/client_config.h",
-    "src/core/lib/client_config/connector.h",
-    "src/core/lib/client_config/initial_connect_string.h",
-    "src/core/lib/client_config/lb_policy.h",
-    "src/core/lib/client_config/lb_policy_factory.h",
-    "src/core/lib/client_config/lb_policy_registry.h",
-    "src/core/lib/client_config/resolver.h",
-    "src/core/lib/client_config/resolver_factory.h",
-    "src/core/lib/client_config/resolver_registry.h",
-    "src/core/lib/client_config/subchannel.h",
-    "src/core/lib/client_config/subchannel_index.h",
-    "src/core/lib/client_config/uri_parser.h",
     "src/core/lib/compression/algorithm_metadata.h",
     "src/core/lib/compression/message_compress.h",
     "src/core/lib/debug/trace.h",
@@ -244,18 +244,37 @@
     "src/core/ext/census/operation.c",
     "src/core/ext/census/placeholders.c",
     "src/core/ext/census/tracing.c",
+    "src/core/ext/client_config/channel_connectivity.c",
+    "src/core/ext/client_config/client_channel.c",
+    "src/core/ext/client_config/client_channel_factory.c",
+    "src/core/ext/client_config/client_config.c",
+    "src/core/ext/client_config/client_config_plugin.c",
+    "src/core/ext/client_config/connector.c",
+    "src/core/ext/client_config/default_initial_connect_string.c",
+    "src/core/ext/client_config/initial_connect_string.c",
+    "src/core/ext/client_config/lb_policy.c",
+    "src/core/ext/client_config/lb_policy_factory.c",
+    "src/core/ext/client_config/lb_policy_registry.c",
+    "src/core/ext/client_config/resolver.c",
+    "src/core/ext/client_config/resolver_factory.c",
+    "src/core/ext/client_config/resolver_registry.c",
+    "src/core/ext/client_config/subchannel.c",
+    "src/core/ext/client_config/subchannel_call_holder.c",
+    "src/core/ext/client_config/subchannel_index.c",
+    "src/core/ext/client_config/uri_parser.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
     "src/core/ext/lb_policy/round_robin/round_robin.c",
     "src/core/ext/resolver/dns/native/dns_resolver.c",
     "src/core/ext/resolver/sockaddr/sockaddr_resolver.c",
+    "src/core/ext/transport/chttp2/alpn/alpn.c",
     "src/core/ext/transport/chttp2/client/insecure/channel_create.c",
     "src/core/ext/transport/chttp2/client/secure/secure_channel_create.c",
     "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c",
     "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c",
-    "src/core/ext/transport/chttp2/transport/alpn.c",
     "src/core/ext/transport/chttp2/transport/bin_encoder.c",
+    "src/core/ext/transport/chttp2/transport/chttp2_plugin.c",
     "src/core/ext/transport/chttp2/transport/chttp2_transport.c",
     "src/core/ext/transport/chttp2/transport/frame_data.c",
     "src/core/ext/transport/chttp2/transport/frame_goaway.c",
@@ -278,26 +297,10 @@
     "src/core/lib/channel/channel_args.c",
     "src/core/lib/channel/channel_stack.c",
     "src/core/lib/channel/channel_stack_builder.c",
-    "src/core/lib/channel/client_channel.c",
     "src/core/lib/channel/compress_filter.c",
     "src/core/lib/channel/connected_channel.c",
     "src/core/lib/channel/http_client_filter.c",
     "src/core/lib/channel/http_server_filter.c",
-    "src/core/lib/channel/subchannel_call_holder.c",
-    "src/core/lib/client_config/client_channel_factory.c",
-    "src/core/lib/client_config/client_config.c",
-    "src/core/lib/client_config/connector.c",
-    "src/core/lib/client_config/default_initial_connect_string.c",
-    "src/core/lib/client_config/initial_connect_string.c",
-    "src/core/lib/client_config/lb_policy.c",
-    "src/core/lib/client_config/lb_policy_factory.c",
-    "src/core/lib/client_config/lb_policy_registry.c",
-    "src/core/lib/client_config/resolver.c",
-    "src/core/lib/client_config/resolver_factory.c",
-    "src/core/lib/client_config/resolver_registry.c",
-    "src/core/lib/client_config/subchannel.c",
-    "src/core/lib/client_config/subchannel_index.c",
-    "src/core/lib/client_config/uri_parser.c",
     "src/core/lib/compression/compression_algorithm.c",
     "src/core/lib/compression/message_compress.c",
     "src/core/lib/debug/trace.c",
@@ -370,7 +373,6 @@
     "src/core/lib/surface/call_details.c",
     "src/core/lib/surface/call_log_batch.c",
     "src/core/lib/surface/channel.c",
-    "src/core/lib/surface/channel_connectivity.c",
     "src/core/lib/surface/channel_init.c",
     "src/core/lib/surface/channel_ping.c",
     "src/core/lib/surface/channel_stack_type.c",
diff --git a/package.xml b/package.xml
index af0e2e5..5ac9c8d 100644
--- a/package.xml
+++ b/package.xml
@@ -167,9 +167,24 @@
     <file baseinstalldir="/" name="src/core/ext/census/grpc_filter.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/census/mlog.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/census/rpc_metric_id.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/client_channel.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/client_channel_factory.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/client_config.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/connector.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/initial_connect_string.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/lb_policy.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/lb_policy_factory.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/lb_policy_registry.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/resolver.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/resolver_factory.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/resolver_registry.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/subchannel.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_call_holder.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_index.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/alpn.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/alpn/alpn.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/bin_encoder.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/chttp2_transport.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame.h" role="src" />
@@ -193,26 +208,11 @@
     <file baseinstalldir="/" name="src/core/lib/channel/channel_args.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/channel_stack.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/channel_stack_builder.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/client_channel.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/compress_filter.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/connected_channel.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/context.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/http_client_filter.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/http_server_filter.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/subchannel_call_holder.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/client_channel_factory.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/client_config.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/connector.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/initial_connect_string.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/lb_policy.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/lb_policy_factory.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/lb_policy_registry.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/resolver.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/resolver_factory.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/resolver_registry.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/subchannel.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/subchannel_index.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/uri_parser.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/compression/algorithm_metadata.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/compression/message_compress.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/debug/trace.h" role="src" />
@@ -305,18 +305,37 @@
     <file baseinstalldir="/" name="src/core/ext/census/operation.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/census/placeholders.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/census/tracing.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/channel_connectivity.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/client_channel.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/client_channel_factory.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/client_config.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/client_config_plugin.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/connector.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/default_initial_connect_string.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/initial_connect_string.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/lb_policy.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/lb_policy_factory.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/lb_policy_registry.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/resolver.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/resolver_factory.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/resolver_registry.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/subchannel.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_call_holder.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/subchannel_index.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/client_config/uri_parser.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/pick_first/pick_first.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/round_robin/round_robin.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/resolver/dns/native/dns_resolver.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/resolver/sockaddr/sockaddr_resolver.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/alpn/alpn.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/insecure/channel_create.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/client/secure/secure_channel_create.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/insecure/server_chttp2.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c" role="src" />
-    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/alpn.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/bin_encoder.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/chttp2_plugin.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/chttp2_transport.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_data.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/frame_goaway.c" role="src" />
@@ -339,26 +358,10 @@
     <file baseinstalldir="/" name="src/core/lib/channel/channel_args.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/channel_stack.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/channel_stack_builder.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/client_channel.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/compress_filter.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/connected_channel.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/http_client_filter.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/http_server_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/channel/subchannel_call_holder.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/client_channel_factory.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/client_config.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/connector.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/default_initial_connect_string.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/initial_connect_string.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/lb_policy.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/lb_policy_factory.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/lb_policy_registry.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/resolver.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/resolver_factory.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/resolver_registry.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/subchannel.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/subchannel_index.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/client_config/uri_parser.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/compression/compression_algorithm.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/compression/message_compress.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/debug/trace.c" role="src" />
@@ -431,7 +434,6 @@
     <file baseinstalldir="/" name="src/core/lib/surface/call_details.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/surface/call_log_batch.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/surface/channel.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/surface/channel_connectivity.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/surface/channel_init.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/surface/channel_ping.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/surface/channel_stack_type.c" role="src" />
diff --git a/src/core/ext/census/grpc_plugin.c b/src/core/ext/census/grpc_plugin.c
index 0f15ecb..d6c5122 100644
--- a/src/core/ext/census/grpc_plugin.c
+++ b/src/core/ext/census/grpc_plugin.c
@@ -32,6 +32,7 @@
  */
 
 #include <limits.h>
+#include <string.h>
 
 #include <grpc/census.h>
 
@@ -39,11 +40,22 @@
 #include "src/core/lib/channel/channel_stack_builder.h"
 #include "src/core/lib/surface/channel_init.h"
 
+static bool is_census_enabled(const grpc_channel_args *a) {
+  size_t i;
+  if (a == NULL) return 0;
+  for (i = 0; i < a->num_args; i++) {
+    if (0 == strcmp(a->args[i].key, GRPC_ARG_ENABLE_CENSUS)) {
+      return a->args[i].value.integer != 0 && census_enabled();
+    }
+  }
+  return census_enabled();
+}
+
 static bool maybe_add_census_filter(grpc_channel_stack_builder *builder,
                                     void *arg_must_be_null) {
   const grpc_channel_args *args =
       grpc_channel_stack_builder_get_channel_arguments(builder);
-  if (grpc_channel_args_is_census_enabled(args)) {
+  if (is_census_enabled(args)) {
     return grpc_channel_stack_builder_prepend_filter(
         builder, &grpc_client_census_filter, NULL, NULL);
   }
diff --git a/src/core/lib/client_config/README.md b/src/core/ext/client_config/README.md
similarity index 100%
rename from src/core/lib/client_config/README.md
rename to src/core/ext/client_config/README.md
diff --git a/src/core/lib/surface/channel_connectivity.c b/src/core/ext/client_config/channel_connectivity.c
similarity index 98%
rename from src/core/lib/surface/channel_connectivity.c
rename to src/core/ext/client_config/channel_connectivity.c
index 9a9ee42..3ebc333 100644
--- a/src/core/lib/surface/channel_connectivity.c
+++ b/src/core/ext/client_config/channel_connectivity.c
@@ -36,7 +36,7 @@
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 
-#include "src/core/lib/channel/client_channel.h"
+#include "src/core/ext/client_config/client_channel.h"
 #include "src/core/lib/iomgr/timer.h"
 #include "src/core/lib/surface/api_trace.h"
 #include "src/core/lib/surface/completion_queue.h"
diff --git a/src/core/lib/channel/client_channel.c b/src/core/ext/client_config/client_channel.c
similarity index 99%
rename from src/core/lib/channel/client_channel.c
rename to src/core/ext/client_config/client_channel.c
index 55867ba..93d54fd 100644
--- a/src/core/lib/channel/client_channel.c
+++ b/src/core/ext/client_config/client_channel.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/channel/client_channel.h"
+#include "src/core/ext/client_config/client_channel.h"
 
 #include <stdio.h>
 #include <string.h>
@@ -41,9 +41,9 @@
 #include <grpc/support/sync.h>
 #include <grpc/support/useful.h>
 
+#include "src/core/ext/client_config/subchannel_call_holder.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/channel/connected_channel.h"
-#include "src/core/lib/channel/subchannel_call_holder.h"
 #include "src/core/lib/iomgr/iomgr.h"
 #include "src/core/lib/profiling/timers.h"
 #include "src/core/lib/support/string.h"
diff --git a/src/core/lib/channel/client_channel.h b/src/core/ext/client_config/client_channel.h
similarity index 92%
rename from src/core/lib/channel/client_channel.h
rename to src/core/ext/client_config/client_channel.h
index ac418c8..1e47ad3 100644
--- a/src/core/lib/channel/client_channel.h
+++ b/src/core/ext/client_config/client_channel.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CHANNEL_CLIENT_CHANNEL_H
-#define GRPC_CORE_LIB_CHANNEL_CLIENT_CHANNEL_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_CLIENT_CHANNEL_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_CLIENT_CHANNEL_H
 
+#include "src/core/ext/client_config/resolver.h"
 #include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/client_config/resolver.h"
 
 /* A client channel is a channel that begins disconnected, and can connect
    to some endpoint on demand. If that endpoint disconnects, it will be
@@ -60,4 +60,4 @@
     grpc_exec_ctx *exec_ctx, grpc_channel_element *elem, grpc_pollset *pollset,
     grpc_connectivity_state *state, grpc_closure *on_complete);
 
-#endif /* GRPC_CORE_LIB_CHANNEL_CLIENT_CHANNEL_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_CLIENT_CHANNEL_H */
diff --git a/src/core/lib/client_config/client_channel_factory.c b/src/core/ext/client_config/client_channel_factory.c
similarity index 97%
rename from src/core/lib/client_config/client_channel_factory.c
rename to src/core/ext/client_config/client_channel_factory.c
index d27b38d..71c64c0 100644
--- a/src/core/lib/client_config/client_channel_factory.c
+++ b/src/core/ext/client_config/client_channel_factory.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/client_config/client_channel_factory.h"
+#include "src/core/ext/client_config/client_channel_factory.h"
 
 void grpc_client_channel_factory_ref(grpc_client_channel_factory* factory) {
   factory->vtable->ref(factory);
diff --git a/src/core/lib/client_config/client_channel_factory.h b/src/core/ext/client_config/client_channel_factory.h
similarity index 93%
rename from src/core/lib/client_config/client_channel_factory.h
rename to src/core/ext/client_config/client_channel_factory.h
index 0b71cd9..1241b9b 100644
--- a/src/core/lib/client_config/client_channel_factory.h
+++ b/src/core/ext/client_config/client_channel_factory.h
@@ -31,13 +31,13 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CLIENT_CONFIG_CLIENT_CHANNEL_FACTORY_H
-#define GRPC_CORE_LIB_CLIENT_CONFIG_CLIENT_CHANNEL_FACTORY_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_CLIENT_CHANNEL_FACTORY_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_CLIENT_CHANNEL_FACTORY_H
 
 #include <grpc/impl/codegen/grpc_types.h>
 
+#include "src/core/ext/client_config/subchannel.h"
 #include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/client_config/subchannel.h"
 
 typedef struct grpc_client_channel_factory grpc_client_channel_factory;
 typedef struct grpc_client_channel_factory_vtable
@@ -82,4 +82,4 @@
     grpc_exec_ctx *exec_ctx, grpc_client_channel_factory *factory,
     const char *target, grpc_client_channel_type type, grpc_channel_args *args);
 
-#endif /* GRPC_CORE_LIB_CLIENT_CONFIG_CLIENT_CHANNEL_FACTORY_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_CLIENT_CHANNEL_FACTORY_H */
diff --git a/src/core/lib/client_config/client_config.c b/src/core/ext/client_config/client_config.c
similarity index 97%
rename from src/core/lib/client_config/client_config.c
rename to src/core/ext/client_config/client_config.c
index 2521023..f9b8e68 100644
--- a/src/core/lib/client_config/client_config.c
+++ b/src/core/ext/client_config/client_config.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/client_config/client_config.h"
+#include "src/core/ext/client_config/client_config.h"
 
 #include <string.h>
 
diff --git a/src/core/lib/client_config/client_config.h b/src/core/ext/client_config/client_config.h
similarity index 90%
rename from src/core/lib/client_config/client_config.h
rename to src/core/ext/client_config/client_config.h
index 8dc2f6b..a6290cb 100644
--- a/src/core/lib/client_config/client_config.h
+++ b/src/core/ext/client_config/client_config.h
@@ -31,10 +31,10 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CLIENT_CONFIG_CLIENT_CONFIG_H
-#define GRPC_CORE_LIB_CLIENT_CONFIG_CLIENT_CONFIG_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_CLIENT_CONFIG_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_CLIENT_CONFIG_H
 
-#include "src/core/lib/client_config/lb_policy.h"
+#include "src/core/ext/client_config/lb_policy.h"
 
 /** Total configuration for a client. Provided, and updated, by
     grpc_resolver */
@@ -50,4 +50,4 @@
 grpc_lb_policy *grpc_client_config_get_lb_policy(
     grpc_client_config *client_config);
 
-#endif /* GRPC_CORE_LIB_CLIENT_CONFIG_CLIENT_CONFIG_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_CLIENT_CONFIG_H */
diff --git a/src/core/ext/client_config/client_config_plugin.c b/src/core/ext/client_config/client_config_plugin.c
new file mode 100644
index 0000000..6cd8a2f
--- /dev/null
+++ b/src/core/ext/client_config/client_config_plugin.c
@@ -0,0 +1,91 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#include <limits.h>
+#include <stdbool.h>
+#include <string.h>
+
+#include <grpc/support/alloc.h>
+
+#include "src/core/ext/client_config/client_channel.h"
+#include "src/core/ext/client_config/lb_policy_registry.h"
+#include "src/core/ext/client_config/resolver_registry.h"
+#include "src/core/ext/client_config/subchannel_index.h"
+#include "src/core/lib/surface/channel_init.h"
+
+#ifndef GRPC_DEFAULT_NAME_PREFIX
+#define GRPC_DEFAULT_NAME_PREFIX "dns:///"
+#endif
+
+static bool append_filter(grpc_channel_stack_builder *builder, void *arg) {
+  return grpc_channel_stack_builder_append_filter(
+      builder, (const grpc_channel_filter *)arg, NULL, NULL);
+}
+
+static bool set_default_host_if_unset(grpc_channel_stack_builder *builder,
+                                      void *unused) {
+  const grpc_channel_args *args =
+      grpc_channel_stack_builder_get_channel_arguments(builder);
+  for (size_t i = 0; i < args->num_args; i++) {
+    if (0 == strcmp(args->args[i].key, GRPC_ARG_DEFAULT_AUTHORITY)) {
+      return true;
+    }
+  }
+  grpc_arg arg;
+  arg.type = GRPC_ARG_STRING;
+  arg.key = GRPC_ARG_DEFAULT_AUTHORITY;
+  arg.value.string = grpc_get_default_authority(
+      grpc_channel_stack_builder_get_target(builder));
+  grpc_channel_args *new_args = grpc_channel_args_copy_and_add(args, &arg, 1);
+  grpc_channel_stack_builder_set_channel_arguments(builder, new_args);
+  gpr_free(arg.value.string);
+  grpc_channel_args_destroy(new_args);
+  return true;
+}
+
+void grpc_client_config_init(void) {
+  grpc_lb_policy_registry_init();
+  grpc_resolver_registry_init(GRPC_DEFAULT_NAME_PREFIX);
+  grpc_subchannel_index_init();
+  grpc_channel_init_register_stage(GRPC_CLIENT_CHANNEL, INT_MIN,
+                                   set_default_host_if_unset, NULL);
+  grpc_channel_init_register_stage(GRPC_CLIENT_CHANNEL, INT_MAX, append_filter,
+                                   (void *)&grpc_client_channel_filter);
+}
+
+void grpc_client_config_shutdown(void) {
+  grpc_subchannel_index_shutdown();
+  grpc_channel_init_shutdown();
+  grpc_resolver_registry_shutdown();
+  grpc_lb_policy_registry_shutdown();
+}
diff --git a/src/core/lib/client_config/connector.c b/src/core/ext/client_config/connector.c
similarity index 97%
rename from src/core/lib/client_config/connector.c
rename to src/core/ext/client_config/connector.c
index 4c7b823..5b629ed 100644
--- a/src/core/lib/client_config/connector.c
+++ b/src/core/ext/client_config/connector.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/client_config/connector.h"
+#include "src/core/ext/client_config/connector.h"
 
 grpc_connector* grpc_connector_ref(grpc_connector* connector) {
   connector->vtable->ref(connector);
diff --git a/src/core/lib/client_config/connector.h b/src/core/ext/client_config/connector.h
similarity index 95%
rename from src/core/lib/client_config/connector.h
rename to src/core/ext/client_config/connector.h
index 39870a2..dd85dfc 100644
--- a/src/core/lib/client_config/connector.h
+++ b/src/core/ext/client_config/connector.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CLIENT_CONFIG_CONNECTOR_H
-#define GRPC_CORE_LIB_CLIENT_CONFIG_CONNECTOR_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_CONNECTOR_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_CONNECTOR_H
 
 #include "src/core/lib/channel/channel_stack.h"
 #include "src/core/lib/iomgr/sockaddr.h"
@@ -89,4 +89,4 @@
 void grpc_connector_shutdown(grpc_exec_ctx *exec_ctx,
                              grpc_connector *connector);
 
-#endif /* GRPC_CORE_LIB_CLIENT_CONFIG_CONNECTOR_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_CONNECTOR_H */
diff --git a/src/core/lib/client_config/default_initial_connect_string.c b/src/core/ext/client_config/default_initial_connect_string.c
similarity index 100%
rename from src/core/lib/client_config/default_initial_connect_string.c
rename to src/core/ext/client_config/default_initial_connect_string.c
diff --git a/src/core/lib/client_config/initial_connect_string.c b/src/core/ext/client_config/initial_connect_string.c
similarity index 97%
rename from src/core/lib/client_config/initial_connect_string.c
rename to src/core/ext/client_config/initial_connect_string.c
index 4034ea2..41580d2 100644
--- a/src/core/lib/client_config/initial_connect_string.c
+++ b/src/core/ext/client_config/initial_connect_string.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/client_config/initial_connect_string.h"
+#include "src/core/ext/client_config/initial_connect_string.h"
 
 #include <stddef.h>
 
diff --git a/src/core/lib/client_config/initial_connect_string.h b/src/core/ext/client_config/initial_connect_string.h
similarity index 91%
rename from src/core/lib/client_config/initial_connect_string.h
rename to src/core/ext/client_config/initial_connect_string.h
index 5130276..06f0767 100644
--- a/src/core/lib/client_config/initial_connect_string.h
+++ b/src/core/ext/client_config/initial_connect_string.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CLIENT_CONFIG_INITIAL_CONNECT_STRING_H
-#define GRPC_CORE_LIB_CLIENT_CONFIG_INITIAL_CONNECT_STRING_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_INITIAL_CONNECT_STRING_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_INITIAL_CONNECT_STRING_H
 
 #include <grpc/support/slice.h>
 #include "src/core/lib/iomgr/sockaddr.h"
@@ -47,4 +47,4 @@
 void grpc_set_initial_connect_string(struct sockaddr **addr, size_t *addr_len,
                                      gpr_slice *connect_string);
 
-#endif /* GRPC_CORE_LIB_CLIENT_CONFIG_INITIAL_CONNECT_STRING_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_INITIAL_CONNECT_STRING_H */
diff --git a/src/core/lib/client_config/lb_policy.c b/src/core/ext/client_config/lb_policy.c
similarity index 98%
rename from src/core/lib/client_config/lb_policy.c
rename to src/core/ext/client_config/lb_policy.c
index 6174162..a7ad984 100644
--- a/src/core/lib/client_config/lb_policy.c
+++ b/src/core/ext/client_config/lb_policy.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/client_config/lb_policy.h"
+#include "src/core/ext/client_config/lb_policy.h"
 
 #define WEAK_REF_BITS 16
 
diff --git a/src/core/lib/client_config/lb_policy.h b/src/core/ext/client_config/lb_policy.h
similarity index 97%
rename from src/core/lib/client_config/lb_policy.h
rename to src/core/ext/client_config/lb_policy.h
index 60729ef..0384e0b 100644
--- a/src/core/lib/client_config/lb_policy.h
+++ b/src/core/ext/client_config/lb_policy.h
@@ -31,10 +31,10 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CLIENT_CONFIG_LB_POLICY_H
-#define GRPC_CORE_LIB_CLIENT_CONFIG_LB_POLICY_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_H
 
-#include "src/core/lib/client_config/subchannel.h"
+#include "src/core/ext/client_config/subchannel.h"
 #include "src/core/lib/transport/connectivity_state.h"
 
 /** A load balancing policy: specified by a vtable and a struct (which
@@ -154,4 +154,4 @@
 grpc_connectivity_state grpc_lb_policy_check_connectivity(
     grpc_exec_ctx *exec_ctx, grpc_lb_policy *policy);
 
-#endif /* GRPC_CORE_LIB_CLIENT_CONFIG_LB_POLICY_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_H */
diff --git a/src/core/lib/client_config/lb_policy_factory.c b/src/core/ext/client_config/lb_policy_factory.c
similarity index 96%
rename from src/core/lib/client_config/lb_policy_factory.c
rename to src/core/ext/client_config/lb_policy_factory.c
index 92e1f5f..70e46ef 100644
--- a/src/core/lib/client_config/lb_policy_factory.c
+++ b/src/core/ext/client_config/lb_policy_factory.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/client_config/lb_policy_factory.h"
+#include "src/core/ext/client_config/lb_policy_factory.h"
 
 void grpc_lb_policy_factory_ref(grpc_lb_policy_factory* factory) {
   factory->vtable->ref(factory);
diff --git a/src/core/lib/client_config/lb_policy_factory.h b/src/core/ext/client_config/lb_policy_factory.h
similarity index 90%
rename from src/core/lib/client_config/lb_policy_factory.h
rename to src/core/ext/client_config/lb_policy_factory.h
index 4931d4d..1c89b28 100644
--- a/src/core/lib/client_config/lb_policy_factory.h
+++ b/src/core/ext/client_config/lb_policy_factory.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CLIENT_CONFIG_LB_POLICY_FACTORY_H
-#define GRPC_CORE_LIB_CLIENT_CONFIG_LB_POLICY_FACTORY_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_FACTORY_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_FACTORY_H
 
-#include "src/core/lib/client_config/client_channel_factory.h"
-#include "src/core/lib/client_config/lb_policy.h"
+#include "src/core/ext/client_config/client_channel_factory.h"
+#include "src/core/ext/client_config/lb_policy.h"
 #include "src/core/lib/iomgr/resolve_address.h"
 
 #include "src/core/lib/iomgr/exec_ctx.h"
@@ -75,4 +75,4 @@
     grpc_exec_ctx *exec_ctx, grpc_lb_policy_factory *factory,
     grpc_lb_policy_args *args);
 
-#endif /* GRPC_CORE_LIB_CLIENT_CONFIG_LB_POLICY_FACTORY_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_FACTORY_H */
diff --git a/src/core/lib/client_config/lb_policy_registry.c b/src/core/ext/client_config/lb_policy_registry.c
similarity index 97%
rename from src/core/lib/client_config/lb_policy_registry.c
rename to src/core/ext/client_config/lb_policy_registry.c
index af39636..a23643e 100644
--- a/src/core/lib/client_config/lb_policy_registry.c
+++ b/src/core/ext/client_config/lb_policy_registry.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/client_config/lb_policy_registry.h"
+#include "src/core/ext/client_config/lb_policy_registry.h"
 
 #include <string.h>
 
diff --git a/src/core/lib/client_config/lb_policy_registry.h b/src/core/ext/client_config/lb_policy_registry.h
similarity index 90%
rename from src/core/lib/client_config/lb_policy_registry.h
rename to src/core/ext/client_config/lb_policy_registry.h
index 4b8495d..92f38d6 100644
--- a/src/core/lib/client_config/lb_policy_registry.h
+++ b/src/core/ext/client_config/lb_policy_registry.h
@@ -31,10 +31,10 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CLIENT_CONFIG_LB_POLICY_REGISTRY_H
-#define GRPC_CORE_LIB_CLIENT_CONFIG_LB_POLICY_REGISTRY_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_REGISTRY_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_REGISTRY_H
 
-#include "src/core/lib/client_config/lb_policy_factory.h"
+#include "src/core/ext/client_config/lb_policy_factory.h"
 #include "src/core/lib/iomgr/exec_ctx.h"
 
 /** Initialize the registry and set \a default_factory as the factory to be
@@ -52,4 +52,4 @@
 grpc_lb_policy *grpc_lb_policy_create(grpc_exec_ctx *exec_ctx, const char *name,
                                       grpc_lb_policy_args *args);
 
-#endif /* GRPC_CORE_LIB_CLIENT_CONFIG_LB_POLICY_REGISTRY_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_LB_POLICY_REGISTRY_H */
diff --git a/src/core/lib/client_config/resolver.c b/src/core/ext/client_config/resolver.c
similarity index 98%
rename from src/core/lib/client_config/resolver.c
rename to src/core/ext/client_config/resolver.c
index b9eef55..eb00445 100644
--- a/src/core/lib/client_config/resolver.c
+++ b/src/core/ext/client_config/resolver.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/client_config/resolver.h"
+#include "src/core/ext/client_config/resolver.h"
 
 void grpc_resolver_init(grpc_resolver *resolver,
                         const grpc_resolver_vtable *vtable) {
diff --git a/src/core/lib/client_config/resolver.h b/src/core/ext/client_config/resolver.h
similarity index 93%
rename from src/core/lib/client_config/resolver.h
rename to src/core/ext/client_config/resolver.h
index cf0bb2b..6ecb5d2 100644
--- a/src/core/lib/client_config/resolver.h
+++ b/src/core/ext/client_config/resolver.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CLIENT_CONFIG_RESOLVER_H
-#define GRPC_CORE_LIB_CLIENT_CONFIG_RESOLVER_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_H
 
-#include "src/core/lib/client_config/client_config.h"
-#include "src/core/lib/client_config/subchannel.h"
+#include "src/core/ext/client_config/client_config.h"
+#include "src/core/ext/client_config/subchannel.h"
 #include "src/core/lib/iomgr/iomgr.h"
 
 typedef struct grpc_resolver grpc_resolver;
@@ -91,4 +91,4 @@
                         grpc_client_config **target_config,
                         grpc_closure *on_complete);
 
-#endif /* GRPC_CORE_LIB_CLIENT_CONFIG_RESOLVER_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_H */
diff --git a/src/core/lib/client_config/resolver_factory.c b/src/core/ext/client_config/resolver_factory.c
similarity index 97%
rename from src/core/lib/client_config/resolver_factory.c
rename to src/core/ext/client_config/resolver_factory.c
index 001fa28..67832dc 100644
--- a/src/core/lib/client_config/resolver_factory.c
+++ b/src/core/ext/client_config/resolver_factory.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/client_config/resolver_factory.h"
+#include "src/core/ext/client_config/resolver_factory.h"
 
 void grpc_resolver_factory_ref(grpc_resolver_factory* factory) {
   factory->vtable->ref(factory);
diff --git a/src/core/lib/client_config/resolver_factory.h b/src/core/ext/client_config/resolver_factory.h
similarity index 90%
rename from src/core/lib/client_config/resolver_factory.h
rename to src/core/ext/client_config/resolver_factory.h
index 18c7fd7..4eb6979 100644
--- a/src/core/lib/client_config/resolver_factory.h
+++ b/src/core/ext/client_config/resolver_factory.h
@@ -31,12 +31,12 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CLIENT_CONFIG_RESOLVER_FACTORY_H
-#define GRPC_CORE_LIB_CLIENT_CONFIG_RESOLVER_FACTORY_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_FACTORY_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_FACTORY_H
 
-#include "src/core/lib/client_config/client_channel_factory.h"
-#include "src/core/lib/client_config/resolver.h"
-#include "src/core/lib/client_config/uri_parser.h"
+#include "src/core/ext/client_config/client_channel_factory.h"
+#include "src/core/ext/client_config/resolver.h"
+#include "src/core/ext/client_config/uri_parser.h"
 
 typedef struct grpc_resolver_factory grpc_resolver_factory;
 typedef struct grpc_resolver_factory_vtable grpc_resolver_factory_vtable;
@@ -79,4 +79,4 @@
 char *grpc_resolver_factory_get_default_authority(
     grpc_resolver_factory *factory, grpc_uri *uri);
 
-#endif /* GRPC_CORE_LIB_CLIENT_CONFIG_RESOLVER_FACTORY_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_FACTORY_H */
diff --git a/src/core/lib/client_config/resolver_registry.c b/src/core/ext/client_config/resolver_registry.c
similarity index 98%
rename from src/core/lib/client_config/resolver_registry.c
rename to src/core/ext/client_config/resolver_registry.c
index 5584f66..07f29bc 100644
--- a/src/core/lib/client_config/resolver_registry.c
+++ b/src/core/ext/client_config/resolver_registry.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/client_config/resolver_registry.h"
+#include "src/core/ext/client_config/resolver_registry.h"
 
 #include <string.h>
 
diff --git a/src/core/lib/client_config/resolver_registry.h b/src/core/ext/client_config/resolver_registry.h
similarity index 92%
rename from src/core/lib/client_config/resolver_registry.h
rename to src/core/ext/client_config/resolver_registry.h
index b207313..5ef1383 100644
--- a/src/core/lib/client_config/resolver_registry.h
+++ b/src/core/ext/client_config/resolver_registry.h
@@ -31,10 +31,10 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CLIENT_CONFIG_RESOLVER_REGISTRY_H
-#define GRPC_CORE_LIB_CLIENT_CONFIG_RESOLVER_REGISTRY_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_REGISTRY_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_REGISTRY_H
 
-#include "src/core/lib/client_config/resolver_factory.h"
+#include "src/core/ext/client_config/resolver_factory.h"
 
 void grpc_resolver_registry_init(const char *default_prefix);
 void grpc_resolver_registry_shutdown(void);
@@ -66,4 +66,4 @@
     representing the default authority to pass from a client. */
 char *grpc_get_default_authority(const char *target);
 
-#endif /* GRPC_CORE_LIB_CLIENT_CONFIG_RESOLVER_REGISTRY_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_RESOLVER_REGISTRY_H */
diff --git a/src/core/lib/client_config/subchannel.c b/src/core/ext/client_config/subchannel.c
similarity index 96%
rename from src/core/lib/client_config/subchannel.c
rename to src/core/ext/client_config/subchannel.c
index f44e2f7..125a291 100644
--- a/src/core/lib/client_config/subchannel.c
+++ b/src/core/ext/client_config/subchannel.c
@@ -31,18 +31,18 @@
  *
  */
 
-#include "src/core/lib/client_config/subchannel.h"
+#include "src/core/ext/client_config/subchannel.h"
 
 #include <string.h>
 
 #include <grpc/support/alloc.h>
 #include <grpc/support/avl.h>
 
+#include "src/core/ext/client_config/client_channel.h"
+#include "src/core/ext/client_config/initial_connect_string.h"
+#include "src/core/ext/client_config/subchannel_index.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/connected_channel.h"
-#include "src/core/lib/client_config/initial_connect_string.h"
-#include "src/core/lib/client_config/subchannel_index.h"
 #include "src/core/lib/iomgr/timer.h"
 #include "src/core/lib/profiling/timers.h"
 #include "src/core/lib/support/backoff.h"
@@ -546,9 +546,20 @@
   state_watcher *sw_subchannel;
 
   /* construct channel stack */
-  con = grpc_channel_init_create_stack(
-      exec_ctx, GRPC_CLIENT_SUBCHANNEL, 0, c->connecting_result.channel_args, 1,
-      connection_destroy, NULL, c->connecting_result.transport);
+  grpc_channel_stack_builder *builder = grpc_channel_stack_builder_create();
+  grpc_channel_stack_builder_set_channel_arguments(
+      builder, c->connecting_result.channel_args);
+  grpc_channel_stack_builder_set_transport(builder,
+                                           c->connecting_result.transport);
+
+  if (grpc_channel_init_create_stack(exec_ctx, builder,
+                                     GRPC_CLIENT_SUBCHANNEL)) {
+    con = grpc_channel_stack_builder_finish(exec_ctx, builder, 0, 1,
+                                            connection_destroy, NULL);
+  } else {
+    grpc_channel_stack_builder_destroy(builder);
+    abort(); /* TODO(ctiller): what to do here (previously we just crashed) */
+  }
   stk = CHANNEL_STACK_FROM_CONNECTION(con);
   memset(&c->connecting_result, 0, sizeof(c->connecting_result));
 
@@ -576,7 +587,8 @@
   GPR_ASSERT(gpr_atm_rel_cas(&c->connected_subchannel, 0, (gpr_atm)con));
   c->connecting = 0;
 
-  /* setup subchannel watching connected subchannel for changes; subchannel ref
+  /* setup subchannel watching connected subchannel for changes; subchannel
+     ref
      for connecting is donated
      to the state watcher */
   GRPC_SUBCHANNEL_WEAK_REF(c, "state_watcher");
diff --git a/src/core/lib/client_config/subchannel.h b/src/core/ext/client_config/subchannel.h
similarity index 97%
rename from src/core/lib/client_config/subchannel.h
rename to src/core/ext/client_config/subchannel.h
index 68aeff3..0765a54 100644
--- a/src/core/lib/client_config/subchannel.h
+++ b/src/core/ext/client_config/subchannel.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CLIENT_CONFIG_SUBCHANNEL_H
-#define GRPC_CORE_LIB_CLIENT_CONFIG_SUBCHANNEL_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_SUBCHANNEL_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_SUBCHANNEL_H
 
+#include "src/core/ext/client_config/connector.h"
 #include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/client_config/connector.h"
 #include "src/core/lib/transport/connectivity_state.h"
 
 /** A (sub-)channel that knows how to connect to exactly one target
@@ -171,4 +171,4 @@
                                         grpc_connector *connector,
                                         grpc_subchannel_args *args);
 
-#endif /* GRPC_CORE_LIB_CLIENT_CONFIG_SUBCHANNEL_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_SUBCHANNEL_H */
diff --git a/src/core/lib/channel/subchannel_call_holder.c b/src/core/ext/client_config/subchannel_call_holder.c
similarity index 98%
rename from src/core/lib/channel/subchannel_call_holder.c
rename to src/core/ext/client_config/subchannel_call_holder.c
index a2686a3..3db462b 100644
--- a/src/core/lib/channel/subchannel_call_holder.c
+++ b/src/core/ext/client_config/subchannel_call_holder.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/channel/subchannel_call_holder.h"
+#include "src/core/ext/client_config/subchannel_call_holder.h"
 
 #include <grpc/support/alloc.h>
 
diff --git a/src/core/lib/channel/subchannel_call_holder.h b/src/core/ext/client_config/subchannel_call_holder.h
similarity index 94%
rename from src/core/lib/channel/subchannel_call_holder.h
rename to src/core/ext/client_config/subchannel_call_holder.h
index 769e22b..9299908 100644
--- a/src/core/lib/channel/subchannel_call_holder.h
+++ b/src/core/ext/client_config/subchannel_call_holder.h
@@ -31,10 +31,10 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CHANNEL_SUBCHANNEL_CALL_HOLDER_H
-#define GRPC_CORE_LIB_CHANNEL_SUBCHANNEL_CALL_HOLDER_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_SUBCHANNEL_CALL_HOLDER_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_SUBCHANNEL_CALL_HOLDER_H
 
-#include "src/core/lib/client_config/subchannel.h"
+#include "src/core/ext/client_config/subchannel.h"
 
 /** Pick a subchannel for grpc_subchannel_call_holder;
     Return 1 if subchannel is available immediately (in which case on_ready
@@ -95,4 +95,4 @@
 char *grpc_subchannel_call_holder_get_peer(grpc_exec_ctx *exec_ctx,
                                            grpc_subchannel_call_holder *holder);
 
-#endif /* GRPC_CORE_LIB_CHANNEL_SUBCHANNEL_CALL_HOLDER_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_SUBCHANNEL_CALL_HOLDER_H */
diff --git a/src/core/lib/client_config/lb_policy_factory.c b/src/core/ext/client_config/subchannel_factory.c
similarity index 75%
copy from src/core/lib/client_config/lb_policy_factory.c
copy to src/core/ext/client_config/subchannel_factory.c
index 92e1f5f..d1e4d75 100644
--- a/src/core/lib/client_config/lb_policy_factory.c
+++ b/src/core/ext/client_config/subchannel_factory.c
@@ -31,19 +31,19 @@
  *
  */
 
-#include "src/core/lib/client_config/lb_policy_factory.h"
+#include "src/core/ext/client_config/subchannel_factory.h"
 
-void grpc_lb_policy_factory_ref(grpc_lb_policy_factory* factory) {
+void grpc_subchannel_factory_ref(grpc_subchannel_factory* factory) {
   factory->vtable->ref(factory);
 }
 
-void grpc_lb_policy_factory_unref(grpc_lb_policy_factory* factory) {
-  factory->vtable->unref(factory);
+void grpc_subchannel_factory_unref(grpc_exec_ctx* exec_ctx,
+                                   grpc_subchannel_factory* factory) {
+  factory->vtable->unref(exec_ctx, factory);
 }
 
-grpc_lb_policy* grpc_lb_policy_factory_create_lb_policy(
-    grpc_exec_ctx* exec_ctx, grpc_lb_policy_factory* factory,
-    grpc_lb_policy_args* args) {
-  if (factory == NULL) return NULL;
-  return factory->vtable->create_lb_policy(exec_ctx, factory, args);
+grpc_subchannel* grpc_subchannel_factory_create_subchannel(
+    grpc_exec_ctx* exec_ctx, grpc_subchannel_factory* factory,
+    grpc_subchannel_args* args) {
+  return factory->vtable->create_subchannel(exec_ctx, factory, args);
 }
diff --git a/src/core/ext/client_config/subchannel_factory.h b/src/core/ext/client_config/subchannel_factory.h
new file mode 100644
index 0000000..0fb806d
--- /dev/null
+++ b/src/core/ext/client_config/subchannel_factory.h
@@ -0,0 +1,66 @@
+/*
+ *
+ * Copyright 2015, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_SUBCHANNEL_FACTORY_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_SUBCHANNEL_FACTORY_H
+
+#include "src/core/ext/client_config/subchannel.h"
+#include "src/core/lib/channel/channel_stack.h"
+
+typedef struct grpc_subchannel_factory grpc_subchannel_factory;
+typedef struct grpc_subchannel_factory_vtable grpc_subchannel_factory_vtable;
+
+/** Constructor for new configured channels.
+    Creating decorators around this type is encouraged to adapt behavior. */
+struct grpc_subchannel_factory {
+  const grpc_subchannel_factory_vtable *vtable;
+};
+
+struct grpc_subchannel_factory_vtable {
+  void (*ref)(grpc_subchannel_factory *factory);
+  void (*unref)(grpc_exec_ctx *exec_ctx, grpc_subchannel_factory *factory);
+  grpc_subchannel *(*create_subchannel)(grpc_exec_ctx *exec_ctx,
+                                        grpc_subchannel_factory *factory,
+                                        grpc_subchannel_args *args);
+};
+
+void grpc_subchannel_factory_ref(grpc_subchannel_factory *factory);
+void grpc_subchannel_factory_unref(grpc_exec_ctx *exec_ctx,
+                                   grpc_subchannel_factory *factory);
+
+/** Create a new grpc_subchannel */
+grpc_subchannel *grpc_subchannel_factory_create_subchannel(
+    grpc_exec_ctx *exec_ctx, grpc_subchannel_factory *factory,
+    grpc_subchannel_args *args);
+
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_SUBCHANNEL_FACTORY_H */
diff --git a/src/core/lib/client_config/subchannel_index.c b/src/core/ext/client_config/subchannel_index.c
similarity index 99%
rename from src/core/lib/client_config/subchannel_index.c
rename to src/core/ext/client_config/subchannel_index.c
index 2c54500..ab8d9bd 100644
--- a/src/core/lib/client_config/subchannel_index.c
+++ b/src/core/ext/client_config/subchannel_index.c
@@ -31,7 +31,7 @@
 //
 //
 
-#include "src/core/lib/client_config/subchannel_index.h"
+#include "src/core/ext/client_config/subchannel_index.h"
 
 #include <stdbool.h>
 #include <string.h>
diff --git a/src/core/lib/client_config/subchannel_index.h b/src/core/ext/client_config/subchannel_index.h
similarity index 92%
rename from src/core/lib/client_config/subchannel_index.h
rename to src/core/ext/client_config/subchannel_index.h
index bc5f03b..6b8d063 100644
--- a/src/core/lib/client_config/subchannel_index.h
+++ b/src/core/ext/client_config/subchannel_index.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CLIENT_CONFIG_SUBCHANNEL_INDEX_H
-#define GRPC_CORE_LIB_CLIENT_CONFIG_SUBCHANNEL_INDEX_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_SUBCHANNEL_INDEX_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_SUBCHANNEL_INDEX_H
 
-#include "src/core/lib/client_config/connector.h"
-#include "src/core/lib/client_config/subchannel.h"
+#include "src/core/ext/client_config/connector.h"
+#include "src/core/ext/client_config/subchannel.h"
 
 /** \file Provides an index of active subchannels so that they can be
     shared amongst channels */
@@ -74,4 +74,4 @@
 /** Shutdown the subchannel index (global) */
 void grpc_subchannel_index_shutdown(void);
 
-#endif /* GRPC_CORE_LIB_CLIENT_CONFIG_SUBCHANNEL_INDEX_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_SUBCHANNEL_INDEX_H */
diff --git a/src/core/lib/client_config/uri_parser.c b/src/core/ext/client_config/uri_parser.c
similarity index 99%
rename from src/core/lib/client_config/uri_parser.c
rename to src/core/ext/client_config/uri_parser.c
index 6bec70d..3ca1a58 100644
--- a/src/core/lib/client_config/uri_parser.c
+++ b/src/core/ext/client_config/uri_parser.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/client_config/uri_parser.h"
+#include "src/core/ext/client_config/uri_parser.h"
 
 #include <string.h>
 
diff --git a/src/core/lib/client_config/uri_parser.h b/src/core/ext/client_config/uri_parser.h
similarity index 93%
rename from src/core/lib/client_config/uri_parser.h
rename to src/core/ext/client_config/uri_parser.h
index 5d6785d..875a7cb 100644
--- a/src/core/lib/client_config/uri_parser.h
+++ b/src/core/ext/client_config/uri_parser.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CLIENT_CONFIG_URI_PARSER_H
-#define GRPC_CORE_LIB_CLIENT_CONFIG_URI_PARSER_H
+#ifndef GRPC_CORE_EXT_CLIENT_CONFIG_URI_PARSER_H
+#define GRPC_CORE_EXT_CLIENT_CONFIG_URI_PARSER_H
 
 #include <stddef.h>
 
@@ -60,4 +60,4 @@
 /** destroy a uri */
 void grpc_uri_destroy(grpc_uri *uri);
 
-#endif /* GRPC_CORE_LIB_CLIENT_CONFIG_URI_PARSER_H */
+#endif /* GRPC_CORE_EXT_CLIENT_CONFIG_URI_PARSER_H */
diff --git a/src/core/ext/lb_policy/grpclb/load_balancer_api.h b/src/core/ext/lb_policy/grpclb/load_balancer_api.h
index d329a2f..968f7d2 100644
--- a/src/core/ext/lb_policy/grpclb/load_balancer_api.h
+++ b/src/core/ext/lb_policy/grpclb/load_balancer_api.h
@@ -36,8 +36,8 @@
 
 #include <grpc/support/slice_buffer.h>
 
+#include "src/core/ext/client_config/lb_policy_factory.h"
 #include "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h"
-#include "src/core/lib/client_config/lb_policy_factory.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/src/core/ext/lb_policy/pick_first/pick_first.c b/src/core/ext/lb_policy/pick_first/pick_first.c
index 43197c1..5926f9d 100644
--- a/src/core/ext/lb_policy/pick_first/pick_first.c
+++ b/src/core/ext/lb_policy/pick_first/pick_first.c
@@ -34,7 +34,7 @@
 #include <string.h>
 
 #include <grpc/support/alloc.h>
-#include "src/core/lib/client_config/lb_policy_registry.h"
+#include "src/core/ext/client_config/lb_policy_registry.h"
 #include "src/core/lib/transport/connectivity_state.h"
 
 typedef struct pending_pick {
diff --git a/src/core/ext/lb_policy/round_robin/round_robin.c b/src/core/ext/lb_policy/round_robin/round_robin.c
index eac6971..3f6051b 100644
--- a/src/core/ext/lb_policy/round_robin/round_robin.c
+++ b/src/core/ext/lb_policy/round_robin/round_robin.c
@@ -35,7 +35,7 @@
 
 #include <grpc/support/alloc.h>
 
-#include "src/core/lib/client_config/lb_policy_registry.h"
+#include "src/core/ext/client_config/lb_policy_registry.h"
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/transport/connectivity_state.h"
 
diff --git a/src/core/ext/resolver/dns/native/dns_resolver.c b/src/core/ext/resolver/dns/native/dns_resolver.c
index 1a0bf30..2749b0c 100644
--- a/src/core/ext/resolver/dns/native/dns_resolver.c
+++ b/src/core/ext/resolver/dns/native/dns_resolver.c
@@ -37,8 +37,8 @@
 #include <grpc/support/host_port.h>
 #include <grpc/support/string_util.h>
 
-#include "src/core/lib/client_config/lb_policy_registry.h"
-#include "src/core/lib/client_config/resolver_registry.h"
+#include "src/core/ext/client_config/lb_policy_registry.h"
+#include "src/core/ext/client_config/resolver_registry.h"
 #include "src/core/lib/iomgr/resolve_address.h"
 #include "src/core/lib/iomgr/timer.h"
 #include "src/core/lib/support/backoff.h"
diff --git a/src/core/ext/resolver/sockaddr/sockaddr_resolver.c b/src/core/ext/resolver/sockaddr/sockaddr_resolver.c
index 76c03c0..1d54a86 100644
--- a/src/core/ext/resolver/sockaddr/sockaddr_resolver.c
+++ b/src/core/ext/resolver/sockaddr/sockaddr_resolver.c
@@ -1,6 +1,6 @@
 /*
  *
- * Copyright 2015, Google Inc.
+ * Copyright 2015-2016, Google Inc.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,8 +40,12 @@
 #include <grpc/support/port_platform.h>
 #include <grpc/support/string_util.h>
 
-#include "src/core/lib/client_config/lb_policy_registry.h"
-#include "src/core/lib/client_config/resolver_registry.h"
+#ifdef GPR_HAVE_UNIX_SOCKET
+#include <sys/un.h>
+#endif
+
+#include "src/core/ext/client_config/lb_policy_registry.h"
+#include "src/core/ext/client_config/resolver_registry.h"
 #include "src/core/lib/iomgr/resolve_address.h"
 #include "src/core/lib/iomgr/unix_sockets_posix.h"
 #include "src/core/lib/support/string.h"
@@ -162,6 +166,24 @@
   return ip_get_default_authority(uri);
 }
 
+#ifdef GPR_HAVE_UNIX_SOCKET
+static int parse_unix(grpc_uri *uri, struct sockaddr_storage *addr,
+                      size_t *len) {
+  struct sockaddr_un *un = (struct sockaddr_un *)addr;
+
+  un->sun_family = AF_UNIX;
+  strcpy(un->sun_path, uri->path);
+  *len = strlen(un->sun_path) + sizeof(un->sun_family) + 1;
+
+  return 1;
+}
+
+char *unix_get_default_authority(grpc_resolver_factory *factory,
+                                 grpc_uri *uri) {
+  return gpr_strdup("localhost");
+}
+#endif
+
 static int parse_ipv4(grpc_uri *uri, struct sockaddr_storage *addr,
                       size_t *len) {
   const char *host_port = uri->path;
@@ -334,23 +356,22 @@
 
 static void sockaddr_factory_unref(grpc_resolver_factory *factory) {}
 
-#define DECL_FACTORY(name, prefix)                                          \
+#define DECL_FACTORY(name)                                                  \
   static grpc_resolver *name##_factory_create_resolver(                     \
       grpc_resolver_factory *factory, grpc_resolver_args *args) {           \
-    return sockaddr_create(args, "pick_first", prefix##parse_##name);       \
+    return sockaddr_create(args, "pick_first", parse_##name);               \
   }                                                                         \
   static const grpc_resolver_factory_vtable name##_factory_vtable = {       \
       sockaddr_factory_ref, sockaddr_factory_unref,                         \
-      name##_factory_create_resolver, prefix##name##_get_default_authority, \
-      #name};                                                               \
+      name##_factory_create_resolver, name##_get_default_authority, #name}; \
   static grpc_resolver_factory name##_resolver_factory = {                  \
       &name##_factory_vtable}
 
 #ifdef GPR_HAVE_UNIX_SOCKET
-DECL_FACTORY(unix, grpc_);
+DECL_FACTORY(unix);
 #endif
-DECL_FACTORY(ipv4, );
-DECL_FACTORY(ipv6, );
+DECL_FACTORY(ipv4);
+DECL_FACTORY(ipv6);
 
 void grpc_resolver_sockaddr_init(void) {
   grpc_register_resolver_type(&ipv4_resolver_factory);
diff --git a/src/core/ext/resolver/zookeeper/zookeeper_resolver.c b/src/core/ext/resolver/zookeeper/zookeeper_resolver.c
index 91153f1..898632c 100644
--- a/src/core/ext/resolver/zookeeper/zookeeper_resolver.c
+++ b/src/core/ext/resolver/zookeeper/zookeeper_resolver.c
@@ -39,8 +39,8 @@
 #include <grpc/grpc_zookeeper.h>
 #include <zookeeper/zookeeper.h>
 
-#include "src/core/lib/client_config/lb_policy_registry.h"
-#include "src/core/lib/client_config/resolver_registry.h"
+#include "src/core/ext/client_config/lb_policy_registry.h"
+#include "src/core/ext/client_config/resolver_registry.h"
 #include "src/core/lib/iomgr/resolve_address.h"
 #include "src/core/lib/json/json.h"
 #include "src/core/lib/support/string.h"
diff --git a/src/core/ext/transport/chttp2/transport/alpn.c b/src/core/ext/transport/chttp2/alpn/alpn.c
similarity index 97%
rename from src/core/ext/transport/chttp2/transport/alpn.c
rename to src/core/ext/transport/chttp2/alpn/alpn.c
index 4271d08..48b0217 100644
--- a/src/core/ext/transport/chttp2/transport/alpn.c
+++ b/src/core/ext/transport/chttp2/alpn/alpn.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/ext/transport/chttp2/transport/alpn.h"
+#include "src/core/ext/transport/chttp2/alpn/alpn.h"
 #include <grpc/support/log.h>
 #include <grpc/support/useful.h>
 
diff --git a/src/core/ext/transport/chttp2/transport/alpn.h b/src/core/ext/transport/chttp2/alpn/alpn.h
similarity index 100%
rename from src/core/ext/transport/chttp2/transport/alpn.h
rename to src/core/ext/transport/chttp2/alpn/alpn.h
diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create.c b/src/core/ext/transport/chttp2/client/insecure/channel_create.c
index ee2ac44..0ed1157 100644
--- a/src/core/ext/transport/chttp2/client/insecure/channel_create.c
+++ b/src/core/ext/transport/chttp2/client/insecure/channel_create.c
@@ -40,13 +40,12 @@
 #include <grpc/support/slice.h>
 #include <grpc/support/slice_buffer.h>
 
-#include "src/core/ext/census/grpc_filter.h"
+#include "src/core/ext/client_config/client_channel.h"
+#include "src/core/ext/client_config/resolver_registry.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/compress_filter.h"
 #include "src/core/lib/channel/http_client_filter.h"
-#include "src/core/lib/client_config/resolver_registry.h"
 #include "src/core/lib/iomgr/tcp_client.h"
 #include "src/core/lib/surface/api_trace.h"
 #include "src/core/lib/surface/channel.h"
diff --git a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c
index 5d30805..58af6f9 100644
--- a/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c
+++ b/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c
@@ -40,10 +40,10 @@
 #include <grpc/support/slice.h>
 #include <grpc/support/slice_buffer.h>
 
+#include "src/core/ext/client_config/client_channel.h"
+#include "src/core/ext/client_config/resolver_registry.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/client_channel.h"
-#include "src/core/lib/client_config/resolver_registry.h"
 #include "src/core/lib/iomgr/tcp_client.h"
 #include "src/core/lib/security/auth_filters.h"
 #include "src/core/lib/security/credentials.h"
diff --git a/src/core/ext/transport/chttp2/transport/bin_encoder.c b/src/core/ext/transport/chttp2/transport/bin_encoder.c
index 71c634e..db68e75 100644
--- a/src/core/ext/transport/chttp2/transport/bin_encoder.c
+++ b/src/core/ext/transport/chttp2/transport/bin_encoder.c
@@ -175,7 +175,7 @@
   enc_flush_some(out);
 }
 
-gpr_slice grpc_chttp2_base64_encode_and_huffman_compress(gpr_slice input) {
+gpr_slice grpc_chttp2_base64_encode_and_huffman_compress_impl(gpr_slice input) {
   size_t input_length = GPR_SLICE_LENGTH(input);
   size_t input_triplets = input_length / 3;
   size_t tail_case = input_length % 3;
diff --git a/src/core/ext/transport/chttp2/transport/bin_encoder.h b/src/core/ext/transport/chttp2/transport/bin_encoder.h
index 660f114..61ebbaf 100644
--- a/src/core/ext/transport/chttp2/transport/bin_encoder.h
+++ b/src/core/ext/transport/chttp2/transport/bin_encoder.h
@@ -49,6 +49,6 @@
    gpr_slice y = grpc_chttp2_huffman_compress(x);
    gpr_slice_unref(x);
    return y; */
-gpr_slice grpc_chttp2_base64_encode_and_huffman_compress(gpr_slice input);
+gpr_slice grpc_chttp2_base64_encode_and_huffman_compress_impl(gpr_slice input);
 
 #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_BIN_ENCODER_H */
diff --git a/src/core/lib/client_config/lb_policy_factory.c b/src/core/ext/transport/chttp2/transport/chttp2_plugin.c
similarity index 74%
copy from src/core/lib/client_config/lb_policy_factory.c
copy to src/core/ext/transport/chttp2/transport/chttp2_plugin.c
index 92e1f5f..bd87253 100644
--- a/src/core/lib/client_config/lb_policy_factory.c
+++ b/src/core/ext/transport/chttp2/transport/chttp2_plugin.c
@@ -31,19 +31,16 @@
  *
  */
 
-#include "src/core/lib/client_config/lb_policy_factory.h"
+#include "src/core/ext/transport/chttp2/transport/bin_encoder.h"
+#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
+#include "src/core/lib/debug/trace.h"
+#include "src/core/lib/transport/metadata.h"
 
-void grpc_lb_policy_factory_ref(grpc_lb_policy_factory* factory) {
-  factory->vtable->ref(factory);
+void grpc_chttp2_plugin_init(void) {
+  grpc_chttp2_base64_encode_and_huffman_compress =
+      grpc_chttp2_base64_encode_and_huffman_compress_impl;
+  grpc_register_tracer("http", &grpc_http_trace);
+  grpc_register_tracer("flowctl", &grpc_flowctl_trace);
 }
 
-void grpc_lb_policy_factory_unref(grpc_lb_policy_factory* factory) {
-  factory->vtable->unref(factory);
-}
-
-grpc_lb_policy* grpc_lb_policy_factory_create_lb_policy(
-    grpc_exec_ctx* exec_ctx, grpc_lb_policy_factory* factory,
-    grpc_lb_policy_args* args) {
-  if (factory == NULL) return NULL;
-  return factory->vtable->create_lb_policy(exec_ctx, factory, args);
-}
+void grpc_chttp2_plugin_shutdown(void) {}
diff --git a/src/core/lib/channel/channel_args.c b/src/core/lib/channel/channel_args.c
index b7393b9..28d2d78 100644
--- a/src/core/lib/channel/channel_args.c
+++ b/src/core/lib/channel/channel_args.c
@@ -35,7 +35,6 @@
 #include <grpc/grpc.h>
 #include "src/core/lib/support/string.h"
 
-#include <grpc/census.h>
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 #include <grpc/support/string_util.h>
@@ -165,17 +164,6 @@
   gpr_free(a);
 }
 
-int grpc_channel_args_is_census_enabled(const grpc_channel_args *a) {
-  size_t i;
-  if (a == NULL) return 0;
-  for (i = 0; i < a->num_args; i++) {
-    if (0 == strcmp(a->args[i].key, GRPC_ARG_ENABLE_CENSUS)) {
-      return a->args[i].value.integer != 0 && census_enabled();
-    }
-  }
-  return census_enabled();
-}
-
 grpc_compression_algorithm grpc_channel_args_get_compression_algorithm(
     const grpc_channel_args *a) {
   size_t i;
diff --git a/src/core/lib/channel/channel_stack_builder.c b/src/core/lib/channel/channel_stack_builder.c
index 1ce0c4e..a8646c9 100644
--- a/src/core/lib/channel/channel_stack_builder.c
+++ b/src/core/lib/channel/channel_stack_builder.c
@@ -36,6 +36,7 @@
 #include <string.h>
 
 #include <grpc/support/alloc.h>
+#include <grpc/support/string_util.h>
 
 int grpc_trace_channel_stack_builder = 0;
 
@@ -52,8 +53,9 @@
   filter_node begin;
   filter_node end;
   // various set/get-able parameters
-  const grpc_channel_args *args;
+  grpc_channel_args *args;
   grpc_transport *transport;
+  char *target;
   const char *name;
 };
 
@@ -76,6 +78,17 @@
   return b;
 }
 
+void grpc_channel_stack_builder_set_target(grpc_channel_stack_builder *b,
+                                           const char *target) {
+  gpr_free(b->target);
+  b->target = gpr_strdup(target);
+}
+
+const char *grpc_channel_stack_builder_get_target(
+    grpc_channel_stack_builder *b) {
+  return b->target;
+}
+
 static grpc_channel_stack_builder_iterator *create_iterator_at_filter_node(
     grpc_channel_stack_builder *builder, filter_node *node) {
   grpc_channel_stack_builder_iterator *it = gpr_malloc(sizeof(*it));
@@ -126,8 +139,10 @@
 
 void grpc_channel_stack_builder_set_channel_arguments(
     grpc_channel_stack_builder *builder, const grpc_channel_args *args) {
-  GPR_ASSERT(builder->args == NULL);
-  builder->args = args;
+  if (builder->args != NULL) {
+    grpc_channel_args_destroy(builder->args);
+  }
+  builder->args = grpc_channel_args_copy(args);
 }
 
 void grpc_channel_stack_builder_set_transport(
@@ -205,6 +220,10 @@
     gpr_free(p);
     p = next;
   }
+  if (builder->args != NULL) {
+    grpc_channel_args_destroy(builder->args);
+  }
+  gpr_free(builder->target);
   gpr_free(builder);
 }
 
diff --git a/src/core/lib/channel/channel_stack_builder.h b/src/core/lib/channel/channel_stack_builder.h
index 8532c44..0e6bfd9 100644
--- a/src/core/lib/channel/channel_stack_builder.h
+++ b/src/core/lib/channel/channel_stack_builder.h
@@ -52,6 +52,13 @@
 void grpc_channel_stack_builder_set_name(grpc_channel_stack_builder *builder,
                                          const char *name);
 
+/// Set the target uri
+void grpc_channel_stack_builder_set_target(grpc_channel_stack_builder *b,
+                                           const char *target);
+
+const char *grpc_channel_stack_builder_get_target(
+    grpc_channel_stack_builder *b);
+
 /// Attach \a transport to the builder (does not take ownership)
 void grpc_channel_stack_builder_set_transport(
     grpc_channel_stack_builder *builder, grpc_transport *transport);
@@ -60,8 +67,7 @@
 grpc_transport *grpc_channel_stack_builder_get_transport(
     grpc_channel_stack_builder *builder);
 
-/// Set channel arguments: \a args must continue to exist until after
-/// grpc_channel_stack_builder_finish returns
+/// Set channel arguments: copies args
 void grpc_channel_stack_builder_set_channel_arguments(
     grpc_channel_stack_builder *builder, const grpc_channel_args *args);
 
diff --git a/src/core/lib/iomgr/unix_sockets_posix.c b/src/core/lib/iomgr/unix_sockets_posix.c
index 42e4498..5767c85 100644
--- a/src/core/lib/iomgr/unix_sockets_posix.c
+++ b/src/core/lib/iomgr/unix_sockets_posix.c
@@ -41,6 +41,7 @@
 #include <sys/un.h>
 
 #include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
 
 void grpc_create_socketpair_if_unix(int sv[2]) {
   GPR_ASSERT(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == 0);
@@ -75,21 +76,6 @@
   }
 }
 
-int grpc_parse_unix(grpc_uri *uri, struct sockaddr_storage *addr, size_t *len) {
-  struct sockaddr_un *un = (struct sockaddr_un *)addr;
-
-  un->sun_family = AF_UNIX;
-  strcpy(un->sun_path, uri->path);
-  *len = strlen(un->sun_path) + sizeof(un->sun_family) + 1;
-
-  return 1;
-}
-
-char *grpc_unix_get_default_authority(grpc_resolver_factory *factory,
-                                      grpc_uri *uri) {
-  return gpr_strdup("localhost");
-}
-
 char *grpc_sockaddr_to_uri_unix_if_possible(const struct sockaddr *addr) {
   if (addr->sa_family != AF_UNIX) {
     return NULL;
diff --git a/src/core/lib/iomgr/unix_sockets_posix.h b/src/core/lib/iomgr/unix_sockets_posix.h
index 752cab8..6758c49 100644
--- a/src/core/lib/iomgr/unix_sockets_posix.h
+++ b/src/core/lib/iomgr/unix_sockets_posix.h
@@ -38,8 +38,6 @@
 
 #include <grpc/support/string_util.h>
 
-#include "src/core/lib/client_config/resolver_factory.h"
-#include "src/core/lib/client_config/uri_parser.h"
 #include "src/core/lib/iomgr/resolve_address.h"
 #include "src/core/lib/iomgr/sockaddr.h"
 
@@ -51,11 +49,6 @@
 
 void grpc_unlink_if_unix_domain_socket(const struct sockaddr *addr);
 
-int grpc_parse_unix(grpc_uri *uri, struct sockaddr_storage *addr, size_t *len);
-
-char *grpc_unix_get_default_authority(grpc_resolver_factory *factory,
-                                      grpc_uri *uri);
-
 char *grpc_sockaddr_to_uri_unix_if_possible(const struct sockaddr *addr);
 
 #endif /* GRPC_CORE_LIB_IOMGR_UNIX_SOCKETS_POSIX_H */
diff --git a/src/core/lib/iomgr/unix_sockets_posix_noop.c b/src/core/lib/iomgr/unix_sockets_posix_noop.c
index 43e006e..4134870 100644
--- a/src/core/lib/iomgr/unix_sockets_posix_noop.c
+++ b/src/core/lib/iomgr/unix_sockets_posix_noop.c
@@ -50,15 +50,6 @@
 
 void grpc_unlink_if_unix_domain_socket(const struct sockaddr *addr) {}
 
-int grpc_parse_unix(grpc_uri *uri, struct sockaddr_storage *addr, size_t *len) {
-  return 0;
-}
-
-char *grpc_unix_get_default_authority(grpc_resolver_factory *factory,
-                                      grpc_uri *uri) {
-  return NULL;
-}
-
 char *grpc_sockaddr_to_uri_unix_if_possible(const struct sockaddr *addr) {
   return NULL;
 }
diff --git a/src/core/lib/security/security_connector.c b/src/core/lib/security/security_connector.c
index 4d8c5dd..59863ba 100644
--- a/src/core/lib/security/security_connector.c
+++ b/src/core/lib/security/security_connector.c
@@ -42,7 +42,7 @@
 #include <grpc/support/slice_buffer.h>
 #include <grpc/support/string_util.h>
 
-#include "src/core/ext/transport/chttp2/transport/alpn.h"
+#include "src/core/ext/transport/chttp2/alpn/alpn.h"
 #include "src/core/lib/security/credentials.h"
 #include "src/core/lib/security/handshake.h"
 #include "src/core/lib/security/secure_endpoint.h"
diff --git a/src/core/lib/surface/channel.c b/src/core/lib/surface/channel.c
index 06f991b..b6b760b 100644
--- a/src/core/lib/surface/channel.c
+++ b/src/core/lib/surface/channel.c
@@ -40,7 +40,6 @@
 #include <grpc/support/log.h>
 #include <grpc/support/string_util.h>
 
-#include "src/core/lib/client_config/resolver_registry.h"
 #include "src/core/lib/iomgr/iomgr.h"
 #include "src/core/lib/support/string.h"
 #include "src/core/lib/surface/api_trace.h"
@@ -84,14 +83,26 @@
 static void destroy_channel(grpc_exec_ctx *exec_ctx, void *arg, bool success);
 
 grpc_channel *grpc_channel_create(grpc_exec_ctx *exec_ctx, const char *target,
-                                  const grpc_channel_args *args,
+                                  const grpc_channel_args *input_args,
                                   grpc_channel_stack_type channel_stack_type,
                                   grpc_transport *optional_transport) {
   bool is_client = grpc_channel_stack_type_is_client(channel_stack_type);
 
-  grpc_channel *channel = grpc_channel_init_create_stack(
-      exec_ctx, channel_stack_type, sizeof(grpc_channel), args, 1,
-      destroy_channel, NULL, optional_transport);
+  grpc_channel_stack_builder *builder = grpc_channel_stack_builder_create();
+  grpc_channel_stack_builder_set_channel_arguments(builder, input_args);
+  grpc_channel_stack_builder_set_target(builder, target);
+  grpc_channel_stack_builder_set_transport(builder, optional_transport);
+  grpc_channel *channel;
+  grpc_channel_args *args;
+  if (!grpc_channel_init_create_stack(exec_ctx, builder, channel_stack_type)) {
+    grpc_channel_stack_builder_destroy(builder);
+    return NULL;
+  } else {
+    args = grpc_channel_args_copy(
+        grpc_channel_stack_builder_get_channel_arguments(builder));
+    channel = grpc_channel_stack_builder_finish(
+        exec_ctx, builder, sizeof(grpc_channel), 1, destroy_channel, NULL);
+  }
 
   memset(channel, 0, sizeof(*channel));
   channel->target = gpr_strdup(target);
@@ -142,16 +153,7 @@
         }
       }
     }
-  }
-
-  if (channel->is_client && channel->default_authority == NULL &&
-      target != NULL) {
-    char *default_authority = grpc_get_default_authority(target);
-    if (default_authority) {
-      channel->default_authority =
-          grpc_mdelem_from_strings(":authority", default_authority);
-    }
-    gpr_free(default_authority);
+    grpc_channel_args_destroy(args);
   }
 
   return channel;
diff --git a/src/core/lib/surface/channel.h b/src/core/lib/surface/channel.h
index 68afac6..22dae93 100644
--- a/src/core/lib/surface/channel.h
+++ b/src/core/lib/surface/channel.h
@@ -35,7 +35,6 @@
 #define GRPC_CORE_LIB_SURFACE_CHANNEL_H
 
 #include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/client_config/client_channel_factory.h"
 #include "src/core/lib/surface/channel_stack_type.h"
 
 grpc_channel *grpc_channel_create(grpc_exec_ctx *exec_ctx, const char *target,
diff --git a/src/core/lib/surface/channel_init.c b/src/core/lib/surface/channel_init.c
index fc69f61..0627b34 100644
--- a/src/core/lib/surface/channel_init.c
+++ b/src/core/lib/surface/channel_init.c
@@ -122,25 +122,19 @@
   GPR_UNREACHABLE_CODE(return "UNKNOWN");
 }
 
-void *grpc_channel_init_create_stack(
-    grpc_exec_ctx *exec_ctx, grpc_channel_stack_type type, size_t prefix_bytes,
-    const grpc_channel_args *args, int initial_refs, grpc_iomgr_cb_func destroy,
-    void *destroy_arg, grpc_transport *transport) {
+bool grpc_channel_init_create_stack(grpc_exec_ctx *exec_ctx,
+                                    grpc_channel_stack_builder *builder,
+                                    grpc_channel_stack_type type) {
   GPR_ASSERT(g_finalized);
 
-  grpc_channel_stack_builder *builder = grpc_channel_stack_builder_create();
   grpc_channel_stack_builder_set_name(builder, name_for_type(type));
-  grpc_channel_stack_builder_set_channel_arguments(builder, args);
-  grpc_channel_stack_builder_set_transport(builder, transport);
 
   for (size_t i = 0; i < g_slots[type].num_slots; i++) {
     const stage_slot *slot = &g_slots[type].slots[i];
     if (!slot->fn(builder, slot->arg)) {
-      grpc_channel_stack_builder_destroy(builder);
-      return NULL;
+      return false;
     }
   }
 
-  return grpc_channel_stack_builder_finish(exec_ctx, builder, prefix_bytes,
-                                           initial_refs, destroy, destroy_arg);
+  return true;
 }
diff --git a/src/core/lib/surface/channel_init.h b/src/core/lib/surface/channel_init.h
index a4d8271..3a18a61 100644
--- a/src/core/lib/surface/channel_init.h
+++ b/src/core/lib/surface/channel_init.h
@@ -38,6 +38,8 @@
 #include "src/core/lib/surface/channel_stack_type.h"
 #include "src/core/lib/transport/transport.h"
 
+#define GRPC_CHANNEL_INIT_BUILTIN_PRIORITY 10000
+
 /// This module provides a way for plugins (and the grpc core library itself)
 /// to register mutators for channel stacks.
 /// It also provides a universal entry path to run those mutators to build
@@ -78,9 +80,8 @@
 /// \a optional_transport is either NULL or a constructed transport object
 /// Returns a pointer to the base of the memory allocated (the actual channel
 /// stack object will be prefix_bytes past that pointer)
-void *grpc_channel_init_create_stack(
-    grpc_exec_ctx *exec_ctx, grpc_channel_stack_type type, size_t prefix_bytes,
-    const grpc_channel_args *args, int initial_refs, grpc_iomgr_cb_func destroy,
-    void *destroy_arg, grpc_transport *optional_transport);
+bool grpc_channel_init_create_stack(grpc_exec_ctx *exec_ctx,
+                                    grpc_channel_stack_builder *builder,
+                                    grpc_channel_stack_type type);
 
 #endif /* GRPC_CORE_LIB_SURFACE_CHANNEL_INIT_H */
diff --git a/src/core/lib/surface/init.c b/src/core/lib/surface/init.c
index aca4ce9..ec75af6 100644
--- a/src/core/lib/surface/init.c
+++ b/src/core/lib/surface/init.c
@@ -39,17 +39,11 @@
 #include <grpc/grpc.h>
 #include <grpc/support/alloc.h>
 #include <grpc/support/time.h>
-#include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/compress_filter.h"
 #include "src/core/lib/channel/connected_channel.h"
 #include "src/core/lib/channel/http_client_filter.h"
 #include "src/core/lib/channel/http_server_filter.h"
-#include "src/core/lib/client_config/lb_policy_registry.h"
-#include "src/core/lib/client_config/resolver_registry.h"
-#include "src/core/lib/client_config/subchannel.h"
-#include "src/core/lib/client_config/subchannel_index.h"
 #include "src/core/lib/debug/trace.h"
 #include "src/core/lib/iomgr/executor.h"
 #include "src/core/lib/iomgr/iomgr.h"
@@ -65,10 +59,6 @@
 #include "src/core/lib/transport/connectivity_state.h"
 #include "src/core/lib/transport/transport_impl.h"
 
-#ifndef GRPC_DEFAULT_NAME_PREFIX
-#define GRPC_DEFAULT_NAME_PREFIX "dns:///"
-#endif
-
 /* (generated) built in registry of plugins */
 extern void grpc_register_built_in_plugins(void);
 
@@ -105,31 +95,35 @@
 }
 
 static void register_builtin_channel_init() {
-  grpc_channel_init_register_stage(GRPC_CLIENT_CHANNEL, INT_MAX, prepend_filter,
-                                   (void *)&grpc_compress_filter);
-  grpc_channel_init_register_stage(GRPC_CLIENT_DIRECT_CHANNEL, INT_MAX,
-                                   prepend_filter,
-                                   (void *)&grpc_compress_filter);
-  grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL, INT_MAX, prepend_filter,
-                                   (void *)&grpc_compress_filter);
-  grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL, INT_MAX,
-                                   maybe_add_http_filter,
-                                   (void *)&grpc_http_client_filter);
-  grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL, INT_MAX,
+  grpc_channel_init_register_stage(
+      GRPC_CLIENT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY, prepend_filter,
+      (void *)&grpc_compress_filter);
+  grpc_channel_init_register_stage(
+      GRPC_CLIENT_DIRECT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
+      prepend_filter, (void *)&grpc_compress_filter);
+  grpc_channel_init_register_stage(
+      GRPC_SERVER_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY, prepend_filter,
+      (void *)&grpc_compress_filter);
+  grpc_channel_init_register_stage(
+      GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
+      maybe_add_http_filter, (void *)&grpc_http_client_filter);
+  grpc_channel_init_register_stage(GRPC_CLIENT_SUBCHANNEL,
+                                   GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
                                    grpc_add_connected_filter, NULL);
-  grpc_channel_init_register_stage(GRPC_CLIENT_DIRECT_CHANNEL, INT_MAX,
-                                   maybe_add_http_filter,
-                                   (void *)&grpc_http_client_filter);
-  grpc_channel_init_register_stage(GRPC_CLIENT_DIRECT_CHANNEL, INT_MAX,
+  grpc_channel_init_register_stage(
+      GRPC_CLIENT_DIRECT_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
+      maybe_add_http_filter, (void *)&grpc_http_client_filter);
+  grpc_channel_init_register_stage(GRPC_CLIENT_DIRECT_CHANNEL,
+                                   GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
                                    grpc_add_connected_filter, NULL);
-  grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL, INT_MAX,
-                                   maybe_add_http_filter,
-                                   (void *)&grpc_http_server_filter);
-  grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL, INT_MAX,
+  grpc_channel_init_register_stage(
+      GRPC_SERVER_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
+      maybe_add_http_filter, (void *)&grpc_http_server_filter);
+  grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL,
+                                   GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
                                    grpc_add_connected_filter, NULL);
-  grpc_channel_init_register_stage(GRPC_CLIENT_CHANNEL, INT_MAX, append_filter,
-                                   (void *)&grpc_client_channel_filter);
-  grpc_channel_init_register_stage(GRPC_CLIENT_LAME_CHANNEL, INT_MAX,
+  grpc_channel_init_register_stage(GRPC_CLIENT_LAME_CHANNEL,
+                                   GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
                                    append_filter, (void *)&grpc_lame_filter);
   grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL, INT_MAX, prepend_filter,
                                    (void *)&grpc_server_top_filter);
@@ -161,12 +155,8 @@
     gpr_time_init();
     grpc_mdctx_global_init();
     grpc_channel_init_init();
-    grpc_lb_policy_registry_init();
-    grpc_resolver_registry_init(GRPC_DEFAULT_NAME_PREFIX);
     grpc_register_tracer("api", &grpc_api_trace);
     grpc_register_tracer("channel", &grpc_trace_channel);
-    grpc_register_tracer("http", &grpc_http_trace);
-    grpc_register_tracer("flowctl", &grpc_flowctl_trace);
     grpc_register_tracer("connectivity_state", &grpc_connectivity_state_trace);
     grpc_register_tracer("channel_stack_builder",
                          &grpc_trace_channel_stack_builder);
@@ -176,7 +166,6 @@
     grpc_tracer_init("GRPC_TRACE");
     gpr_timers_global_init();
     grpc_cq_global_init();
-    grpc_subchannel_index_init();
     for (i = 0; i < g_number_of_plugins; i++) {
       if (g_all_of_the_plugins[i].init != NULL) {
         g_all_of_the_plugins[i].init();
@@ -201,17 +190,13 @@
     grpc_executor_shutdown();
     grpc_cq_global_shutdown();
     grpc_iomgr_shutdown();
-    grpc_subchannel_index_shutdown();
     gpr_timers_global_destroy();
     grpc_tracer_shutdown();
-    grpc_resolver_registry_shutdown();
-    grpc_lb_policy_registry_shutdown();
-    for (i = 0; i < g_number_of_plugins; i++) {
+    for (i = g_number_of_plugins; i >= 0; i--) {
       if (g_all_of_the_plugins[i].destroy != NULL) {
         g_all_of_the_plugins[i].destroy();
       }
     }
-    grpc_channel_init_shutdown();
     grpc_mdctx_global_shutdown();
   }
   gpr_mu_unlock(&g_init_mu);
diff --git a/src/core/lib/transport/metadata.c b/src/core/lib/transport/metadata.c
index 2b1d32d..bf14e72 100644
--- a/src/core/lib/transport/metadata.c
+++ b/src/core/lib/transport/metadata.c
@@ -44,13 +44,14 @@
 #include <grpc/support/string_util.h>
 #include <grpc/support/time.h>
 
-#include "src/core/ext/transport/chttp2/transport/bin_encoder.h"
 #include "src/core/lib/iomgr/iomgr_internal.h"
 #include "src/core/lib/profiling/timers.h"
 #include "src/core/lib/support/murmur_hash.h"
 #include "src/core/lib/support/string.h"
 #include "src/core/lib/transport/static_metadata.h"
 
+gpr_slice (*grpc_chttp2_base64_encode_and_huffman_compress)(gpr_slice input);
+
 /* There are two kinds of mdelem and mdstr instances.
  * Static instances are declared in static_metadata.{h,c} and
  * are initialized by grpc_mdctx_global_init().
diff --git a/src/core/lib/transport/metadata.h b/src/core/lib/transport/metadata.h
index 6a02437..9641964 100644
--- a/src/core/lib/transport/metadata.h
+++ b/src/core/lib/transport/metadata.h
@@ -153,4 +153,8 @@
 void grpc_mdctx_global_init(void);
 void grpc_mdctx_global_shutdown(void);
 
+/* Implementation provided by chttp2_transport */
+extern gpr_slice (*grpc_chttp2_base64_encode_and_huffman_compress)(
+    gpr_slice input);
+
 #endif /* GRPC_CORE_LIB_TRANSPORT_METADATA_H */
diff --git a/src/core/plugin_registry/grpc_plugin_registry.c b/src/core/plugin_registry/grpc_plugin_registry.c
index 79df855..822aa6d 100644
--- a/src/core/plugin_registry/grpc_plugin_registry.c
+++ b/src/core/plugin_registry/grpc_plugin_registry.c
@@ -33,6 +33,10 @@
 
 #include <grpc/grpc.h>
 
+extern void grpc_chttp2_plugin_init(void);
+extern void grpc_chttp2_plugin_shutdown(void);
+extern void grpc_client_config_init(void);
+extern void grpc_client_config_shutdown(void);
 extern void grpc_lb_policy_pick_first_init(void);
 extern void grpc_lb_policy_pick_first_shutdown(void);
 extern void grpc_lb_policy_round_robin_init(void);
@@ -45,6 +49,10 @@
 extern void census_grpc_plugin_shutdown(void);
 
 void grpc_register_built_in_plugins(void) {
+  grpc_register_plugin(grpc_chttp2_plugin_init,
+                       grpc_chttp2_plugin_shutdown);
+  grpc_register_plugin(grpc_client_config_init,
+                       grpc_client_config_shutdown);
   grpc_register_plugin(grpc_lb_policy_pick_first_init,
                        grpc_lb_policy_pick_first_shutdown);
   grpc_register_plugin(grpc_lb_policy_round_robin_init,
diff --git a/src/core/plugin_registry/grpc_unsecure_plugin_registry.c b/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
index b3786c9..a6108ae 100644
--- a/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
+++ b/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
@@ -33,6 +33,10 @@
 
 #include <grpc/grpc.h>
 
+extern void grpc_chttp2_plugin_init(void);
+extern void grpc_chttp2_plugin_shutdown(void);
+extern void grpc_client_config_init(void);
+extern void grpc_client_config_shutdown(void);
 extern void grpc_resolver_dns_native_init(void);
 extern void grpc_resolver_dns_native_shutdown(void);
 extern void grpc_resolver_sockaddr_init(void);
@@ -45,6 +49,10 @@
 extern void census_grpc_plugin_shutdown(void);
 
 void grpc_register_built_in_plugins(void) {
+  grpc_register_plugin(grpc_chttp2_plugin_init,
+                       grpc_chttp2_plugin_shutdown);
+  grpc_register_plugin(grpc_client_config_init,
+                       grpc_client_config_shutdown);
   grpc_register_plugin(grpc_resolver_dns_native_init,
                        grpc_resolver_dns_native_shutdown);
   grpc_register_plugin(grpc_resolver_sockaddr_init,
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index 3452e3a..62a0f46 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -83,18 +83,37 @@
   'src/core/ext/census/operation.c',
   'src/core/ext/census/placeholders.c',
   'src/core/ext/census/tracing.c',
+  'src/core/ext/client_config/channel_connectivity.c',
+  'src/core/ext/client_config/client_channel.c',
+  'src/core/ext/client_config/client_channel_factory.c',
+  'src/core/ext/client_config/client_config.c',
+  'src/core/ext/client_config/client_config_plugin.c',
+  'src/core/ext/client_config/connector.c',
+  'src/core/ext/client_config/default_initial_connect_string.c',
+  'src/core/ext/client_config/initial_connect_string.c',
+  'src/core/ext/client_config/lb_policy.c',
+  'src/core/ext/client_config/lb_policy_factory.c',
+  'src/core/ext/client_config/lb_policy_registry.c',
+  'src/core/ext/client_config/resolver.c',
+  'src/core/ext/client_config/resolver_factory.c',
+  'src/core/ext/client_config/resolver_registry.c',
+  'src/core/ext/client_config/subchannel.c',
+  'src/core/ext/client_config/subchannel_call_holder.c',
+  'src/core/ext/client_config/subchannel_index.c',
+  'src/core/ext/client_config/uri_parser.c',
   'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
   'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
   'src/core/ext/lb_policy/pick_first/pick_first.c',
   'src/core/ext/lb_policy/round_robin/round_robin.c',
   'src/core/ext/resolver/dns/native/dns_resolver.c',
   'src/core/ext/resolver/sockaddr/sockaddr_resolver.c',
+  'src/core/ext/transport/chttp2/alpn/alpn.c',
   'src/core/ext/transport/chttp2/client/insecure/channel_create.c',
   'src/core/ext/transport/chttp2/client/secure/secure_channel_create.c',
   'src/core/ext/transport/chttp2/server/insecure/server_chttp2.c',
   'src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c',
-  'src/core/ext/transport/chttp2/transport/alpn.c',
   'src/core/ext/transport/chttp2/transport/bin_encoder.c',
+  'src/core/ext/transport/chttp2/transport/chttp2_plugin.c',
   'src/core/ext/transport/chttp2/transport/chttp2_transport.c',
   'src/core/ext/transport/chttp2/transport/frame_data.c',
   'src/core/ext/transport/chttp2/transport/frame_goaway.c',
@@ -117,26 +136,10 @@
   'src/core/lib/channel/channel_args.c',
   'src/core/lib/channel/channel_stack.c',
   'src/core/lib/channel/channel_stack_builder.c',
-  'src/core/lib/channel/client_channel.c',
   'src/core/lib/channel/compress_filter.c',
   'src/core/lib/channel/connected_channel.c',
   'src/core/lib/channel/http_client_filter.c',
   'src/core/lib/channel/http_server_filter.c',
-  'src/core/lib/channel/subchannel_call_holder.c',
-  'src/core/lib/client_config/client_channel_factory.c',
-  'src/core/lib/client_config/client_config.c',
-  'src/core/lib/client_config/connector.c',
-  'src/core/lib/client_config/default_initial_connect_string.c',
-  'src/core/lib/client_config/initial_connect_string.c',
-  'src/core/lib/client_config/lb_policy.c',
-  'src/core/lib/client_config/lb_policy_factory.c',
-  'src/core/lib/client_config/lb_policy_registry.c',
-  'src/core/lib/client_config/resolver.c',
-  'src/core/lib/client_config/resolver_factory.c',
-  'src/core/lib/client_config/resolver_registry.c',
-  'src/core/lib/client_config/subchannel.c',
-  'src/core/lib/client_config/subchannel_index.c',
-  'src/core/lib/client_config/uri_parser.c',
   'src/core/lib/compression/compression_algorithm.c',
   'src/core/lib/compression/message_compress.c',
   'src/core/lib/debug/trace.c',
@@ -209,7 +212,6 @@
   'src/core/lib/surface/call_details.c',
   'src/core/lib/surface/call_log_batch.c',
   'src/core/lib/surface/channel.c',
-  'src/core/lib/surface/channel_connectivity.c',
   'src/core/lib/surface/channel_init.c',
   'src/core/lib/surface/channel_ping.c',
   'src/core/lib/surface/channel_stack_type.c',
diff --git a/templates/tools/run_tests/sources_and_headers.json.template b/templates/tools/run_tests/sources_and_headers.json.template
index 18b9bc2..0755982 100644
--- a/templates/tools/run_tests/sources_and_headers.json.template
+++ b/templates/tools/run_tests/sources_and_headers.json.template
@@ -12,11 +12,13 @@
         out.extend(fmt % name for fmt in ['%s.grpc.pb.h', '%s.pb.h'])
     return out
 
-  def all_targets(targets, libs):
+  def all_targets(targets, libs, filegroups):
     for tgt in targets:
       yield ('target', tgt)
     for tgt in libs:
       yield ('lib', tgt)
+    for tgt in filegroups:
+      yield ('filegroup', tgt)
 
   def no_protos_filter(src):
   	return os.path.splitext(src)[1] != '.proto'
@@ -38,13 +40,15 @@
                  "language": tgt.language,
                  "third_party": tgt.boringssl or tgt.zlib,
                  "src": sorted(
-                     filter_srcs(tgt.src, (no_protos_filter, no_third_party_filter)) +
-                     filter_srcs(tgt.get('public_headers', []), (no_protos_filter, no_third_party_filter)) +
-                     filter_srcs(tgt.get('headers', []), (no_third_party_filter,))),
+                     filter_srcs(tgt.own_src, (no_protos_filter, no_third_party_filter)) +
+                     filter_srcs(tgt.own_public_headers, (no_protos_filter, no_third_party_filter)) +
+                     filter_srcs(tgt.own_headers, (no_third_party_filter,))),
                  "headers": sorted(
-                     tgt.get('public_headers', []) +
-                     tgt.get('headers', []) +
-                     proto_headers(tgt.src)),
-                 "deps": sorted(tgt.get('deps', []))}
-                for typ, tgt in all_targets(targets, libs)],
+                     tgt.own_public_headers +
+                     tgt.own_headers +
+                     proto_headers(tgt.own_src)),
+                 "deps": sorted(tgt.get('deps', []) +
+                                tgt.get('uses', []) +
+                                tgt.get('filegroups', []))}
+                for typ, tgt in all_targets(targets, libs, filegroups)],
                sort_keys=True, indent=2)}
diff --git a/test/core/bad_ssl/servers/alpn.c b/test/core/bad_ssl/servers/alpn.c
index 8b69140..007fa25 100644
--- a/test/core/bad_ssl/servers/alpn.c
+++ b/test/core/bad_ssl/servers/alpn.c
@@ -38,7 +38,7 @@
 #include <grpc/support/log.h>
 #include <grpc/support/useful.h>
 
-#include "src/core/ext/transport/chttp2/transport/alpn.h"
+#include "src/core/ext/transport/chttp2/alpn/alpn.h"
 #include "test/core/bad_ssl/server_common.h"
 #include "test/core/end2end/data/ssl_test_data.h"
 
diff --git a/test/core/client_config/lb_policies_test.c b/test/core/client_config/lb_policies_test.c
index b819f2b..e766672 100644
--- a/test/core/client_config/lb_policies_test.c
+++ b/test/core/client_config/lb_policies_test.c
@@ -41,9 +41,9 @@
 #include <grpc/support/string_util.h>
 #include <grpc/support/time.h>
 
+#include "src/core/ext/client_config/client_channel.h"
+#include "src/core/ext/client_config/lb_policy_registry.h"
 #include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/channel/client_channel.h"
-#include "src/core/lib/client_config/lb_policy_registry.h"
 #include "src/core/lib/support/string.h"
 #include "src/core/lib/surface/channel.h"
 #include "src/core/lib/surface/server.h"
diff --git a/test/core/client_config/resolvers/dns_resolver_connectivity_test.c b/test/core/client_config/resolvers/dns_resolver_connectivity_test.c
index bcd9fca..2322aa6 100644
--- a/test/core/client_config/resolvers/dns_resolver_connectivity_test.c
+++ b/test/core/client_config/resolvers/dns_resolver_connectivity_test.c
@@ -36,7 +36,7 @@
 #include <grpc/grpc.h>
 #include <grpc/support/alloc.h>
 
-#include "src/core/lib/client_config/resolver_registry.h"
+#include "src/core/ext/client_config/resolver_registry.h"
 #include "src/core/lib/iomgr/resolve_address.h"
 #include "src/core/lib/iomgr/timer.h"
 #include "test/core/util/test_config.h"
diff --git a/test/core/client_config/resolvers/dns_resolver_test.c b/test/core/client_config/resolvers/dns_resolver_test.c
index 6a9c06e..21dc99c 100644
--- a/test/core/client_config/resolvers/dns_resolver_test.c
+++ b/test/core/client_config/resolvers/dns_resolver_test.c
@@ -35,7 +35,7 @@
 
 #include <grpc/support/log.h>
 
-#include "src/core/lib/client_config/resolver_registry.h"
+#include "src/core/ext/client_config/resolver_registry.h"
 #include "test/core/util/test_config.h"
 
 static void client_channel_factory_ref(grpc_client_channel_factory *scv) {}
diff --git a/test/core/client_config/resolvers/sockaddr_resolver_test.c b/test/core/client_config/resolvers/sockaddr_resolver_test.c
index 99b3ca0..b11546b 100644
--- a/test/core/client_config/resolvers/sockaddr_resolver_test.c
+++ b/test/core/client_config/resolvers/sockaddr_resolver_test.c
@@ -35,7 +35,7 @@
 
 #include <grpc/support/log.h>
 
-#include "src/core/lib/client_config/resolver_registry.h"
+#include "src/core/ext/client_config/resolver_registry.h"
 #include "test/core/util/test_config.h"
 
 static void client_channel_factory_ref(grpc_client_channel_factory *scv) {}
diff --git a/test/core/client_config/set_initial_connect_string_test.c b/test/core/client_config/set_initial_connect_string_test.c
index 3ca0373..83058d9 100644
--- a/test/core/client_config/set_initial_connect_string_test.c
+++ b/test/core/client_config/set_initial_connect_string_test.c
@@ -38,7 +38,7 @@
 #include <grpc/support/log.h>
 #include <grpc/support/slice.h>
 
-#include "src/core/lib/client_config/initial_connect_string.h"
+#include "src/core/ext/client_config/initial_connect_string.h"
 #include "src/core/lib/iomgr/sockaddr.h"
 #include "src/core/lib/security/credentials.h"
 #include "src/core/lib/support/string.h"
diff --git a/test/core/client_config/uri_fuzzer_test.c b/test/core/client_config/uri_fuzzer_test.c
index d50a05d..eb976fc 100644
--- a/test/core/client_config/uri_fuzzer_test.c
+++ b/test/core/client_config/uri_fuzzer_test.c
@@ -36,7 +36,7 @@
 
 #include <grpc/support/alloc.h>
 
-#include "src/core/lib/client_config/uri_parser.h"
+#include "src/core/ext/client_config/uri_parser.h"
 
 int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   char *s = gpr_malloc(size + 1);
diff --git a/test/core/client_config/uri_parser_test.c b/test/core/client_config/uri_parser_test.c
index f87aa81..323e8b6 100644
--- a/test/core/client_config/uri_parser_test.c
+++ b/test/core/client_config/uri_parser_test.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/client_config/uri_parser.h"
+#include "src/core/ext/client_config/uri_parser.h"
 
 #include <string.h>
 
diff --git a/test/core/end2end/fixtures/h2_census.c b/test/core/end2end/fixtures/h2_census.c
index 9d41ff2..eb66aff 100644
--- a/test/core/end2end/fixtures/h2_census.c
+++ b/test/core/end2end/fixtures/h2_census.c
@@ -41,9 +41,9 @@
 #include <grpc/support/sync.h>
 #include <grpc/support/thd.h>
 #include <grpc/support/useful.h>
+#include "src/core/ext/client_config/client_channel.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/connected_channel.h"
 #include "src/core/lib/channel/http_server_filter.h"
 #include "src/core/lib/surface/channel.h"
diff --git a/test/core/end2end/fixtures/h2_compress.c b/test/core/end2end/fixtures/h2_compress.c
index 55355b5..1b53381 100644
--- a/test/core/end2end/fixtures/h2_compress.c
+++ b/test/core/end2end/fixtures/h2_compress.c
@@ -41,9 +41,9 @@
 #include <grpc/support/sync.h>
 #include <grpc/support/thd.h>
 #include <grpc/support/useful.h>
+#include "src/core/ext/client_config/client_channel.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
 #include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/connected_channel.h"
 #include "src/core/lib/channel/http_server_filter.h"
 #include "src/core/lib/surface/channel.h"
diff --git a/test/core/end2end/fixtures/h2_full+pipe.c b/test/core/end2end/fixtures/h2_full+pipe.c
index a3e2196..e167534 100644
--- a/test/core/end2end/fixtures/h2_full+pipe.c
+++ b/test/core/end2end/fixtures/h2_full+pipe.c
@@ -41,8 +41,8 @@
 #include <grpc/support/sync.h>
 #include <grpc/support/thd.h>
 #include <grpc/support/useful.h>
+#include "src/core/ext/client_config/client_channel.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
-#include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/connected_channel.h"
 #include "src/core/lib/channel/http_server_filter.h"
 #include "src/core/lib/iomgr/wakeup_fd_posix.h"
diff --git a/test/core/end2end/fixtures/h2_full+trace.c b/test/core/end2end/fixtures/h2_full+trace.c
index 986a06b..4bb0bf3 100644
--- a/test/core/end2end/fixtures/h2_full+trace.c
+++ b/test/core/end2end/fixtures/h2_full+trace.c
@@ -41,8 +41,8 @@
 #include <grpc/support/sync.h>
 #include <grpc/support/thd.h>
 #include <grpc/support/useful.h>
+#include "src/core/ext/client_config/client_channel.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
-#include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/connected_channel.h"
 #include "src/core/lib/channel/http_server_filter.h"
 #include "src/core/lib/support/env.h"
diff --git a/test/core/end2end/fixtures/h2_full.c b/test/core/end2end/fixtures/h2_full.c
index d0797e0..6182f59 100644
--- a/test/core/end2end/fixtures/h2_full.c
+++ b/test/core/end2end/fixtures/h2_full.c
@@ -41,8 +41,8 @@
 #include <grpc/support/sync.h>
 #include <grpc/support/thd.h>
 #include <grpc/support/useful.h>
+#include "src/core/ext/client_config/client_channel.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
-#include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/connected_channel.h"
 #include "src/core/lib/channel/http_server_filter.h"
 #include "src/core/lib/surface/channel.h"
diff --git a/test/core/end2end/fixtures/h2_proxy.c b/test/core/end2end/fixtures/h2_proxy.c
index 4650da9..7eb42c4 100644
--- a/test/core/end2end/fixtures/h2_proxy.c
+++ b/test/core/end2end/fixtures/h2_proxy.c
@@ -41,8 +41,8 @@
 #include <grpc/support/sync.h>
 #include <grpc/support/thd.h>
 #include <grpc/support/useful.h>
+#include "src/core/ext/client_config/client_channel.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
-#include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/connected_channel.h"
 #include "src/core/lib/channel/http_server_filter.h"
 #include "src/core/lib/surface/channel.h"
diff --git a/test/core/end2end/fixtures/h2_sockpair+trace.c b/test/core/end2end/fixtures/h2_sockpair+trace.c
index 9fdceab..f88a778 100644
--- a/test/core/end2end/fixtures/h2_sockpair+trace.c
+++ b/test/core/end2end/fixtures/h2_sockpair+trace.c
@@ -40,8 +40,8 @@
 #include <grpc/support/sync.h>
 #include <grpc/support/thd.h>
 #include <grpc/support/useful.h>
+#include "src/core/ext/client_config/client_channel.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
-#include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/compress_filter.h"
 #include "src/core/lib/channel/connected_channel.h"
 #include "src/core/lib/channel/http_client_filter.h"
diff --git a/test/core/end2end/fixtures/h2_sockpair.c b/test/core/end2end/fixtures/h2_sockpair.c
index 8477715..5a7aa50 100644
--- a/test/core/end2end/fixtures/h2_sockpair.c
+++ b/test/core/end2end/fixtures/h2_sockpair.c
@@ -40,8 +40,8 @@
 #include <grpc/support/sync.h>
 #include <grpc/support/thd.h>
 #include <grpc/support/useful.h>
+#include "src/core/ext/client_config/client_channel.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
-#include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/compress_filter.h"
 #include "src/core/lib/channel/connected_channel.h"
 #include "src/core/lib/channel/http_client_filter.h"
diff --git a/test/core/end2end/fixtures/h2_sockpair_1byte.c b/test/core/end2end/fixtures/h2_sockpair_1byte.c
index 6b6ca19..18f3dc2 100644
--- a/test/core/end2end/fixtures/h2_sockpair_1byte.c
+++ b/test/core/end2end/fixtures/h2_sockpair_1byte.c
@@ -40,8 +40,8 @@
 #include <grpc/support/sync.h>
 #include <grpc/support/thd.h>
 #include <grpc/support/useful.h>
+#include "src/core/ext/client_config/client_channel.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
-#include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/compress_filter.h"
 #include "src/core/lib/channel/connected_channel.h"
 #include "src/core/lib/channel/http_client_filter.h"
diff --git a/test/core/end2end/fixtures/h2_uds.c b/test/core/end2end/fixtures/h2_uds.c
index 9216860..cdbb4ec 100644
--- a/test/core/end2end/fixtures/h2_uds.c
+++ b/test/core/end2end/fixtures/h2_uds.c
@@ -44,8 +44,8 @@
 #include <grpc/support/sync.h>
 #include <grpc/support/thd.h>
 #include <grpc/support/useful.h>
+#include "src/core/ext/client_config/client_channel.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
-#include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/connected_channel.h"
 #include "src/core/lib/channel/http_server_filter.h"
 #include "src/core/lib/support/string.h"
diff --git a/test/core/surface/channel_create_test.c b/test/core/surface/channel_create_test.c
index 95b4eaf..5ff66bd 100644
--- a/test/core/surface/channel_create_test.c
+++ b/test/core/surface/channel_create_test.c
@@ -33,7 +33,7 @@
 
 #include <grpc/grpc.h>
 #include <grpc/support/log.h>
-#include "src/core/lib/client_config/resolver_registry.h"
+#include "src/core/ext/client_config/resolver_registry.h"
 #include "test/core/util/test_config.h"
 
 void test_unknown_scheme_target(void) {
diff --git a/test/core/surface/secure_channel_create_test.c b/test/core/surface/secure_channel_create_test.c
index eb710cb..80419ef 100644
--- a/test/core/surface/secure_channel_create_test.c
+++ b/test/core/surface/secure_channel_create_test.c
@@ -36,7 +36,7 @@
 #include <grpc/grpc.h>
 #include <grpc/grpc_security.h>
 #include <grpc/support/log.h>
-#include "src/core/lib/client_config/resolver_registry.h"
+#include "src/core/ext/client_config/resolver_registry.h"
 #include "src/core/lib/security/credentials.h"
 #include "src/core/lib/security/security_connector.h"
 #include "src/core/lib/surface/channel.h"
diff --git a/test/core/transport/chttp2/alpn_test.c b/test/core/transport/chttp2/alpn_test.c
index 75d8ee5..48064ec 100644
--- a/test/core/transport/chttp2/alpn_test.c
+++ b/test/core/transport/chttp2/alpn_test.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/ext/transport/chttp2/transport/alpn.h"
+#include "src/core/ext/transport/chttp2/alpn/alpn.h"
 
 #include <grpc/support/log.h>
 #include "test/core/util/test_config.h"
diff --git a/test/core/transport/chttp2/bin_encoder_test.c b/test/core/transport/chttp2/bin_encoder_test.c
index 96efb4d..095861e 100644
--- a/test/core/transport/chttp2/bin_encoder_test.c
+++ b/test/core/transport/chttp2/bin_encoder_test.c
@@ -83,7 +83,7 @@
   gpr_slice input = gpr_slice_from_copied_buffer(s, len);
   gpr_slice base64 = grpc_chttp2_base64_encode(input);
   gpr_slice expect = grpc_chttp2_huffman_compress(base64);
-  gpr_slice got = grpc_chttp2_base64_encode_and_huffman_compress(input);
+  gpr_slice got = grpc_chttp2_base64_encode_and_huffman_compress_impl(input);
   if (0 != gpr_slice_cmp(expect, got)) {
     char *t = gpr_dump_slice(input, GPR_DUMP_HEX | GPR_DUMP_ASCII);
     char *e = gpr_dump_slice(expect, GPR_DUMP_HEX | GPR_DUMP_ASCII);
diff --git a/tools/buildgen/plugins/expand_filegroups.py b/tools/buildgen/plugins/expand_filegroups.py
index 14cb616..735d0c9 100755
--- a/tools/buildgen/plugins/expand_filegroups.py
+++ b/tools/buildgen/plugins/expand_filegroups.py
@@ -42,7 +42,14 @@
   return False
 
 
-FILEGROUP_LISTS = ['src', 'headers', 'public_headers']
+FILEGROUP_LISTS = ['src', 'headers', 'public_headers', 'deps']
+
+
+FILEGROUP_DEFAULTS = {
+  'language': 'c',
+  'boringssl': False,
+  'zlib': False,
+}
 
 
 def mako_plugin(dictionary):
@@ -57,7 +64,15 @@
   filegroups_list = dictionary.get('filegroups')
   filegroups = {}
 
-  todo = filegroups_list[:]
+  for fg in filegroups_list:
+    for lst in FILEGROUP_LISTS:
+      fg[lst] = fg.get(lst, [])
+      fg['own_%s' % lst] = list(fg[lst])
+    for attr, val in FILEGROUP_DEFAULTS.iteritems():
+      if attr not in fg:
+        fg[attr] = val
+
+  todo = list(filegroups_list)
   skips = 0
 
   while todo:
@@ -96,9 +111,18 @@
     for lst in FILEGROUP_LISTS:
       fg[lst] = sorted(list(set(fg.get(lst, []))))
 
+  for tgt in dictionary['targets']:
+    for lst in FILEGROUP_LISTS:
+      tgt[lst] = tgt.get(lst, [])
+      tgt['own_%s' % lst] = list(tgt[lst])
+
   for lib in libs:
     assert 'plugins' not in lib
     plugins = []
+    for lst in FILEGROUP_LISTS:
+      vals = lib.get(lst, [])
+      lib[lst] = list(vals)
+      lib['own_%s' % lst] = list(vals)
     for fg_name in lib.get('filegroups', []):
       fg = filegroups[fg_name]
       for plugin in fg['plugins']:
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index fc841e8..14d8b6d 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -779,9 +779,24 @@
 src/core/ext/census/grpc_filter.h \
 src/core/ext/census/mlog.h \
 src/core/ext/census/rpc_metric_id.h \
+src/core/ext/client_config/client_channel.h \
+src/core/ext/client_config/client_channel_factory.h \
+src/core/ext/client_config/client_config.h \
+src/core/ext/client_config/connector.h \
+src/core/ext/client_config/initial_connect_string.h \
+src/core/ext/client_config/lb_policy.h \
+src/core/ext/client_config/lb_policy_factory.h \
+src/core/ext/client_config/lb_policy_registry.h \
+src/core/ext/client_config/resolver.h \
+src/core/ext/client_config/resolver_factory.h \
+src/core/ext/client_config/resolver_registry.h \
+src/core/ext/client_config/subchannel.h \
+src/core/ext/client_config/subchannel_call_holder.h \
+src/core/ext/client_config/subchannel_index.h \
+src/core/ext/client_config/uri_parser.h \
 src/core/ext/lb_policy/grpclb/load_balancer_api.h \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h \
-src/core/ext/transport/chttp2/transport/alpn.h \
+src/core/ext/transport/chttp2/alpn/alpn.h \
 src/core/ext/transport/chttp2/transport/bin_encoder.h \
 src/core/ext/transport/chttp2/transport/chttp2_transport.h \
 src/core/ext/transport/chttp2/transport/frame.h \
@@ -805,26 +820,11 @@
 src/core/lib/channel/channel_args.h \
 src/core/lib/channel/channel_stack.h \
 src/core/lib/channel/channel_stack_builder.h \
-src/core/lib/channel/client_channel.h \
 src/core/lib/channel/compress_filter.h \
 src/core/lib/channel/connected_channel.h \
 src/core/lib/channel/context.h \
 src/core/lib/channel/http_client_filter.h \
 src/core/lib/channel/http_server_filter.h \
-src/core/lib/channel/subchannel_call_holder.h \
-src/core/lib/client_config/client_channel_factory.h \
-src/core/lib/client_config/client_config.h \
-src/core/lib/client_config/connector.h \
-src/core/lib/client_config/initial_connect_string.h \
-src/core/lib/client_config/lb_policy.h \
-src/core/lib/client_config/lb_policy_factory.h \
-src/core/lib/client_config/lb_policy_registry.h \
-src/core/lib/client_config/resolver.h \
-src/core/lib/client_config/resolver_factory.h \
-src/core/lib/client_config/resolver_registry.h \
-src/core/lib/client_config/subchannel.h \
-src/core/lib/client_config/subchannel_index.h \
-src/core/lib/client_config/uri_parser.h \
 src/core/lib/compression/algorithm_metadata.h \
 src/core/lib/compression/message_compress.h \
 src/core/lib/debug/trace.h \
@@ -917,18 +917,37 @@
 src/core/ext/census/operation.c \
 src/core/ext/census/placeholders.c \
 src/core/ext/census/tracing.c \
+src/core/ext/client_config/channel_connectivity.c \
+src/core/ext/client_config/client_channel.c \
+src/core/ext/client_config/client_channel_factory.c \
+src/core/ext/client_config/client_config.c \
+src/core/ext/client_config/client_config_plugin.c \
+src/core/ext/client_config/connector.c \
+src/core/ext/client_config/default_initial_connect_string.c \
+src/core/ext/client_config/initial_connect_string.c \
+src/core/ext/client_config/lb_policy.c \
+src/core/ext/client_config/lb_policy_factory.c \
+src/core/ext/client_config/lb_policy_registry.c \
+src/core/ext/client_config/resolver.c \
+src/core/ext/client_config/resolver_factory.c \
+src/core/ext/client_config/resolver_registry.c \
+src/core/ext/client_config/subchannel.c \
+src/core/ext/client_config/subchannel_call_holder.c \
+src/core/ext/client_config/subchannel_index.c \
+src/core/ext/client_config/uri_parser.c \
 src/core/ext/lb_policy/grpclb/load_balancer_api.c \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
 src/core/ext/lb_policy/pick_first/pick_first.c \
 src/core/ext/lb_policy/round_robin/round_robin.c \
 src/core/ext/resolver/dns/native/dns_resolver.c \
 src/core/ext/resolver/sockaddr/sockaddr_resolver.c \
+src/core/ext/transport/chttp2/alpn/alpn.c \
 src/core/ext/transport/chttp2/client/insecure/channel_create.c \
 src/core/ext/transport/chttp2/client/secure/secure_channel_create.c \
 src/core/ext/transport/chttp2/server/insecure/server_chttp2.c \
 src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c \
-src/core/ext/transport/chttp2/transport/alpn.c \
 src/core/ext/transport/chttp2/transport/bin_encoder.c \
+src/core/ext/transport/chttp2/transport/chttp2_plugin.c \
 src/core/ext/transport/chttp2/transport/chttp2_transport.c \
 src/core/ext/transport/chttp2/transport/frame_data.c \
 src/core/ext/transport/chttp2/transport/frame_goaway.c \
@@ -951,26 +970,10 @@
 src/core/lib/channel/channel_args.c \
 src/core/lib/channel/channel_stack.c \
 src/core/lib/channel/channel_stack_builder.c \
-src/core/lib/channel/client_channel.c \
 src/core/lib/channel/compress_filter.c \
 src/core/lib/channel/connected_channel.c \
 src/core/lib/channel/http_client_filter.c \
 src/core/lib/channel/http_server_filter.c \
-src/core/lib/channel/subchannel_call_holder.c \
-src/core/lib/client_config/client_channel_factory.c \
-src/core/lib/client_config/client_config.c \
-src/core/lib/client_config/connector.c \
-src/core/lib/client_config/default_initial_connect_string.c \
-src/core/lib/client_config/initial_connect_string.c \
-src/core/lib/client_config/lb_policy.c \
-src/core/lib/client_config/lb_policy_factory.c \
-src/core/lib/client_config/lb_policy_registry.c \
-src/core/lib/client_config/resolver.c \
-src/core/lib/client_config/resolver_factory.c \
-src/core/lib/client_config/resolver_registry.c \
-src/core/lib/client_config/subchannel.c \
-src/core/lib/client_config/subchannel_index.c \
-src/core/lib/client_config/uri_parser.c \
 src/core/lib/compression/compression_algorithm.c \
 src/core/lib/compression/message_compress.c \
 src/core/lib/debug/trace.c \
@@ -1043,7 +1046,6 @@
 src/core/lib/surface/call_details.c \
 src/core/lib/surface/call_log_batch.c \
 src/core/lib/surface/channel.c \
-src/core/lib/surface/channel_connectivity.c \
 src/core/lib/surface/channel_init.c \
 src/core/lib/surface/channel_ping.c \
 src/core/lib/surface/channel_stack_type.c \
diff --git a/tools/gource/gource.sh b/tools/gource/gource.sh
index 167a256..bf6bf0e 100755
--- a/tools/gource/gource.sh
+++ b/tools/gource/gource.sh
@@ -28,4 +28,4 @@
 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-gource -c 4 -s 0.1 --max-file-lag 0.05 --max-files 0 -e 0.01 --hide filenames,dirnames --file-filter 'doc/ref|vsprojects/vcxproj' $*
+gource -c 4 -s 0.1 --max-file-lag 0.05 --max-files 0 -e 0.01 --file-idle-time 1000000 --hide filenames,dirnames $*
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 7dcd2da..e4f4cc3 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -3888,165 +3888,13 @@
     "type": "target"
   }, 
   {
-    "deps": [], 
-    "headers": [
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h", 
-      "include/grpc/support/alloc.h", 
-      "include/grpc/support/atm.h", 
-      "include/grpc/support/atm_gcc_atomic.h", 
-      "include/grpc/support/atm_gcc_sync.h", 
-      "include/grpc/support/atm_win32.h", 
-      "include/grpc/support/avl.h", 
-      "include/grpc/support/cmdline.h", 
-      "include/grpc/support/cpu.h", 
-      "include/grpc/support/histogram.h", 
-      "include/grpc/support/host_port.h", 
-      "include/grpc/support/log.h", 
-      "include/grpc/support/log_win32.h", 
-      "include/grpc/support/port_platform.h", 
-      "include/grpc/support/slice.h", 
-      "include/grpc/support/slice_buffer.h", 
-      "include/grpc/support/string_util.h", 
-      "include/grpc/support/subprocess.h", 
-      "include/grpc/support/sync.h", 
-      "include/grpc/support/sync_generic.h", 
-      "include/grpc/support/sync_posix.h", 
-      "include/grpc/support/sync_win32.h", 
-      "include/grpc/support/thd.h", 
-      "include/grpc/support/time.h", 
-      "include/grpc/support/tls.h", 
-      "include/grpc/support/tls_gcc.h", 
-      "include/grpc/support/tls_msvc.h", 
-      "include/grpc/support/tls_pthread.h", 
-      "include/grpc/support/useful.h", 
-      "src/core/lib/profiling/timers.h", 
-      "src/core/lib/support/backoff.h", 
-      "src/core/lib/support/block_annotate.h", 
-      "src/core/lib/support/env.h", 
-      "src/core/lib/support/load_file.h", 
-      "src/core/lib/support/murmur_hash.h", 
-      "src/core/lib/support/stack_lockfree.h", 
-      "src/core/lib/support/string.h", 
-      "src/core/lib/support/string_win32.h", 
-      "src/core/lib/support/thd_internal.h", 
-      "src/core/lib/support/time_precise.h", 
-      "src/core/lib/support/tmpfile.h"
+    "deps": [
+      "gpr_base"
     ], 
+    "headers": [], 
     "language": "c", 
     "name": "gpr", 
-    "src": [
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h", 
-      "include/grpc/support/alloc.h", 
-      "include/grpc/support/atm.h", 
-      "include/grpc/support/atm_gcc_atomic.h", 
-      "include/grpc/support/atm_gcc_sync.h", 
-      "include/grpc/support/atm_win32.h", 
-      "include/grpc/support/avl.h", 
-      "include/grpc/support/cmdline.h", 
-      "include/grpc/support/cpu.h", 
-      "include/grpc/support/histogram.h", 
-      "include/grpc/support/host_port.h", 
-      "include/grpc/support/log.h", 
-      "include/grpc/support/log_win32.h", 
-      "include/grpc/support/port_platform.h", 
-      "include/grpc/support/slice.h", 
-      "include/grpc/support/slice_buffer.h", 
-      "include/grpc/support/string_util.h", 
-      "include/grpc/support/subprocess.h", 
-      "include/grpc/support/sync.h", 
-      "include/grpc/support/sync_generic.h", 
-      "include/grpc/support/sync_posix.h", 
-      "include/grpc/support/sync_win32.h", 
-      "include/grpc/support/thd.h", 
-      "include/grpc/support/time.h", 
-      "include/grpc/support/tls.h", 
-      "include/grpc/support/tls_gcc.h", 
-      "include/grpc/support/tls_msvc.h", 
-      "include/grpc/support/tls_pthread.h", 
-      "include/grpc/support/useful.h", 
-      "src/core/lib/profiling/basic_timers.c", 
-      "src/core/lib/profiling/stap_timers.c", 
-      "src/core/lib/profiling/timers.h", 
-      "src/core/lib/support/alloc.c", 
-      "src/core/lib/support/avl.c", 
-      "src/core/lib/support/backoff.c", 
-      "src/core/lib/support/backoff.h", 
-      "src/core/lib/support/block_annotate.h", 
-      "src/core/lib/support/cmdline.c", 
-      "src/core/lib/support/cpu_iphone.c", 
-      "src/core/lib/support/cpu_linux.c", 
-      "src/core/lib/support/cpu_posix.c", 
-      "src/core/lib/support/cpu_windows.c", 
-      "src/core/lib/support/env.h", 
-      "src/core/lib/support/env_linux.c", 
-      "src/core/lib/support/env_posix.c", 
-      "src/core/lib/support/env_win32.c", 
-      "src/core/lib/support/histogram.c", 
-      "src/core/lib/support/host_port.c", 
-      "src/core/lib/support/load_file.c", 
-      "src/core/lib/support/load_file.h", 
-      "src/core/lib/support/log.c", 
-      "src/core/lib/support/log_android.c", 
-      "src/core/lib/support/log_linux.c", 
-      "src/core/lib/support/log_posix.c", 
-      "src/core/lib/support/log_win32.c", 
-      "src/core/lib/support/murmur_hash.c", 
-      "src/core/lib/support/murmur_hash.h", 
-      "src/core/lib/support/slice.c", 
-      "src/core/lib/support/slice_buffer.c", 
-      "src/core/lib/support/stack_lockfree.c", 
-      "src/core/lib/support/stack_lockfree.h", 
-      "src/core/lib/support/string.c", 
-      "src/core/lib/support/string.h", 
-      "src/core/lib/support/string_posix.c", 
-      "src/core/lib/support/string_win32.c", 
-      "src/core/lib/support/string_win32.h", 
-      "src/core/lib/support/subprocess_posix.c", 
-      "src/core/lib/support/subprocess_windows.c", 
-      "src/core/lib/support/sync.c", 
-      "src/core/lib/support/sync_posix.c", 
-      "src/core/lib/support/sync_win32.c", 
-      "src/core/lib/support/thd.c", 
-      "src/core/lib/support/thd_internal.h", 
-      "src/core/lib/support/thd_posix.c", 
-      "src/core/lib/support/thd_win32.c", 
-      "src/core/lib/support/time.c", 
-      "src/core/lib/support/time_posix.c", 
-      "src/core/lib/support/time_precise.c", 
-      "src/core/lib/support/time_precise.h", 
-      "src/core/lib/support/time_win32.c", 
-      "src/core/lib/support/tls_pthread.c", 
-      "src/core/lib/support/tmpfile.h", 
-      "src/core/lib/support/tmpfile_posix.c", 
-      "src/core/lib/support/tmpfile_win32.c", 
-      "src/core/lib/support/wrap_memcpy.c"
-    ], 
+    "src": [], 
     "third_party": false, 
     "type": "lib"
   }, 
@@ -4068,516 +3916,39 @@
   }, 
   {
     "deps": [
-      "gpr"
+      "census", 
+      "gpr", 
+      "grpc_base", 
+      "grpc_codegen", 
+      "grpc_lb_policy_grpclb", 
+      "grpc_lb_policy_pick_first", 
+      "grpc_lb_policy_round_robin", 
+      "grpc_resolver_dns_native", 
+      "grpc_resolver_sockaddr", 
+      "grpc_secure", 
+      "grpc_transport_chttp2_client_insecure", 
+      "grpc_transport_chttp2_client_secure", 
+      "grpc_transport_chttp2_server_insecure", 
+      "grpc_transport_chttp2_server_secure", 
+      "nanopb"
     ], 
-    "headers": [
-      "include/grpc/byte_buffer.h", 
-      "include/grpc/byte_buffer_reader.h", 
-      "include/grpc/census.h", 
-      "include/grpc/compression.h", 
-      "include/grpc/grpc.h", 
-      "include/grpc/grpc_security.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/status.h", 
-      "src/core/ext/census/aggregation.h", 
-      "src/core/ext/census/census_interface.h", 
-      "src/core/ext/census/census_rpc_stats.h", 
-      "src/core/ext/census/grpc_filter.h", 
-      "src/core/ext/census/mlog.h", 
-      "src/core/ext/census/rpc_metric_id.h", 
-      "src/core/ext/lb_policy/grpclb/load_balancer_api.h", 
-      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", 
-      "src/core/ext/transport/chttp2/transport/alpn.h", 
-      "src/core/ext/transport/chttp2/transport/bin_encoder.h", 
-      "src/core/ext/transport/chttp2/transport/chttp2_transport.h", 
-      "src/core/ext/transport/chttp2/transport/frame.h", 
-      "src/core/ext/transport/chttp2/transport/frame_data.h", 
-      "src/core/ext/transport/chttp2/transport/frame_goaway.h", 
-      "src/core/ext/transport/chttp2/transport/frame_ping.h", 
-      "src/core/ext/transport/chttp2/transport/frame_rst_stream.h", 
-      "src/core/ext/transport/chttp2/transport/frame_settings.h", 
-      "src/core/ext/transport/chttp2/transport/frame_window_update.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_encoder.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_parser.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_table.h", 
-      "src/core/ext/transport/chttp2/transport/http2_errors.h", 
-      "src/core/ext/transport/chttp2/transport/huffsyms.h", 
-      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
-      "src/core/ext/transport/chttp2/transport/internal.h", 
-      "src/core/ext/transport/chttp2/transport/status_conversion.h", 
-      "src/core/ext/transport/chttp2/transport/stream_map.h", 
-      "src/core/ext/transport/chttp2/transport/timeout_encoding.h", 
-      "src/core/ext/transport/chttp2/transport/varint.h", 
-      "src/core/lib/channel/channel_args.h", 
-      "src/core/lib/channel/channel_stack.h", 
-      "src/core/lib/channel/channel_stack_builder.h", 
-      "src/core/lib/channel/client_channel.h", 
-      "src/core/lib/channel/compress_filter.h", 
-      "src/core/lib/channel/connected_channel.h", 
-      "src/core/lib/channel/context.h", 
-      "src/core/lib/channel/http_client_filter.h", 
-      "src/core/lib/channel/http_server_filter.h", 
-      "src/core/lib/channel/subchannel_call_holder.h", 
-      "src/core/lib/client_config/client_channel_factory.h", 
-      "src/core/lib/client_config/client_config.h", 
-      "src/core/lib/client_config/connector.h", 
-      "src/core/lib/client_config/initial_connect_string.h", 
-      "src/core/lib/client_config/lb_policy.h", 
-      "src/core/lib/client_config/lb_policy_factory.h", 
-      "src/core/lib/client_config/lb_policy_registry.h", 
-      "src/core/lib/client_config/resolver.h", 
-      "src/core/lib/client_config/resolver_factory.h", 
-      "src/core/lib/client_config/resolver_registry.h", 
-      "src/core/lib/client_config/subchannel.h", 
-      "src/core/lib/client_config/subchannel_index.h", 
-      "src/core/lib/client_config/uri_parser.h", 
-      "src/core/lib/compression/algorithm_metadata.h", 
-      "src/core/lib/compression/message_compress.h", 
-      "src/core/lib/debug/trace.h", 
-      "src/core/lib/http/format_request.h", 
-      "src/core/lib/http/httpcli.h", 
-      "src/core/lib/http/parser.h", 
-      "src/core/lib/iomgr/closure.h", 
-      "src/core/lib/iomgr/endpoint.h", 
-      "src/core/lib/iomgr/endpoint_pair.h", 
-      "src/core/lib/iomgr/ev_poll_and_epoll_posix.h", 
-      "src/core/lib/iomgr/ev_posix.h", 
-      "src/core/lib/iomgr/exec_ctx.h", 
-      "src/core/lib/iomgr/executor.h", 
-      "src/core/lib/iomgr/iocp_windows.h", 
-      "src/core/lib/iomgr/iomgr.h", 
-      "src/core/lib/iomgr/iomgr_internal.h", 
-      "src/core/lib/iomgr/iomgr_posix.h", 
-      "src/core/lib/iomgr/pollset.h", 
-      "src/core/lib/iomgr/pollset_set.h", 
-      "src/core/lib/iomgr/pollset_set_windows.h", 
-      "src/core/lib/iomgr/pollset_windows.h", 
-      "src/core/lib/iomgr/resolve_address.h", 
-      "src/core/lib/iomgr/sockaddr.h", 
-      "src/core/lib/iomgr/sockaddr_posix.h", 
-      "src/core/lib/iomgr/sockaddr_utils.h", 
-      "src/core/lib/iomgr/sockaddr_win32.h", 
-      "src/core/lib/iomgr/socket_utils_posix.h", 
-      "src/core/lib/iomgr/socket_windows.h", 
-      "src/core/lib/iomgr/tcp_client.h", 
-      "src/core/lib/iomgr/tcp_posix.h", 
-      "src/core/lib/iomgr/tcp_server.h", 
-      "src/core/lib/iomgr/tcp_windows.h", 
-      "src/core/lib/iomgr/time_averaged_stats.h", 
-      "src/core/lib/iomgr/timer.h", 
-      "src/core/lib/iomgr/timer_heap.h", 
-      "src/core/lib/iomgr/udp_server.h", 
-      "src/core/lib/iomgr/unix_sockets_posix.h", 
-      "src/core/lib/iomgr/wakeup_fd_pipe.h", 
-      "src/core/lib/iomgr/wakeup_fd_posix.h", 
-      "src/core/lib/iomgr/workqueue.h", 
-      "src/core/lib/iomgr/workqueue_posix.h", 
-      "src/core/lib/iomgr/workqueue_windows.h", 
-      "src/core/lib/json/json.h", 
-      "src/core/lib/json/json_common.h", 
-      "src/core/lib/json/json_reader.h", 
-      "src/core/lib/json/json_writer.h", 
-      "src/core/lib/security/auth_filters.h", 
-      "src/core/lib/security/b64.h", 
-      "src/core/lib/security/credentials.h", 
-      "src/core/lib/security/handshake.h", 
-      "src/core/lib/security/json_token.h", 
-      "src/core/lib/security/jwt_verifier.h", 
-      "src/core/lib/security/secure_endpoint.h", 
-      "src/core/lib/security/security_connector.h", 
-      "src/core/lib/security/security_context.h", 
-      "src/core/lib/surface/api_trace.h", 
-      "src/core/lib/surface/call.h", 
-      "src/core/lib/surface/call_test_only.h", 
-      "src/core/lib/surface/channel.h", 
-      "src/core/lib/surface/channel_init.h", 
-      "src/core/lib/surface/channel_stack_type.h", 
-      "src/core/lib/surface/completion_queue.h", 
-      "src/core/lib/surface/event_string.h", 
-      "src/core/lib/surface/init.h", 
-      "src/core/lib/surface/lame_client.h", 
-      "src/core/lib/surface/server.h", 
-      "src/core/lib/surface/surface_trace.h", 
-      "src/core/lib/transport/byte_stream.h", 
-      "src/core/lib/transport/connectivity_state.h", 
-      "src/core/lib/transport/metadata.h", 
-      "src/core/lib/transport/metadata_batch.h", 
-      "src/core/lib/transport/static_metadata.h", 
-      "src/core/lib/transport/transport.h", 
-      "src/core/lib/transport/transport_impl.h", 
-      "src/core/lib/tsi/fake_transport_security.h", 
-      "src/core/lib/tsi/ssl_transport_security.h", 
-      "src/core/lib/tsi/ssl_types.h", 
-      "src/core/lib/tsi/transport_security.h", 
-      "src/core/lib/tsi/transport_security_interface.h", 
-      "third_party/nanopb/pb.h", 
-      "third_party/nanopb/pb_common.h", 
-      "third_party/nanopb/pb_decode.h", 
-      "third_party/nanopb/pb_encode.h"
-    ], 
+    "headers": [], 
     "language": "c", 
     "name": "grpc", 
-    "src": [
-      "include/grpc/byte_buffer.h", 
-      "include/grpc/byte_buffer_reader.h", 
-      "include/grpc/census.h", 
-      "include/grpc/compression.h", 
-      "include/grpc/grpc.h", 
-      "include/grpc/grpc_security.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/status.h", 
-      "src/core/ext/census/aggregation.h", 
-      "src/core/ext/census/census_interface.h", 
-      "src/core/ext/census/census_rpc_stats.h", 
-      "src/core/ext/census/context.c", 
-      "src/core/ext/census/grpc_context.c", 
-      "src/core/ext/census/grpc_filter.c", 
-      "src/core/ext/census/grpc_filter.h", 
-      "src/core/ext/census/grpc_plugin.c", 
-      "src/core/ext/census/initialize.c", 
-      "src/core/ext/census/mlog.c", 
-      "src/core/ext/census/mlog.h", 
-      "src/core/ext/census/operation.c", 
-      "src/core/ext/census/placeholders.c", 
-      "src/core/ext/census/rpc_metric_id.h", 
-      "src/core/ext/census/tracing.c", 
-      "src/core/ext/lb_policy/grpclb/load_balancer_api.c", 
-      "src/core/ext/lb_policy/grpclb/load_balancer_api.h", 
-      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", 
-      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", 
-      "src/core/ext/lb_policy/pick_first/pick_first.c", 
-      "src/core/ext/lb_policy/round_robin/round_robin.c", 
-      "src/core/ext/resolver/dns/native/dns_resolver.c", 
-      "src/core/ext/resolver/sockaddr/sockaddr_resolver.c", 
-      "src/core/ext/transport/chttp2/client/insecure/channel_create.c", 
-      "src/core/ext/transport/chttp2/client/secure/secure_channel_create.c", 
-      "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c", 
-      "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c", 
-      "src/core/ext/transport/chttp2/transport/alpn.c", 
-      "src/core/ext/transport/chttp2/transport/alpn.h", 
-      "src/core/ext/transport/chttp2/transport/bin_encoder.c", 
-      "src/core/ext/transport/chttp2/transport/bin_encoder.h", 
-      "src/core/ext/transport/chttp2/transport/chttp2_transport.c", 
-      "src/core/ext/transport/chttp2/transport/chttp2_transport.h", 
-      "src/core/ext/transport/chttp2/transport/frame.h", 
-      "src/core/ext/transport/chttp2/transport/frame_data.c", 
-      "src/core/ext/transport/chttp2/transport/frame_data.h", 
-      "src/core/ext/transport/chttp2/transport/frame_goaway.c", 
-      "src/core/ext/transport/chttp2/transport/frame_goaway.h", 
-      "src/core/ext/transport/chttp2/transport/frame_ping.c", 
-      "src/core/ext/transport/chttp2/transport/frame_ping.h", 
-      "src/core/ext/transport/chttp2/transport/frame_rst_stream.c", 
-      "src/core/ext/transport/chttp2/transport/frame_rst_stream.h", 
-      "src/core/ext/transport/chttp2/transport/frame_settings.c", 
-      "src/core/ext/transport/chttp2/transport/frame_settings.h", 
-      "src/core/ext/transport/chttp2/transport/frame_window_update.c", 
-      "src/core/ext/transport/chttp2/transport/frame_window_update.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_encoder.c", 
-      "src/core/ext/transport/chttp2/transport/hpack_encoder.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_parser.c", 
-      "src/core/ext/transport/chttp2/transport/hpack_parser.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_table.c", 
-      "src/core/ext/transport/chttp2/transport/hpack_table.h", 
-      "src/core/ext/transport/chttp2/transport/http2_errors.h", 
-      "src/core/ext/transport/chttp2/transport/huffsyms.c", 
-      "src/core/ext/transport/chttp2/transport/huffsyms.h", 
-      "src/core/ext/transport/chttp2/transport/incoming_metadata.c", 
-      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
-      "src/core/ext/transport/chttp2/transport/internal.h", 
-      "src/core/ext/transport/chttp2/transport/parsing.c", 
-      "src/core/ext/transport/chttp2/transport/status_conversion.c", 
-      "src/core/ext/transport/chttp2/transport/status_conversion.h", 
-      "src/core/ext/transport/chttp2/transport/stream_lists.c", 
-      "src/core/ext/transport/chttp2/transport/stream_map.c", 
-      "src/core/ext/transport/chttp2/transport/stream_map.h", 
-      "src/core/ext/transport/chttp2/transport/timeout_encoding.c", 
-      "src/core/ext/transport/chttp2/transport/timeout_encoding.h", 
-      "src/core/ext/transport/chttp2/transport/varint.c", 
-      "src/core/ext/transport/chttp2/transport/varint.h", 
-      "src/core/ext/transport/chttp2/transport/writing.c", 
-      "src/core/lib/channel/channel_args.c", 
-      "src/core/lib/channel/channel_args.h", 
-      "src/core/lib/channel/channel_stack.c", 
-      "src/core/lib/channel/channel_stack.h", 
-      "src/core/lib/channel/channel_stack_builder.c", 
-      "src/core/lib/channel/channel_stack_builder.h", 
-      "src/core/lib/channel/client_channel.c", 
-      "src/core/lib/channel/client_channel.h", 
-      "src/core/lib/channel/compress_filter.c", 
-      "src/core/lib/channel/compress_filter.h", 
-      "src/core/lib/channel/connected_channel.c", 
-      "src/core/lib/channel/connected_channel.h", 
-      "src/core/lib/channel/context.h", 
-      "src/core/lib/channel/http_client_filter.c", 
-      "src/core/lib/channel/http_client_filter.h", 
-      "src/core/lib/channel/http_server_filter.c", 
-      "src/core/lib/channel/http_server_filter.h", 
-      "src/core/lib/channel/subchannel_call_holder.c", 
-      "src/core/lib/channel/subchannel_call_holder.h", 
-      "src/core/lib/client_config/client_channel_factory.c", 
-      "src/core/lib/client_config/client_channel_factory.h", 
-      "src/core/lib/client_config/client_config.c", 
-      "src/core/lib/client_config/client_config.h", 
-      "src/core/lib/client_config/connector.c", 
-      "src/core/lib/client_config/connector.h", 
-      "src/core/lib/client_config/default_initial_connect_string.c", 
-      "src/core/lib/client_config/initial_connect_string.c", 
-      "src/core/lib/client_config/initial_connect_string.h", 
-      "src/core/lib/client_config/lb_policy.c", 
-      "src/core/lib/client_config/lb_policy.h", 
-      "src/core/lib/client_config/lb_policy_factory.c", 
-      "src/core/lib/client_config/lb_policy_factory.h", 
-      "src/core/lib/client_config/lb_policy_registry.c", 
-      "src/core/lib/client_config/lb_policy_registry.h", 
-      "src/core/lib/client_config/resolver.c", 
-      "src/core/lib/client_config/resolver.h", 
-      "src/core/lib/client_config/resolver_factory.c", 
-      "src/core/lib/client_config/resolver_factory.h", 
-      "src/core/lib/client_config/resolver_registry.c", 
-      "src/core/lib/client_config/resolver_registry.h", 
-      "src/core/lib/client_config/subchannel.c", 
-      "src/core/lib/client_config/subchannel.h", 
-      "src/core/lib/client_config/subchannel_index.c", 
-      "src/core/lib/client_config/subchannel_index.h", 
-      "src/core/lib/client_config/uri_parser.c", 
-      "src/core/lib/client_config/uri_parser.h", 
-      "src/core/lib/compression/algorithm_metadata.h", 
-      "src/core/lib/compression/compression_algorithm.c", 
-      "src/core/lib/compression/message_compress.c", 
-      "src/core/lib/compression/message_compress.h", 
-      "src/core/lib/debug/trace.c", 
-      "src/core/lib/debug/trace.h", 
-      "src/core/lib/http/format_request.c", 
-      "src/core/lib/http/format_request.h", 
-      "src/core/lib/http/httpcli.c", 
-      "src/core/lib/http/httpcli.h", 
-      "src/core/lib/http/httpcli_security_connector.c", 
-      "src/core/lib/http/parser.c", 
-      "src/core/lib/http/parser.h", 
-      "src/core/lib/iomgr/closure.c", 
-      "src/core/lib/iomgr/closure.h", 
-      "src/core/lib/iomgr/endpoint.c", 
-      "src/core/lib/iomgr/endpoint.h", 
-      "src/core/lib/iomgr/endpoint_pair.h", 
-      "src/core/lib/iomgr/endpoint_pair_posix.c", 
-      "src/core/lib/iomgr/endpoint_pair_windows.c", 
-      "src/core/lib/iomgr/ev_poll_and_epoll_posix.c", 
-      "src/core/lib/iomgr/ev_poll_and_epoll_posix.h", 
-      "src/core/lib/iomgr/ev_posix.c", 
-      "src/core/lib/iomgr/ev_posix.h", 
-      "src/core/lib/iomgr/exec_ctx.c", 
-      "src/core/lib/iomgr/exec_ctx.h", 
-      "src/core/lib/iomgr/executor.c", 
-      "src/core/lib/iomgr/executor.h", 
-      "src/core/lib/iomgr/iocp_windows.c", 
-      "src/core/lib/iomgr/iocp_windows.h", 
-      "src/core/lib/iomgr/iomgr.c", 
-      "src/core/lib/iomgr/iomgr.h", 
-      "src/core/lib/iomgr/iomgr_internal.h", 
-      "src/core/lib/iomgr/iomgr_posix.c", 
-      "src/core/lib/iomgr/iomgr_posix.h", 
-      "src/core/lib/iomgr/iomgr_windows.c", 
-      "src/core/lib/iomgr/pollset.h", 
-      "src/core/lib/iomgr/pollset_set.h", 
-      "src/core/lib/iomgr/pollset_set_windows.c", 
-      "src/core/lib/iomgr/pollset_set_windows.h", 
-      "src/core/lib/iomgr/pollset_windows.c", 
-      "src/core/lib/iomgr/pollset_windows.h", 
-      "src/core/lib/iomgr/resolve_address.h", 
-      "src/core/lib/iomgr/resolve_address_posix.c", 
-      "src/core/lib/iomgr/resolve_address_windows.c", 
-      "src/core/lib/iomgr/sockaddr.h", 
-      "src/core/lib/iomgr/sockaddr_posix.h", 
-      "src/core/lib/iomgr/sockaddr_utils.c", 
-      "src/core/lib/iomgr/sockaddr_utils.h", 
-      "src/core/lib/iomgr/sockaddr_win32.h", 
-      "src/core/lib/iomgr/socket_utils_common_posix.c", 
-      "src/core/lib/iomgr/socket_utils_linux.c", 
-      "src/core/lib/iomgr/socket_utils_posix.c", 
-      "src/core/lib/iomgr/socket_utils_posix.h", 
-      "src/core/lib/iomgr/socket_windows.c", 
-      "src/core/lib/iomgr/socket_windows.h", 
-      "src/core/lib/iomgr/tcp_client.h", 
-      "src/core/lib/iomgr/tcp_client_posix.c", 
-      "src/core/lib/iomgr/tcp_client_windows.c", 
-      "src/core/lib/iomgr/tcp_posix.c", 
-      "src/core/lib/iomgr/tcp_posix.h", 
-      "src/core/lib/iomgr/tcp_server.h", 
-      "src/core/lib/iomgr/tcp_server_posix.c", 
-      "src/core/lib/iomgr/tcp_server_windows.c", 
-      "src/core/lib/iomgr/tcp_windows.c", 
-      "src/core/lib/iomgr/tcp_windows.h", 
-      "src/core/lib/iomgr/time_averaged_stats.c", 
-      "src/core/lib/iomgr/time_averaged_stats.h", 
-      "src/core/lib/iomgr/timer.c", 
-      "src/core/lib/iomgr/timer.h", 
-      "src/core/lib/iomgr/timer_heap.c", 
-      "src/core/lib/iomgr/timer_heap.h", 
-      "src/core/lib/iomgr/udp_server.c", 
-      "src/core/lib/iomgr/udp_server.h", 
-      "src/core/lib/iomgr/unix_sockets_posix.c", 
-      "src/core/lib/iomgr/unix_sockets_posix.h", 
-      "src/core/lib/iomgr/unix_sockets_posix_noop.c", 
-      "src/core/lib/iomgr/wakeup_fd_eventfd.c", 
-      "src/core/lib/iomgr/wakeup_fd_nospecial.c", 
-      "src/core/lib/iomgr/wakeup_fd_pipe.c", 
-      "src/core/lib/iomgr/wakeup_fd_pipe.h", 
-      "src/core/lib/iomgr/wakeup_fd_posix.c", 
-      "src/core/lib/iomgr/wakeup_fd_posix.h", 
-      "src/core/lib/iomgr/workqueue.h", 
-      "src/core/lib/iomgr/workqueue_posix.c", 
-      "src/core/lib/iomgr/workqueue_posix.h", 
-      "src/core/lib/iomgr/workqueue_windows.c", 
-      "src/core/lib/iomgr/workqueue_windows.h", 
-      "src/core/lib/json/json.c", 
-      "src/core/lib/json/json.h", 
-      "src/core/lib/json/json_common.h", 
-      "src/core/lib/json/json_reader.c", 
-      "src/core/lib/json/json_reader.h", 
-      "src/core/lib/json/json_string.c", 
-      "src/core/lib/json/json_writer.c", 
-      "src/core/lib/json/json_writer.h", 
-      "src/core/lib/security/auth_filters.h", 
-      "src/core/lib/security/b64.c", 
-      "src/core/lib/security/b64.h", 
-      "src/core/lib/security/client_auth_filter.c", 
-      "src/core/lib/security/credentials.c", 
-      "src/core/lib/security/credentials.h", 
-      "src/core/lib/security/credentials_metadata.c", 
-      "src/core/lib/security/credentials_posix.c", 
-      "src/core/lib/security/credentials_win32.c", 
-      "src/core/lib/security/google_default_credentials.c", 
-      "src/core/lib/security/handshake.c", 
-      "src/core/lib/security/handshake.h", 
-      "src/core/lib/security/json_token.c", 
-      "src/core/lib/security/json_token.h", 
-      "src/core/lib/security/jwt_verifier.c", 
-      "src/core/lib/security/jwt_verifier.h", 
-      "src/core/lib/security/secure_endpoint.c", 
-      "src/core/lib/security/secure_endpoint.h", 
-      "src/core/lib/security/security_connector.c", 
-      "src/core/lib/security/security_connector.h", 
-      "src/core/lib/security/security_context.c", 
-      "src/core/lib/security/security_context.h", 
-      "src/core/lib/security/server_auth_filter.c", 
-      "src/core/lib/surface/alarm.c", 
-      "src/core/lib/surface/api_trace.c", 
-      "src/core/lib/surface/api_trace.h", 
-      "src/core/lib/surface/byte_buffer.c", 
-      "src/core/lib/surface/byte_buffer_reader.c", 
-      "src/core/lib/surface/call.c", 
-      "src/core/lib/surface/call.h", 
-      "src/core/lib/surface/call_details.c", 
-      "src/core/lib/surface/call_log_batch.c", 
-      "src/core/lib/surface/call_test_only.h", 
-      "src/core/lib/surface/channel.c", 
-      "src/core/lib/surface/channel.h", 
-      "src/core/lib/surface/channel_connectivity.c", 
-      "src/core/lib/surface/channel_init.c", 
-      "src/core/lib/surface/channel_init.h", 
-      "src/core/lib/surface/channel_ping.c", 
-      "src/core/lib/surface/channel_stack_type.c", 
-      "src/core/lib/surface/channel_stack_type.h", 
-      "src/core/lib/surface/completion_queue.c", 
-      "src/core/lib/surface/completion_queue.h", 
-      "src/core/lib/surface/event_string.c", 
-      "src/core/lib/surface/event_string.h", 
-      "src/core/lib/surface/init.c", 
-      "src/core/lib/surface/init.h", 
-      "src/core/lib/surface/init_secure.c", 
-      "src/core/lib/surface/lame_client.c", 
-      "src/core/lib/surface/lame_client.h", 
-      "src/core/lib/surface/metadata_array.c", 
-      "src/core/lib/surface/server.c", 
-      "src/core/lib/surface/server.h", 
-      "src/core/lib/surface/surface_trace.h", 
-      "src/core/lib/surface/validate_metadata.c", 
-      "src/core/lib/surface/version.c", 
-      "src/core/lib/transport/byte_stream.c", 
-      "src/core/lib/transport/byte_stream.h", 
-      "src/core/lib/transport/connectivity_state.c", 
-      "src/core/lib/transport/connectivity_state.h", 
-      "src/core/lib/transport/metadata.c", 
-      "src/core/lib/transport/metadata.h", 
-      "src/core/lib/transport/metadata_batch.c", 
-      "src/core/lib/transport/metadata_batch.h", 
-      "src/core/lib/transport/static_metadata.c", 
-      "src/core/lib/transport/static_metadata.h", 
-      "src/core/lib/transport/transport.c", 
-      "src/core/lib/transport/transport.h", 
-      "src/core/lib/transport/transport_impl.h", 
-      "src/core/lib/transport/transport_op_string.c", 
-      "src/core/lib/tsi/fake_transport_security.c", 
-      "src/core/lib/tsi/fake_transport_security.h", 
-      "src/core/lib/tsi/ssl_transport_security.c", 
-      "src/core/lib/tsi/ssl_transport_security.h", 
-      "src/core/lib/tsi/ssl_types.h", 
-      "src/core/lib/tsi/transport_security.c", 
-      "src/core/lib/tsi/transport_security.h", 
-      "src/core/lib/tsi/transport_security_interface.h", 
-      "src/core/plugin_registry/grpc_plugin_registry.c"
-    ], 
+    "src": [], 
     "third_party": false, 
     "type": "lib"
   }, 
   {
-    "deps": [], 
-    "headers": [
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h"
+    "deps": [
+      "gpr", 
+      "gpr_codegen", 
+      "grpc_codegen"
     ], 
+    "headers": [], 
     "language": "c", 
     "name": "grpc_codegen_lib", 
-    "src": [
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h"
-    ], 
+    "src": [], 
     "third_party": false, 
     "type": "lib"
   }, 
@@ -4597,46 +3968,22 @@
     "deps": [
       "gpr", 
       "gpr_test_util", 
-      "grpc"
+      "grpc", 
+      "grpc_test_util_base"
     ], 
     "headers": [
-      "test/core/end2end/cq_verifier.h", 
       "test/core/end2end/data/ssl_test_data.h", 
-      "test/core/end2end/fixtures/proxy.h", 
-      "test/core/iomgr/endpoint_tests.h", 
-      "test/core/security/oauth2_utils.h", 
-      "test/core/util/grpc_profiler.h", 
-      "test/core/util/parse_hexstring.h", 
-      "test/core/util/port.h", 
-      "test/core/util/port_server_client.h", 
-      "test/core/util/slice_splitter.h"
+      "test/core/security/oauth2_utils.h"
     ], 
     "language": "c", 
     "name": "grpc_test_util", 
     "src": [
-      "test/core/end2end/cq_verifier.c", 
-      "test/core/end2end/cq_verifier.h", 
       "test/core/end2end/data/server1_cert.c", 
       "test/core/end2end/data/server1_key.c", 
       "test/core/end2end/data/ssl_test_data.h", 
       "test/core/end2end/data/test_root_cert.c", 
-      "test/core/end2end/fixtures/proxy.c", 
-      "test/core/end2end/fixtures/proxy.h", 
-      "test/core/iomgr/endpoint_tests.c", 
-      "test/core/iomgr/endpoint_tests.h", 
       "test/core/security/oauth2_utils.c", 
-      "test/core/security/oauth2_utils.h", 
-      "test/core/util/grpc_profiler.c", 
-      "test/core/util/grpc_profiler.h", 
-      "test/core/util/parse_hexstring.c", 
-      "test/core/util/parse_hexstring.h", 
-      "test/core/util/port.h", 
-      "test/core/util/port_posix.c", 
-      "test/core/util/port_server_client.c", 
-      "test/core/util/port_server_client.h", 
-      "test/core/util/port_windows.c", 
-      "test/core/util/slice_splitter.c", 
-      "test/core/util/slice_splitter.h"
+      "test/core/security/oauth2_utils.h"
     ], 
     "third_party": false, 
     "type": "lib"
@@ -4645,452 +3992,37 @@
     "deps": [
       "gpr", 
       "gpr_test_util", 
+      "grpc", 
+      "grpc_test_util_base", 
       "grpc_unsecure"
     ], 
-    "headers": [
-      "test/core/end2end/cq_verifier.h", 
-      "test/core/end2end/fixtures/proxy.h", 
-      "test/core/iomgr/endpoint_tests.h", 
-      "test/core/util/grpc_profiler.h", 
-      "test/core/util/parse_hexstring.h", 
-      "test/core/util/port.h", 
-      "test/core/util/port_server_client.h", 
-      "test/core/util/slice_splitter.h"
-    ], 
+    "headers": [], 
     "language": "c", 
     "name": "grpc_test_util_unsecure", 
-    "src": [
-      "test/core/end2end/cq_verifier.c", 
-      "test/core/end2end/cq_verifier.h", 
-      "test/core/end2end/fixtures/proxy.c", 
-      "test/core/end2end/fixtures/proxy.h", 
-      "test/core/iomgr/endpoint_tests.c", 
-      "test/core/iomgr/endpoint_tests.h", 
-      "test/core/util/grpc_profiler.c", 
-      "test/core/util/grpc_profiler.h", 
-      "test/core/util/parse_hexstring.c", 
-      "test/core/util/parse_hexstring.h", 
-      "test/core/util/port.h", 
-      "test/core/util/port_posix.c", 
-      "test/core/util/port_server_client.c", 
-      "test/core/util/port_server_client.h", 
-      "test/core/util/port_windows.c", 
-      "test/core/util/slice_splitter.c", 
-      "test/core/util/slice_splitter.h"
-    ], 
+    "src": [], 
     "third_party": false, 
     "type": "lib"
   }, 
   {
     "deps": [
-      "gpr"
+      "census", 
+      "gpr", 
+      "grpc_base", 
+      "grpc_codegen", 
+      "grpc_lb_policy_grpclb", 
+      "grpc_lb_policy_pick_first", 
+      "grpc_lb_policy_round_robin", 
+      "grpc_resolver_dns_native", 
+      "grpc_resolver_sockaddr", 
+      "grpc_transport_chttp2_client_insecure", 
+      "grpc_transport_chttp2_server_insecure", 
+      "nanopb"
     ], 
-    "headers": [
-      "include/grpc/byte_buffer.h", 
-      "include/grpc/byte_buffer_reader.h", 
-      "include/grpc/census.h", 
-      "include/grpc/compression.h", 
-      "include/grpc/grpc.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/status.h", 
-      "src/core/ext/census/aggregation.h", 
-      "src/core/ext/census/census_interface.h", 
-      "src/core/ext/census/census_rpc_stats.h", 
-      "src/core/ext/census/grpc_filter.h", 
-      "src/core/ext/census/mlog.h", 
-      "src/core/ext/census/rpc_metric_id.h", 
-      "src/core/ext/lb_policy/grpclb/load_balancer_api.h", 
-      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", 
-      "src/core/ext/transport/chttp2/transport/alpn.h", 
-      "src/core/ext/transport/chttp2/transport/bin_encoder.h", 
-      "src/core/ext/transport/chttp2/transport/chttp2_transport.h", 
-      "src/core/ext/transport/chttp2/transport/frame.h", 
-      "src/core/ext/transport/chttp2/transport/frame_data.h", 
-      "src/core/ext/transport/chttp2/transport/frame_goaway.h", 
-      "src/core/ext/transport/chttp2/transport/frame_ping.h", 
-      "src/core/ext/transport/chttp2/transport/frame_rst_stream.h", 
-      "src/core/ext/transport/chttp2/transport/frame_settings.h", 
-      "src/core/ext/transport/chttp2/transport/frame_window_update.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_encoder.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_parser.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_table.h", 
-      "src/core/ext/transport/chttp2/transport/http2_errors.h", 
-      "src/core/ext/transport/chttp2/transport/huffsyms.h", 
-      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
-      "src/core/ext/transport/chttp2/transport/internal.h", 
-      "src/core/ext/transport/chttp2/transport/status_conversion.h", 
-      "src/core/ext/transport/chttp2/transport/stream_map.h", 
-      "src/core/ext/transport/chttp2/transport/timeout_encoding.h", 
-      "src/core/ext/transport/chttp2/transport/varint.h", 
-      "src/core/lib/channel/channel_args.h", 
-      "src/core/lib/channel/channel_stack.h", 
-      "src/core/lib/channel/channel_stack_builder.h", 
-      "src/core/lib/channel/client_channel.h", 
-      "src/core/lib/channel/compress_filter.h", 
-      "src/core/lib/channel/connected_channel.h", 
-      "src/core/lib/channel/context.h", 
-      "src/core/lib/channel/http_client_filter.h", 
-      "src/core/lib/channel/http_server_filter.h", 
-      "src/core/lib/channel/subchannel_call_holder.h", 
-      "src/core/lib/client_config/client_channel_factory.h", 
-      "src/core/lib/client_config/client_config.h", 
-      "src/core/lib/client_config/connector.h", 
-      "src/core/lib/client_config/initial_connect_string.h", 
-      "src/core/lib/client_config/lb_policy.h", 
-      "src/core/lib/client_config/lb_policy_factory.h", 
-      "src/core/lib/client_config/lb_policy_registry.h", 
-      "src/core/lib/client_config/resolver.h", 
-      "src/core/lib/client_config/resolver_factory.h", 
-      "src/core/lib/client_config/resolver_registry.h", 
-      "src/core/lib/client_config/subchannel.h", 
-      "src/core/lib/client_config/subchannel_index.h", 
-      "src/core/lib/client_config/uri_parser.h", 
-      "src/core/lib/compression/algorithm_metadata.h", 
-      "src/core/lib/compression/message_compress.h", 
-      "src/core/lib/debug/trace.h", 
-      "src/core/lib/http/format_request.h", 
-      "src/core/lib/http/httpcli.h", 
-      "src/core/lib/http/parser.h", 
-      "src/core/lib/iomgr/closure.h", 
-      "src/core/lib/iomgr/endpoint.h", 
-      "src/core/lib/iomgr/endpoint_pair.h", 
-      "src/core/lib/iomgr/ev_poll_and_epoll_posix.h", 
-      "src/core/lib/iomgr/ev_posix.h", 
-      "src/core/lib/iomgr/exec_ctx.h", 
-      "src/core/lib/iomgr/executor.h", 
-      "src/core/lib/iomgr/iocp_windows.h", 
-      "src/core/lib/iomgr/iomgr.h", 
-      "src/core/lib/iomgr/iomgr_internal.h", 
-      "src/core/lib/iomgr/iomgr_posix.h", 
-      "src/core/lib/iomgr/pollset.h", 
-      "src/core/lib/iomgr/pollset_set.h", 
-      "src/core/lib/iomgr/pollset_set_windows.h", 
-      "src/core/lib/iomgr/pollset_windows.h", 
-      "src/core/lib/iomgr/resolve_address.h", 
-      "src/core/lib/iomgr/sockaddr.h", 
-      "src/core/lib/iomgr/sockaddr_posix.h", 
-      "src/core/lib/iomgr/sockaddr_utils.h", 
-      "src/core/lib/iomgr/sockaddr_win32.h", 
-      "src/core/lib/iomgr/socket_utils_posix.h", 
-      "src/core/lib/iomgr/socket_windows.h", 
-      "src/core/lib/iomgr/tcp_client.h", 
-      "src/core/lib/iomgr/tcp_posix.h", 
-      "src/core/lib/iomgr/tcp_server.h", 
-      "src/core/lib/iomgr/tcp_windows.h", 
-      "src/core/lib/iomgr/time_averaged_stats.h", 
-      "src/core/lib/iomgr/timer.h", 
-      "src/core/lib/iomgr/timer_heap.h", 
-      "src/core/lib/iomgr/udp_server.h", 
-      "src/core/lib/iomgr/unix_sockets_posix.h", 
-      "src/core/lib/iomgr/wakeup_fd_pipe.h", 
-      "src/core/lib/iomgr/wakeup_fd_posix.h", 
-      "src/core/lib/iomgr/workqueue.h", 
-      "src/core/lib/iomgr/workqueue_posix.h", 
-      "src/core/lib/iomgr/workqueue_windows.h", 
-      "src/core/lib/json/json.h", 
-      "src/core/lib/json/json_common.h", 
-      "src/core/lib/json/json_reader.h", 
-      "src/core/lib/json/json_writer.h", 
-      "src/core/lib/surface/api_trace.h", 
-      "src/core/lib/surface/call.h", 
-      "src/core/lib/surface/call_test_only.h", 
-      "src/core/lib/surface/channel.h", 
-      "src/core/lib/surface/channel_init.h", 
-      "src/core/lib/surface/channel_stack_type.h", 
-      "src/core/lib/surface/completion_queue.h", 
-      "src/core/lib/surface/event_string.h", 
-      "src/core/lib/surface/init.h", 
-      "src/core/lib/surface/lame_client.h", 
-      "src/core/lib/surface/server.h", 
-      "src/core/lib/surface/surface_trace.h", 
-      "src/core/lib/transport/byte_stream.h", 
-      "src/core/lib/transport/connectivity_state.h", 
-      "src/core/lib/transport/metadata.h", 
-      "src/core/lib/transport/metadata_batch.h", 
-      "src/core/lib/transport/static_metadata.h", 
-      "src/core/lib/transport/transport.h", 
-      "src/core/lib/transport/transport_impl.h", 
-      "third_party/nanopb/pb.h", 
-      "third_party/nanopb/pb_common.h", 
-      "third_party/nanopb/pb_decode.h", 
-      "third_party/nanopb/pb_encode.h"
-    ], 
+    "headers": [], 
     "language": "c", 
     "name": "grpc_unsecure", 
     "src": [
-      "include/grpc/byte_buffer.h", 
-      "include/grpc/byte_buffer_reader.h", 
-      "include/grpc/census.h", 
-      "include/grpc/compression.h", 
-      "include/grpc/grpc.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/status.h", 
-      "src/core/ext/census/aggregation.h", 
-      "src/core/ext/census/census_interface.h", 
-      "src/core/ext/census/census_rpc_stats.h", 
-      "src/core/ext/census/context.c", 
-      "src/core/ext/census/grpc_context.c", 
-      "src/core/ext/census/grpc_filter.c", 
-      "src/core/ext/census/grpc_filter.h", 
-      "src/core/ext/census/grpc_plugin.c", 
-      "src/core/ext/census/initialize.c", 
-      "src/core/ext/census/mlog.c", 
-      "src/core/ext/census/mlog.h", 
-      "src/core/ext/census/operation.c", 
-      "src/core/ext/census/placeholders.c", 
-      "src/core/ext/census/rpc_metric_id.h", 
-      "src/core/ext/census/tracing.c", 
-      "src/core/ext/lb_policy/grpclb/load_balancer_api.c", 
-      "src/core/ext/lb_policy/grpclb/load_balancer_api.h", 
-      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", 
-      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", 
-      "src/core/ext/lb_policy/pick_first/pick_first.c", 
-      "src/core/ext/lb_policy/round_robin/round_robin.c", 
-      "src/core/ext/resolver/dns/native/dns_resolver.c", 
-      "src/core/ext/resolver/sockaddr/sockaddr_resolver.c", 
-      "src/core/ext/transport/chttp2/client/insecure/channel_create.c", 
-      "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c", 
-      "src/core/ext/transport/chttp2/transport/alpn.c", 
-      "src/core/ext/transport/chttp2/transport/alpn.h", 
-      "src/core/ext/transport/chttp2/transport/bin_encoder.c", 
-      "src/core/ext/transport/chttp2/transport/bin_encoder.h", 
-      "src/core/ext/transport/chttp2/transport/chttp2_transport.c", 
-      "src/core/ext/transport/chttp2/transport/chttp2_transport.h", 
-      "src/core/ext/transport/chttp2/transport/frame.h", 
-      "src/core/ext/transport/chttp2/transport/frame_data.c", 
-      "src/core/ext/transport/chttp2/transport/frame_data.h", 
-      "src/core/ext/transport/chttp2/transport/frame_goaway.c", 
-      "src/core/ext/transport/chttp2/transport/frame_goaway.h", 
-      "src/core/ext/transport/chttp2/transport/frame_ping.c", 
-      "src/core/ext/transport/chttp2/transport/frame_ping.h", 
-      "src/core/ext/transport/chttp2/transport/frame_rst_stream.c", 
-      "src/core/ext/transport/chttp2/transport/frame_rst_stream.h", 
-      "src/core/ext/transport/chttp2/transport/frame_settings.c", 
-      "src/core/ext/transport/chttp2/transport/frame_settings.h", 
-      "src/core/ext/transport/chttp2/transport/frame_window_update.c", 
-      "src/core/ext/transport/chttp2/transport/frame_window_update.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_encoder.c", 
-      "src/core/ext/transport/chttp2/transport/hpack_encoder.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_parser.c", 
-      "src/core/ext/transport/chttp2/transport/hpack_parser.h", 
-      "src/core/ext/transport/chttp2/transport/hpack_table.c", 
-      "src/core/ext/transport/chttp2/transport/hpack_table.h", 
-      "src/core/ext/transport/chttp2/transport/http2_errors.h", 
-      "src/core/ext/transport/chttp2/transport/huffsyms.c", 
-      "src/core/ext/transport/chttp2/transport/huffsyms.h", 
-      "src/core/ext/transport/chttp2/transport/incoming_metadata.c", 
-      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
-      "src/core/ext/transport/chttp2/transport/internal.h", 
-      "src/core/ext/transport/chttp2/transport/parsing.c", 
-      "src/core/ext/transport/chttp2/transport/status_conversion.c", 
-      "src/core/ext/transport/chttp2/transport/status_conversion.h", 
-      "src/core/ext/transport/chttp2/transport/stream_lists.c", 
-      "src/core/ext/transport/chttp2/transport/stream_map.c", 
-      "src/core/ext/transport/chttp2/transport/stream_map.h", 
-      "src/core/ext/transport/chttp2/transport/timeout_encoding.c", 
-      "src/core/ext/transport/chttp2/transport/timeout_encoding.h", 
-      "src/core/ext/transport/chttp2/transport/varint.c", 
-      "src/core/ext/transport/chttp2/transport/varint.h", 
-      "src/core/ext/transport/chttp2/transport/writing.c", 
-      "src/core/lib/channel/channel_args.c", 
-      "src/core/lib/channel/channel_args.h", 
-      "src/core/lib/channel/channel_stack.c", 
-      "src/core/lib/channel/channel_stack.h", 
-      "src/core/lib/channel/channel_stack_builder.c", 
-      "src/core/lib/channel/channel_stack_builder.h", 
-      "src/core/lib/channel/client_channel.c", 
-      "src/core/lib/channel/client_channel.h", 
-      "src/core/lib/channel/compress_filter.c", 
-      "src/core/lib/channel/compress_filter.h", 
-      "src/core/lib/channel/connected_channel.c", 
-      "src/core/lib/channel/connected_channel.h", 
-      "src/core/lib/channel/context.h", 
-      "src/core/lib/channel/http_client_filter.c", 
-      "src/core/lib/channel/http_client_filter.h", 
-      "src/core/lib/channel/http_server_filter.c", 
-      "src/core/lib/channel/http_server_filter.h", 
-      "src/core/lib/channel/subchannel_call_holder.c", 
-      "src/core/lib/channel/subchannel_call_holder.h", 
-      "src/core/lib/client_config/client_channel_factory.c", 
-      "src/core/lib/client_config/client_channel_factory.h", 
-      "src/core/lib/client_config/client_config.c", 
-      "src/core/lib/client_config/client_config.h", 
-      "src/core/lib/client_config/connector.c", 
-      "src/core/lib/client_config/connector.h", 
-      "src/core/lib/client_config/default_initial_connect_string.c", 
-      "src/core/lib/client_config/initial_connect_string.c", 
-      "src/core/lib/client_config/initial_connect_string.h", 
-      "src/core/lib/client_config/lb_policy.c", 
-      "src/core/lib/client_config/lb_policy.h", 
-      "src/core/lib/client_config/lb_policy_factory.c", 
-      "src/core/lib/client_config/lb_policy_factory.h", 
-      "src/core/lib/client_config/lb_policy_registry.c", 
-      "src/core/lib/client_config/lb_policy_registry.h", 
-      "src/core/lib/client_config/resolver.c", 
-      "src/core/lib/client_config/resolver.h", 
-      "src/core/lib/client_config/resolver_factory.c", 
-      "src/core/lib/client_config/resolver_factory.h", 
-      "src/core/lib/client_config/resolver_registry.c", 
-      "src/core/lib/client_config/resolver_registry.h", 
-      "src/core/lib/client_config/subchannel.c", 
-      "src/core/lib/client_config/subchannel.h", 
-      "src/core/lib/client_config/subchannel_index.c", 
-      "src/core/lib/client_config/subchannel_index.h", 
-      "src/core/lib/client_config/uri_parser.c", 
-      "src/core/lib/client_config/uri_parser.h", 
-      "src/core/lib/compression/algorithm_metadata.h", 
-      "src/core/lib/compression/compression_algorithm.c", 
-      "src/core/lib/compression/message_compress.c", 
-      "src/core/lib/compression/message_compress.h", 
-      "src/core/lib/debug/trace.c", 
-      "src/core/lib/debug/trace.h", 
-      "src/core/lib/http/format_request.c", 
-      "src/core/lib/http/format_request.h", 
-      "src/core/lib/http/httpcli.c", 
-      "src/core/lib/http/httpcli.h", 
-      "src/core/lib/http/parser.c", 
-      "src/core/lib/http/parser.h", 
-      "src/core/lib/iomgr/closure.c", 
-      "src/core/lib/iomgr/closure.h", 
-      "src/core/lib/iomgr/endpoint.c", 
-      "src/core/lib/iomgr/endpoint.h", 
-      "src/core/lib/iomgr/endpoint_pair.h", 
-      "src/core/lib/iomgr/endpoint_pair_posix.c", 
-      "src/core/lib/iomgr/endpoint_pair_windows.c", 
-      "src/core/lib/iomgr/ev_poll_and_epoll_posix.c", 
-      "src/core/lib/iomgr/ev_poll_and_epoll_posix.h", 
-      "src/core/lib/iomgr/ev_posix.c", 
-      "src/core/lib/iomgr/ev_posix.h", 
-      "src/core/lib/iomgr/exec_ctx.c", 
-      "src/core/lib/iomgr/exec_ctx.h", 
-      "src/core/lib/iomgr/executor.c", 
-      "src/core/lib/iomgr/executor.h", 
-      "src/core/lib/iomgr/iocp_windows.c", 
-      "src/core/lib/iomgr/iocp_windows.h", 
-      "src/core/lib/iomgr/iomgr.c", 
-      "src/core/lib/iomgr/iomgr.h", 
-      "src/core/lib/iomgr/iomgr_internal.h", 
-      "src/core/lib/iomgr/iomgr_posix.c", 
-      "src/core/lib/iomgr/iomgr_posix.h", 
-      "src/core/lib/iomgr/iomgr_windows.c", 
-      "src/core/lib/iomgr/pollset.h", 
-      "src/core/lib/iomgr/pollset_set.h", 
-      "src/core/lib/iomgr/pollset_set_windows.c", 
-      "src/core/lib/iomgr/pollset_set_windows.h", 
-      "src/core/lib/iomgr/pollset_windows.c", 
-      "src/core/lib/iomgr/pollset_windows.h", 
-      "src/core/lib/iomgr/resolve_address.h", 
-      "src/core/lib/iomgr/resolve_address_posix.c", 
-      "src/core/lib/iomgr/resolve_address_windows.c", 
-      "src/core/lib/iomgr/sockaddr.h", 
-      "src/core/lib/iomgr/sockaddr_posix.h", 
-      "src/core/lib/iomgr/sockaddr_utils.c", 
-      "src/core/lib/iomgr/sockaddr_utils.h", 
-      "src/core/lib/iomgr/sockaddr_win32.h", 
-      "src/core/lib/iomgr/socket_utils_common_posix.c", 
-      "src/core/lib/iomgr/socket_utils_linux.c", 
-      "src/core/lib/iomgr/socket_utils_posix.c", 
-      "src/core/lib/iomgr/socket_utils_posix.h", 
-      "src/core/lib/iomgr/socket_windows.c", 
-      "src/core/lib/iomgr/socket_windows.h", 
-      "src/core/lib/iomgr/tcp_client.h", 
-      "src/core/lib/iomgr/tcp_client_posix.c", 
-      "src/core/lib/iomgr/tcp_client_windows.c", 
-      "src/core/lib/iomgr/tcp_posix.c", 
-      "src/core/lib/iomgr/tcp_posix.h", 
-      "src/core/lib/iomgr/tcp_server.h", 
-      "src/core/lib/iomgr/tcp_server_posix.c", 
-      "src/core/lib/iomgr/tcp_server_windows.c", 
-      "src/core/lib/iomgr/tcp_windows.c", 
-      "src/core/lib/iomgr/tcp_windows.h", 
-      "src/core/lib/iomgr/time_averaged_stats.c", 
-      "src/core/lib/iomgr/time_averaged_stats.h", 
-      "src/core/lib/iomgr/timer.c", 
-      "src/core/lib/iomgr/timer.h", 
-      "src/core/lib/iomgr/timer_heap.c", 
-      "src/core/lib/iomgr/timer_heap.h", 
-      "src/core/lib/iomgr/udp_server.c", 
-      "src/core/lib/iomgr/udp_server.h", 
-      "src/core/lib/iomgr/unix_sockets_posix.c", 
-      "src/core/lib/iomgr/unix_sockets_posix.h", 
-      "src/core/lib/iomgr/unix_sockets_posix_noop.c", 
-      "src/core/lib/iomgr/wakeup_fd_eventfd.c", 
-      "src/core/lib/iomgr/wakeup_fd_nospecial.c", 
-      "src/core/lib/iomgr/wakeup_fd_pipe.c", 
-      "src/core/lib/iomgr/wakeup_fd_pipe.h", 
-      "src/core/lib/iomgr/wakeup_fd_posix.c", 
-      "src/core/lib/iomgr/wakeup_fd_posix.h", 
-      "src/core/lib/iomgr/workqueue.h", 
-      "src/core/lib/iomgr/workqueue_posix.c", 
-      "src/core/lib/iomgr/workqueue_posix.h", 
-      "src/core/lib/iomgr/workqueue_windows.c", 
-      "src/core/lib/iomgr/workqueue_windows.h", 
-      "src/core/lib/json/json.c", 
-      "src/core/lib/json/json.h", 
-      "src/core/lib/json/json_common.h", 
-      "src/core/lib/json/json_reader.c", 
-      "src/core/lib/json/json_reader.h", 
-      "src/core/lib/json/json_string.c", 
-      "src/core/lib/json/json_writer.c", 
-      "src/core/lib/json/json_writer.h", 
-      "src/core/lib/surface/alarm.c", 
-      "src/core/lib/surface/api_trace.c", 
-      "src/core/lib/surface/api_trace.h", 
-      "src/core/lib/surface/byte_buffer.c", 
-      "src/core/lib/surface/byte_buffer_reader.c", 
-      "src/core/lib/surface/call.c", 
-      "src/core/lib/surface/call.h", 
-      "src/core/lib/surface/call_details.c", 
-      "src/core/lib/surface/call_log_batch.c", 
-      "src/core/lib/surface/call_test_only.h", 
-      "src/core/lib/surface/channel.c", 
-      "src/core/lib/surface/channel.h", 
-      "src/core/lib/surface/channel_connectivity.c", 
-      "src/core/lib/surface/channel_init.c", 
-      "src/core/lib/surface/channel_init.h", 
-      "src/core/lib/surface/channel_ping.c", 
-      "src/core/lib/surface/channel_stack_type.c", 
-      "src/core/lib/surface/channel_stack_type.h", 
-      "src/core/lib/surface/completion_queue.c", 
-      "src/core/lib/surface/completion_queue.h", 
-      "src/core/lib/surface/event_string.c", 
-      "src/core/lib/surface/event_string.h", 
-      "src/core/lib/surface/init.c", 
-      "src/core/lib/surface/init.h", 
-      "src/core/lib/surface/init_unsecure.c", 
-      "src/core/lib/surface/lame_client.c", 
-      "src/core/lib/surface/lame_client.h", 
-      "src/core/lib/surface/metadata_array.c", 
-      "src/core/lib/surface/server.c", 
-      "src/core/lib/surface/server.h", 
-      "src/core/lib/surface/surface_trace.h", 
-      "src/core/lib/surface/validate_metadata.c", 
-      "src/core/lib/surface/version.c", 
-      "src/core/lib/transport/byte_stream.c", 
-      "src/core/lib/transport/byte_stream.h", 
-      "src/core/lib/transport/connectivity_state.c", 
-      "src/core/lib/transport/connectivity_state.h", 
-      "src/core/lib/transport/metadata.c", 
-      "src/core/lib/transport/metadata.h", 
-      "src/core/lib/transport/metadata_batch.c", 
-      "src/core/lib/transport/metadata_batch.h", 
-      "src/core/lib/transport/static_metadata.c", 
-      "src/core/lib/transport/static_metadata.h", 
-      "src/core/lib/transport/transport.c", 
-      "src/core/lib/transport/transport.h", 
-      "src/core/lib/transport/transport_impl.h", 
-      "src/core/lib/transport/transport_op_string.c", 
-      "src/core/plugin_registry/grpc_unsecure_plugin_registry.c"
+      "src/core/lib/surface/init_unsecure.c"
     ], 
     "third_party": false, 
     "type": "lib"
@@ -5166,325 +4098,45 @@
   }, 
   {
     "deps": [
-      "grpc"
+      "grpc", 
+      "grpc++_base", 
+      "grpc++_codegen"
     ], 
     "headers": [
-      "include/grpc++/alarm.h", 
-      "include/grpc++/channel.h", 
-      "include/grpc++/client_context.h", 
-      "include/grpc++/completion_queue.h", 
-      "include/grpc++/create_channel.h", 
-      "include/grpc++/generic/async_generic_service.h", 
-      "include/grpc++/generic/generic_stub.h", 
-      "include/grpc++/grpc++.h", 
-      "include/grpc++/impl/call.h", 
-      "include/grpc++/impl/client_unary_call.h", 
-      "include/grpc++/impl/codegen/async_stream.h", 
-      "include/grpc++/impl/codegen/async_unary_call.h", 
-      "include/grpc++/impl/codegen/call.h", 
-      "include/grpc++/impl/codegen/call_hook.h", 
-      "include/grpc++/impl/codegen/channel_interface.h", 
-      "include/grpc++/impl/codegen/client_context.h", 
-      "include/grpc++/impl/codegen/client_unary_call.h", 
-      "include/grpc++/impl/codegen/completion_queue.h", 
-      "include/grpc++/impl/codegen/completion_queue_tag.h", 
-      "include/grpc++/impl/codegen/config.h", 
-      "include/grpc++/impl/codegen/config_protobuf.h", 
-      "include/grpc++/impl/codegen/core_codegen_interface.h", 
-      "include/grpc++/impl/codegen/grpc_library.h", 
-      "include/grpc++/impl/codegen/method_handler_impl.h", 
-      "include/grpc++/impl/codegen/proto_utils.h", 
-      "include/grpc++/impl/codegen/rpc_method.h", 
-      "include/grpc++/impl/codegen/rpc_service_method.h", 
-      "include/grpc++/impl/codegen/security/auth_context.h", 
-      "include/grpc++/impl/codegen/serialization_traits.h", 
-      "include/grpc++/impl/codegen/server_context.h", 
-      "include/grpc++/impl/codegen/server_interface.h", 
-      "include/grpc++/impl/codegen/service_type.h", 
-      "include/grpc++/impl/codegen/status.h", 
-      "include/grpc++/impl/codegen/status_code_enum.h", 
-      "include/grpc++/impl/codegen/string_ref.h", 
-      "include/grpc++/impl/codegen/stub_options.h", 
-      "include/grpc++/impl/codegen/sync.h", 
-      "include/grpc++/impl/codegen/sync_cxx11.h", 
-      "include/grpc++/impl/codegen/sync_no_cxx11.h", 
-      "include/grpc++/impl/codegen/sync_stream.h", 
-      "include/grpc++/impl/codegen/time.h", 
-      "include/grpc++/impl/grpc_library.h", 
-      "include/grpc++/impl/method_handler_impl.h", 
-      "include/grpc++/impl/proto_utils.h", 
-      "include/grpc++/impl/rpc_method.h", 
-      "include/grpc++/impl/rpc_service_method.h", 
-      "include/grpc++/impl/serialization_traits.h", 
-      "include/grpc++/impl/server_builder_option.h", 
-      "include/grpc++/impl/service_type.h", 
-      "include/grpc++/impl/sync.h", 
-      "include/grpc++/impl/sync_cxx11.h", 
-      "include/grpc++/impl/sync_no_cxx11.h", 
-      "include/grpc++/impl/thd.h", 
-      "include/grpc++/impl/thd_cxx11.h", 
-      "include/grpc++/impl/thd_no_cxx11.h", 
-      "include/grpc++/security/auth_context.h", 
-      "include/grpc++/security/auth_metadata_processor.h", 
-      "include/grpc++/security/credentials.h", 
-      "include/grpc++/security/server_credentials.h", 
-      "include/grpc++/server.h", 
-      "include/grpc++/server_builder.h", 
-      "include/grpc++/server_context.h", 
-      "include/grpc++/support/async_stream.h", 
-      "include/grpc++/support/async_unary_call.h", 
-      "include/grpc++/support/byte_buffer.h", 
-      "include/grpc++/support/channel_arguments.h", 
-      "include/grpc++/support/config.h", 
-      "include/grpc++/support/config_protobuf.h", 
-      "include/grpc++/support/slice.h", 
-      "include/grpc++/support/status.h", 
-      "include/grpc++/support/status_code_enum.h", 
-      "include/grpc++/support/string_ref.h", 
-      "include/grpc++/support/stub_options.h", 
-      "include/grpc++/support/sync_stream.h", 
-      "include/grpc++/support/time.h", 
-      "src/cpp/client/create_channel_internal.h", 
       "src/cpp/client/secure_credentials.h", 
       "src/cpp/common/core_codegen.h", 
-      "src/cpp/common/create_auth_context.h", 
       "src/cpp/common/secure_auth_context.h", 
-      "src/cpp/server/dynamic_thread_pool.h", 
-      "src/cpp/server/secure_server_credentials.h", 
-      "src/cpp/server/thread_pool_interface.h"
+      "src/cpp/server/secure_server_credentials.h"
     ], 
     "language": "c++", 
     "name": "grpc++", 
     "src": [
-      "include/grpc++/alarm.h", 
-      "include/grpc++/channel.h", 
-      "include/grpc++/client_context.h", 
-      "include/grpc++/completion_queue.h", 
-      "include/grpc++/create_channel.h", 
-      "include/grpc++/generic/async_generic_service.h", 
-      "include/grpc++/generic/generic_stub.h", 
-      "include/grpc++/grpc++.h", 
-      "include/grpc++/impl/call.h", 
-      "include/grpc++/impl/client_unary_call.h", 
-      "include/grpc++/impl/codegen/async_stream.h", 
-      "include/grpc++/impl/codegen/async_unary_call.h", 
-      "include/grpc++/impl/codegen/call.h", 
-      "include/grpc++/impl/codegen/call_hook.h", 
-      "include/grpc++/impl/codegen/channel_interface.h", 
-      "include/grpc++/impl/codegen/client_context.h", 
-      "include/grpc++/impl/codegen/client_unary_call.h", 
-      "include/grpc++/impl/codegen/completion_queue.h", 
-      "include/grpc++/impl/codegen/completion_queue_tag.h", 
-      "include/grpc++/impl/codegen/config.h", 
-      "include/grpc++/impl/codegen/config_protobuf.h", 
-      "include/grpc++/impl/codegen/core_codegen_interface.h", 
-      "include/grpc++/impl/codegen/grpc_library.h", 
-      "include/grpc++/impl/codegen/method_handler_impl.h", 
-      "include/grpc++/impl/codegen/proto_utils.h", 
-      "include/grpc++/impl/codegen/rpc_method.h", 
-      "include/grpc++/impl/codegen/rpc_service_method.h", 
-      "include/grpc++/impl/codegen/security/auth_context.h", 
-      "include/grpc++/impl/codegen/serialization_traits.h", 
-      "include/grpc++/impl/codegen/server_context.h", 
-      "include/grpc++/impl/codegen/server_interface.h", 
-      "include/grpc++/impl/codegen/service_type.h", 
-      "include/grpc++/impl/codegen/status.h", 
-      "include/grpc++/impl/codegen/status_code_enum.h", 
-      "include/grpc++/impl/codegen/string_ref.h", 
-      "include/grpc++/impl/codegen/stub_options.h", 
-      "include/grpc++/impl/codegen/sync.h", 
-      "include/grpc++/impl/codegen/sync_cxx11.h", 
-      "include/grpc++/impl/codegen/sync_no_cxx11.h", 
-      "include/grpc++/impl/codegen/sync_stream.h", 
-      "include/grpc++/impl/codegen/time.h", 
-      "include/grpc++/impl/grpc_library.h", 
-      "include/grpc++/impl/method_handler_impl.h", 
-      "include/grpc++/impl/proto_utils.h", 
-      "include/grpc++/impl/rpc_method.h", 
-      "include/grpc++/impl/rpc_service_method.h", 
-      "include/grpc++/impl/serialization_traits.h", 
-      "include/grpc++/impl/server_builder_option.h", 
-      "include/grpc++/impl/service_type.h", 
-      "include/grpc++/impl/sync.h", 
-      "include/grpc++/impl/sync_cxx11.h", 
-      "include/grpc++/impl/sync_no_cxx11.h", 
-      "include/grpc++/impl/thd.h", 
-      "include/grpc++/impl/thd_cxx11.h", 
-      "include/grpc++/impl/thd_no_cxx11.h", 
-      "include/grpc++/security/auth_context.h", 
-      "include/grpc++/security/auth_metadata_processor.h", 
-      "include/grpc++/security/credentials.h", 
-      "include/grpc++/security/server_credentials.h", 
-      "include/grpc++/server.h", 
-      "include/grpc++/server_builder.h", 
-      "include/grpc++/server_context.h", 
-      "include/grpc++/support/async_stream.h", 
-      "include/grpc++/support/async_unary_call.h", 
-      "include/grpc++/support/byte_buffer.h", 
-      "include/grpc++/support/channel_arguments.h", 
-      "include/grpc++/support/config.h", 
-      "include/grpc++/support/config_protobuf.h", 
-      "include/grpc++/support/slice.h", 
-      "include/grpc++/support/status.h", 
-      "include/grpc++/support/status_code_enum.h", 
-      "include/grpc++/support/string_ref.h", 
-      "include/grpc++/support/stub_options.h", 
-      "include/grpc++/support/sync_stream.h", 
-      "include/grpc++/support/time.h", 
-      "src/cpp/client/channel.cc", 
-      "src/cpp/client/client_context.cc", 
-      "src/cpp/client/create_channel.cc", 
-      "src/cpp/client/create_channel_internal.cc", 
-      "src/cpp/client/create_channel_internal.h", 
-      "src/cpp/client/credentials.cc", 
-      "src/cpp/client/generic_stub.cc", 
-      "src/cpp/client/insecure_credentials.cc", 
       "src/cpp/client/secure_credentials.cc", 
       "src/cpp/client/secure_credentials.h", 
-      "src/cpp/codegen/codegen_init.cc", 
       "src/cpp/common/auth_property_iterator.cc", 
-      "src/cpp/common/channel_arguments.cc", 
-      "src/cpp/common/completion_queue.cc", 
-      "src/cpp/common/core_codegen.cc", 
       "src/cpp/common/core_codegen.h", 
-      "src/cpp/common/create_auth_context.h", 
-      "src/cpp/common/rpc_method.cc", 
       "src/cpp/common/secure_auth_context.cc", 
       "src/cpp/common/secure_auth_context.h", 
       "src/cpp/common/secure_channel_arguments.cc", 
       "src/cpp/common/secure_create_auth_context.cc", 
-      "src/cpp/server/async_generic_service.cc", 
-      "src/cpp/server/create_default_thread_pool.cc", 
-      "src/cpp/server/dynamic_thread_pool.cc", 
-      "src/cpp/server/dynamic_thread_pool.h", 
-      "src/cpp/server/insecure_server_credentials.cc", 
       "src/cpp/server/secure_server_credentials.cc", 
-      "src/cpp/server/secure_server_credentials.h", 
-      "src/cpp/server/server.cc", 
-      "src/cpp/server/server_builder.cc", 
-      "src/cpp/server/server_context.cc", 
-      "src/cpp/server/server_credentials.cc", 
-      "src/cpp/server/thread_pool_interface.h", 
-      "src/cpp/util/byte_buffer.cc", 
-      "src/cpp/util/slice.cc", 
-      "src/cpp/util/status.cc", 
-      "src/cpp/util/string_ref.cc", 
-      "src/cpp/util/time.cc"
+      "src/cpp/server/secure_server_credentials.h"
     ], 
     "third_party": false, 
     "type": "lib"
   }, 
   {
-    "deps": [], 
-    "headers": [
-      "include/grpc++/impl/codegen/async_stream.h", 
-      "include/grpc++/impl/codegen/async_unary_call.h", 
-      "include/grpc++/impl/codegen/call.h", 
-      "include/grpc++/impl/codegen/call_hook.h", 
-      "include/grpc++/impl/codegen/channel_interface.h", 
-      "include/grpc++/impl/codegen/client_context.h", 
-      "include/grpc++/impl/codegen/client_unary_call.h", 
-      "include/grpc++/impl/codegen/completion_queue.h", 
-      "include/grpc++/impl/codegen/completion_queue_tag.h", 
-      "include/grpc++/impl/codegen/config.h", 
-      "include/grpc++/impl/codegen/config_protobuf.h", 
-      "include/grpc++/impl/codegen/core_codegen_interface.h", 
-      "include/grpc++/impl/codegen/grpc_library.h", 
-      "include/grpc++/impl/codegen/method_handler_impl.h", 
-      "include/grpc++/impl/codegen/proto_utils.h", 
-      "include/grpc++/impl/codegen/rpc_method.h", 
-      "include/grpc++/impl/codegen/rpc_service_method.h", 
-      "include/grpc++/impl/codegen/security/auth_context.h", 
-      "include/grpc++/impl/codegen/serialization_traits.h", 
-      "include/grpc++/impl/codegen/server_context.h", 
-      "include/grpc++/impl/codegen/server_interface.h", 
-      "include/grpc++/impl/codegen/service_type.h", 
-      "include/grpc++/impl/codegen/status.h", 
-      "include/grpc++/impl/codegen/status_code_enum.h", 
-      "include/grpc++/impl/codegen/string_ref.h", 
-      "include/grpc++/impl/codegen/stub_options.h", 
-      "include/grpc++/impl/codegen/sync.h", 
-      "include/grpc++/impl/codegen/sync_cxx11.h", 
-      "include/grpc++/impl/codegen/sync_no_cxx11.h", 
-      "include/grpc++/impl/codegen/sync_stream.h", 
-      "include/grpc++/impl/codegen/time.h", 
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h"
+    "deps": [
+      "gpr", 
+      "gpr_codegen", 
+      "grpc", 
+      "grpc++_codegen", 
+      "grpc_codegen"
     ], 
+    "headers": [], 
     "language": "c++", 
     "name": "grpc++_codegen_lib", 
-    "src": [
-      "include/grpc++/impl/codegen/async_stream.h", 
-      "include/grpc++/impl/codegen/async_unary_call.h", 
-      "include/grpc++/impl/codegen/call.h", 
-      "include/grpc++/impl/codegen/call_hook.h", 
-      "include/grpc++/impl/codegen/channel_interface.h", 
-      "include/grpc++/impl/codegen/client_context.h", 
-      "include/grpc++/impl/codegen/client_unary_call.h", 
-      "include/grpc++/impl/codegen/completion_queue.h", 
-      "include/grpc++/impl/codegen/completion_queue_tag.h", 
-      "include/grpc++/impl/codegen/config.h", 
-      "include/grpc++/impl/codegen/config_protobuf.h", 
-      "include/grpc++/impl/codegen/core_codegen_interface.h", 
-      "include/grpc++/impl/codegen/grpc_library.h", 
-      "include/grpc++/impl/codegen/method_handler_impl.h", 
-      "include/grpc++/impl/codegen/proto_utils.h", 
-      "include/grpc++/impl/codegen/rpc_method.h", 
-      "include/grpc++/impl/codegen/rpc_service_method.h", 
-      "include/grpc++/impl/codegen/security/auth_context.h", 
-      "include/grpc++/impl/codegen/serialization_traits.h", 
-      "include/grpc++/impl/codegen/server_context.h", 
-      "include/grpc++/impl/codegen/server_interface.h", 
-      "include/grpc++/impl/codegen/service_type.h", 
-      "include/grpc++/impl/codegen/status.h", 
-      "include/grpc++/impl/codegen/status_code_enum.h", 
-      "include/grpc++/impl/codegen/string_ref.h", 
-      "include/grpc++/impl/codegen/stub_options.h", 
-      "include/grpc++/impl/codegen/sync.h", 
-      "include/grpc++/impl/codegen/sync_cxx11.h", 
-      "include/grpc++/impl/codegen/sync_no_cxx11.h", 
-      "include/grpc++/impl/codegen/sync_stream.h", 
-      "include/grpc++/impl/codegen/time.h", 
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/byte_buffer.h", 
-      "include/grpc/impl/codegen/compression_types.h", 
-      "include/grpc/impl/codegen/connectivity_state.h", 
-      "include/grpc/impl/codegen/grpc_types.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/propagation_bits.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/status.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h", 
-      "src/cpp/codegen/codegen_init.cc"
-    ], 
+    "src": [], 
     "third_party": false, 
     "type": "lib"
   }, 
@@ -5546,224 +4198,28 @@
   {
     "deps": [
       "gpr", 
+      "grpc", 
+      "grpc++_base", 
+      "grpc++_codegen", 
       "grpc_unsecure"
     ], 
-    "headers": [
-      "include/grpc++/alarm.h", 
-      "include/grpc++/channel.h", 
-      "include/grpc++/client_context.h", 
-      "include/grpc++/completion_queue.h", 
-      "include/grpc++/create_channel.h", 
-      "include/grpc++/generic/async_generic_service.h", 
-      "include/grpc++/generic/generic_stub.h", 
-      "include/grpc++/grpc++.h", 
-      "include/grpc++/impl/call.h", 
-      "include/grpc++/impl/client_unary_call.h", 
-      "include/grpc++/impl/codegen/async_stream.h", 
-      "include/grpc++/impl/codegen/async_unary_call.h", 
-      "include/grpc++/impl/codegen/call.h", 
-      "include/grpc++/impl/codegen/call_hook.h", 
-      "include/grpc++/impl/codegen/channel_interface.h", 
-      "include/grpc++/impl/codegen/client_context.h", 
-      "include/grpc++/impl/codegen/client_unary_call.h", 
-      "include/grpc++/impl/codegen/completion_queue.h", 
-      "include/grpc++/impl/codegen/completion_queue_tag.h", 
-      "include/grpc++/impl/codegen/config.h", 
-      "include/grpc++/impl/codegen/config_protobuf.h", 
-      "include/grpc++/impl/codegen/core_codegen_interface.h", 
-      "include/grpc++/impl/codegen/grpc_library.h", 
-      "include/grpc++/impl/codegen/method_handler_impl.h", 
-      "include/grpc++/impl/codegen/proto_utils.h", 
-      "include/grpc++/impl/codegen/rpc_method.h", 
-      "include/grpc++/impl/codegen/rpc_service_method.h", 
-      "include/grpc++/impl/codegen/security/auth_context.h", 
-      "include/grpc++/impl/codegen/serialization_traits.h", 
-      "include/grpc++/impl/codegen/server_context.h", 
-      "include/grpc++/impl/codegen/server_interface.h", 
-      "include/grpc++/impl/codegen/service_type.h", 
-      "include/grpc++/impl/codegen/status.h", 
-      "include/grpc++/impl/codegen/status_code_enum.h", 
-      "include/grpc++/impl/codegen/string_ref.h", 
-      "include/grpc++/impl/codegen/stub_options.h", 
-      "include/grpc++/impl/codegen/sync.h", 
-      "include/grpc++/impl/codegen/sync_cxx11.h", 
-      "include/grpc++/impl/codegen/sync_no_cxx11.h", 
-      "include/grpc++/impl/codegen/sync_stream.h", 
-      "include/grpc++/impl/codegen/time.h", 
-      "include/grpc++/impl/grpc_library.h", 
-      "include/grpc++/impl/method_handler_impl.h", 
-      "include/grpc++/impl/proto_utils.h", 
-      "include/grpc++/impl/rpc_method.h", 
-      "include/grpc++/impl/rpc_service_method.h", 
-      "include/grpc++/impl/serialization_traits.h", 
-      "include/grpc++/impl/server_builder_option.h", 
-      "include/grpc++/impl/service_type.h", 
-      "include/grpc++/impl/sync.h", 
-      "include/grpc++/impl/sync_cxx11.h", 
-      "include/grpc++/impl/sync_no_cxx11.h", 
-      "include/grpc++/impl/thd.h", 
-      "include/grpc++/impl/thd_cxx11.h", 
-      "include/grpc++/impl/thd_no_cxx11.h", 
-      "include/grpc++/security/auth_context.h", 
-      "include/grpc++/security/auth_metadata_processor.h", 
-      "include/grpc++/security/credentials.h", 
-      "include/grpc++/security/server_credentials.h", 
-      "include/grpc++/server.h", 
-      "include/grpc++/server_builder.h", 
-      "include/grpc++/server_context.h", 
-      "include/grpc++/support/async_stream.h", 
-      "include/grpc++/support/async_unary_call.h", 
-      "include/grpc++/support/byte_buffer.h", 
-      "include/grpc++/support/channel_arguments.h", 
-      "include/grpc++/support/config.h", 
-      "include/grpc++/support/config_protobuf.h", 
-      "include/grpc++/support/slice.h", 
-      "include/grpc++/support/status.h", 
-      "include/grpc++/support/status_code_enum.h", 
-      "include/grpc++/support/string_ref.h", 
-      "include/grpc++/support/stub_options.h", 
-      "include/grpc++/support/sync_stream.h", 
-      "include/grpc++/support/time.h", 
-      "src/cpp/client/create_channel_internal.h", 
-      "src/cpp/common/core_codegen.h", 
-      "src/cpp/common/create_auth_context.h", 
-      "src/cpp/server/dynamic_thread_pool.h", 
-      "src/cpp/server/thread_pool_interface.h"
-    ], 
+    "headers": [], 
     "language": "c++", 
     "name": "grpc++_unsecure", 
     "src": [
-      "include/grpc++/alarm.h", 
-      "include/grpc++/channel.h", 
-      "include/grpc++/client_context.h", 
-      "include/grpc++/completion_queue.h", 
-      "include/grpc++/create_channel.h", 
-      "include/grpc++/generic/async_generic_service.h", 
-      "include/grpc++/generic/generic_stub.h", 
-      "include/grpc++/grpc++.h", 
-      "include/grpc++/impl/call.h", 
-      "include/grpc++/impl/client_unary_call.h", 
-      "include/grpc++/impl/codegen/async_stream.h", 
-      "include/grpc++/impl/codegen/async_unary_call.h", 
-      "include/grpc++/impl/codegen/call.h", 
-      "include/grpc++/impl/codegen/call_hook.h", 
-      "include/grpc++/impl/codegen/channel_interface.h", 
-      "include/grpc++/impl/codegen/client_context.h", 
-      "include/grpc++/impl/codegen/client_unary_call.h", 
-      "include/grpc++/impl/codegen/completion_queue.h", 
-      "include/grpc++/impl/codegen/completion_queue_tag.h", 
-      "include/grpc++/impl/codegen/config.h", 
-      "include/grpc++/impl/codegen/config_protobuf.h", 
-      "include/grpc++/impl/codegen/core_codegen_interface.h", 
-      "include/grpc++/impl/codegen/grpc_library.h", 
-      "include/grpc++/impl/codegen/method_handler_impl.h", 
-      "include/grpc++/impl/codegen/proto_utils.h", 
-      "include/grpc++/impl/codegen/rpc_method.h", 
-      "include/grpc++/impl/codegen/rpc_service_method.h", 
-      "include/grpc++/impl/codegen/security/auth_context.h", 
-      "include/grpc++/impl/codegen/serialization_traits.h", 
-      "include/grpc++/impl/codegen/server_context.h", 
-      "include/grpc++/impl/codegen/server_interface.h", 
-      "include/grpc++/impl/codegen/service_type.h", 
-      "include/grpc++/impl/codegen/status.h", 
-      "include/grpc++/impl/codegen/status_code_enum.h", 
-      "include/grpc++/impl/codegen/string_ref.h", 
-      "include/grpc++/impl/codegen/stub_options.h", 
-      "include/grpc++/impl/codegen/sync.h", 
-      "include/grpc++/impl/codegen/sync_cxx11.h", 
-      "include/grpc++/impl/codegen/sync_no_cxx11.h", 
-      "include/grpc++/impl/codegen/sync_stream.h", 
-      "include/grpc++/impl/codegen/time.h", 
-      "include/grpc++/impl/grpc_library.h", 
-      "include/grpc++/impl/method_handler_impl.h", 
-      "include/grpc++/impl/proto_utils.h", 
-      "include/grpc++/impl/rpc_method.h", 
-      "include/grpc++/impl/rpc_service_method.h", 
-      "include/grpc++/impl/serialization_traits.h", 
-      "include/grpc++/impl/server_builder_option.h", 
-      "include/grpc++/impl/service_type.h", 
-      "include/grpc++/impl/sync.h", 
-      "include/grpc++/impl/sync_cxx11.h", 
-      "include/grpc++/impl/sync_no_cxx11.h", 
-      "include/grpc++/impl/thd.h", 
-      "include/grpc++/impl/thd_cxx11.h", 
-      "include/grpc++/impl/thd_no_cxx11.h", 
-      "include/grpc++/security/auth_context.h", 
-      "include/grpc++/security/auth_metadata_processor.h", 
-      "include/grpc++/security/credentials.h", 
-      "include/grpc++/security/server_credentials.h", 
-      "include/grpc++/server.h", 
-      "include/grpc++/server_builder.h", 
-      "include/grpc++/server_context.h", 
-      "include/grpc++/support/async_stream.h", 
-      "include/grpc++/support/async_unary_call.h", 
-      "include/grpc++/support/byte_buffer.h", 
-      "include/grpc++/support/channel_arguments.h", 
-      "include/grpc++/support/config.h", 
-      "include/grpc++/support/config_protobuf.h", 
-      "include/grpc++/support/slice.h", 
-      "include/grpc++/support/status.h", 
-      "include/grpc++/support/status_code_enum.h", 
-      "include/grpc++/support/string_ref.h", 
-      "include/grpc++/support/stub_options.h", 
-      "include/grpc++/support/sync_stream.h", 
-      "include/grpc++/support/time.h", 
-      "src/cpp/client/channel.cc", 
-      "src/cpp/client/client_context.cc", 
-      "src/cpp/client/create_channel.cc", 
-      "src/cpp/client/create_channel_internal.cc", 
-      "src/cpp/client/create_channel_internal.h", 
-      "src/cpp/client/credentials.cc", 
-      "src/cpp/client/generic_stub.cc", 
-      "src/cpp/client/insecure_credentials.cc", 
-      "src/cpp/codegen/codegen_init.cc", 
-      "src/cpp/common/channel_arguments.cc", 
-      "src/cpp/common/completion_queue.cc", 
-      "src/cpp/common/core_codegen.cc", 
-      "src/cpp/common/core_codegen.h", 
-      "src/cpp/common/create_auth_context.h", 
-      "src/cpp/common/insecure_create_auth_context.cc", 
-      "src/cpp/common/rpc_method.cc", 
-      "src/cpp/server/async_generic_service.cc", 
-      "src/cpp/server/create_default_thread_pool.cc", 
-      "src/cpp/server/dynamic_thread_pool.cc", 
-      "src/cpp/server/dynamic_thread_pool.h", 
-      "src/cpp/server/insecure_server_credentials.cc", 
-      "src/cpp/server/server.cc", 
-      "src/cpp/server/server_builder.cc", 
-      "src/cpp/server/server_context.cc", 
-      "src/cpp/server/server_credentials.cc", 
-      "src/cpp/server/thread_pool_interface.h", 
-      "src/cpp/util/byte_buffer.cc", 
-      "src/cpp/util/slice.cc", 
-      "src/cpp/util/status.cc", 
-      "src/cpp/util/string_ref.cc", 
-      "src/cpp/util/time.cc"
+      "src/cpp/common/insecure_create_auth_context.cc"
     ], 
     "third_party": false, 
     "type": "lib"
   }, 
   {
     "deps": [
+      "gpr_codegen", 
       "grpc++_codegen_lib"
     ], 
     "headers": [
       "include/grpc++/support/config.h", 
       "include/grpc++/support/config_protobuf.h", 
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h", 
       "src/compiler/config.h", 
       "src/compiler/cpp_generator.h", 
       "src/compiler/cpp_generator_helpers.h", 
@@ -5783,20 +4239,6 @@
     "src": [
       "include/grpc++/support/config.h", 
       "include/grpc++/support/config_protobuf.h", 
-      "include/grpc/impl/codegen/alloc.h", 
-      "include/grpc/impl/codegen/atm.h", 
-      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
-      "include/grpc/impl/codegen/atm_gcc_sync.h", 
-      "include/grpc/impl/codegen/atm_win32.h", 
-      "include/grpc/impl/codegen/log.h", 
-      "include/grpc/impl/codegen/port_platform.h", 
-      "include/grpc/impl/codegen/slice.h", 
-      "include/grpc/impl/codegen/slice_buffer.h", 
-      "include/grpc/impl/codegen/sync.h", 
-      "include/grpc/impl/codegen/sync_generic.h", 
-      "include/grpc/impl/codegen/sync_posix.h", 
-      "include/grpc/impl/codegen/sync_win32.h", 
-      "include/grpc/impl/codegen/time.h", 
       "src/compiler/config.h", 
       "src/compiler/cpp_generator.cc", 
       "src/compiler/cpp_generator.h", 
@@ -6738,5 +5180,1124 @@
     ], 
     "third_party": false, 
     "type": "lib"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_base"
+    ], 
+    "headers": [
+      "include/grpc/census.h", 
+      "src/core/ext/census/aggregation.h", 
+      "src/core/ext/census/census_interface.h", 
+      "src/core/ext/census/census_rpc_stats.h", 
+      "src/core/ext/census/grpc_filter.h", 
+      "src/core/ext/census/mlog.h", 
+      "src/core/ext/census/rpc_metric_id.h"
+    ], 
+    "language": "c", 
+    "name": "census", 
+    "src": [
+      "include/grpc/census.h", 
+      "src/core/ext/census/aggregation.h", 
+      "src/core/ext/census/census_interface.h", 
+      "src/core/ext/census/census_rpc_stats.h", 
+      "src/core/ext/census/context.c", 
+      "src/core/ext/census/grpc_context.c", 
+      "src/core/ext/census/grpc_filter.c", 
+      "src/core/ext/census/grpc_filter.h", 
+      "src/core/ext/census/grpc_plugin.c", 
+      "src/core/ext/census/initialize.c", 
+      "src/core/ext/census/mlog.c", 
+      "src/core/ext/census/mlog.h", 
+      "src/core/ext/census/operation.c", 
+      "src/core/ext/census/placeholders.c", 
+      "src/core/ext/census/rpc_metric_id.h", 
+      "src/core/ext/census/tracing.c"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr_codegen"
+    ], 
+    "headers": [
+      "include/grpc/support/alloc.h", 
+      "include/grpc/support/atm.h", 
+      "include/grpc/support/atm_gcc_atomic.h", 
+      "include/grpc/support/atm_gcc_sync.h", 
+      "include/grpc/support/atm_win32.h", 
+      "include/grpc/support/avl.h", 
+      "include/grpc/support/cmdline.h", 
+      "include/grpc/support/cpu.h", 
+      "include/grpc/support/histogram.h", 
+      "include/grpc/support/host_port.h", 
+      "include/grpc/support/log.h", 
+      "include/grpc/support/log_win32.h", 
+      "include/grpc/support/port_platform.h", 
+      "include/grpc/support/slice.h", 
+      "include/grpc/support/slice_buffer.h", 
+      "include/grpc/support/string_util.h", 
+      "include/grpc/support/subprocess.h", 
+      "include/grpc/support/sync.h", 
+      "include/grpc/support/sync_generic.h", 
+      "include/grpc/support/sync_posix.h", 
+      "include/grpc/support/sync_win32.h", 
+      "include/grpc/support/thd.h", 
+      "include/grpc/support/time.h", 
+      "include/grpc/support/tls.h", 
+      "include/grpc/support/tls_gcc.h", 
+      "include/grpc/support/tls_msvc.h", 
+      "include/grpc/support/tls_pthread.h", 
+      "include/grpc/support/useful.h", 
+      "src/core/lib/profiling/timers.h", 
+      "src/core/lib/support/backoff.h", 
+      "src/core/lib/support/block_annotate.h", 
+      "src/core/lib/support/env.h", 
+      "src/core/lib/support/load_file.h", 
+      "src/core/lib/support/murmur_hash.h", 
+      "src/core/lib/support/stack_lockfree.h", 
+      "src/core/lib/support/string.h", 
+      "src/core/lib/support/string_win32.h", 
+      "src/core/lib/support/thd_internal.h", 
+      "src/core/lib/support/time_precise.h", 
+      "src/core/lib/support/tmpfile.h"
+    ], 
+    "language": "c", 
+    "name": "gpr_base", 
+    "src": [
+      "include/grpc/support/alloc.h", 
+      "include/grpc/support/atm.h", 
+      "include/grpc/support/atm_gcc_atomic.h", 
+      "include/grpc/support/atm_gcc_sync.h", 
+      "include/grpc/support/atm_win32.h", 
+      "include/grpc/support/avl.h", 
+      "include/grpc/support/cmdline.h", 
+      "include/grpc/support/cpu.h", 
+      "include/grpc/support/histogram.h", 
+      "include/grpc/support/host_port.h", 
+      "include/grpc/support/log.h", 
+      "include/grpc/support/log_win32.h", 
+      "include/grpc/support/port_platform.h", 
+      "include/grpc/support/slice.h", 
+      "include/grpc/support/slice_buffer.h", 
+      "include/grpc/support/string_util.h", 
+      "include/grpc/support/subprocess.h", 
+      "include/grpc/support/sync.h", 
+      "include/grpc/support/sync_generic.h", 
+      "include/grpc/support/sync_posix.h", 
+      "include/grpc/support/sync_win32.h", 
+      "include/grpc/support/thd.h", 
+      "include/grpc/support/time.h", 
+      "include/grpc/support/tls.h", 
+      "include/grpc/support/tls_gcc.h", 
+      "include/grpc/support/tls_msvc.h", 
+      "include/grpc/support/tls_pthread.h", 
+      "include/grpc/support/useful.h", 
+      "src/core/lib/profiling/basic_timers.c", 
+      "src/core/lib/profiling/stap_timers.c", 
+      "src/core/lib/profiling/timers.h", 
+      "src/core/lib/support/alloc.c", 
+      "src/core/lib/support/avl.c", 
+      "src/core/lib/support/backoff.c", 
+      "src/core/lib/support/backoff.h", 
+      "src/core/lib/support/block_annotate.h", 
+      "src/core/lib/support/cmdline.c", 
+      "src/core/lib/support/cpu_iphone.c", 
+      "src/core/lib/support/cpu_linux.c", 
+      "src/core/lib/support/cpu_posix.c", 
+      "src/core/lib/support/cpu_windows.c", 
+      "src/core/lib/support/env.h", 
+      "src/core/lib/support/env_linux.c", 
+      "src/core/lib/support/env_posix.c", 
+      "src/core/lib/support/env_win32.c", 
+      "src/core/lib/support/histogram.c", 
+      "src/core/lib/support/host_port.c", 
+      "src/core/lib/support/load_file.c", 
+      "src/core/lib/support/load_file.h", 
+      "src/core/lib/support/log.c", 
+      "src/core/lib/support/log_android.c", 
+      "src/core/lib/support/log_linux.c", 
+      "src/core/lib/support/log_posix.c", 
+      "src/core/lib/support/log_win32.c", 
+      "src/core/lib/support/murmur_hash.c", 
+      "src/core/lib/support/murmur_hash.h", 
+      "src/core/lib/support/slice.c", 
+      "src/core/lib/support/slice_buffer.c", 
+      "src/core/lib/support/stack_lockfree.c", 
+      "src/core/lib/support/stack_lockfree.h", 
+      "src/core/lib/support/string.c", 
+      "src/core/lib/support/string.h", 
+      "src/core/lib/support/string_posix.c", 
+      "src/core/lib/support/string_win32.c", 
+      "src/core/lib/support/string_win32.h", 
+      "src/core/lib/support/subprocess_posix.c", 
+      "src/core/lib/support/subprocess_windows.c", 
+      "src/core/lib/support/sync.c", 
+      "src/core/lib/support/sync_posix.c", 
+      "src/core/lib/support/sync_win32.c", 
+      "src/core/lib/support/thd.c", 
+      "src/core/lib/support/thd_internal.h", 
+      "src/core/lib/support/thd_posix.c", 
+      "src/core/lib/support/thd_win32.c", 
+      "src/core/lib/support/time.c", 
+      "src/core/lib/support/time_posix.c", 
+      "src/core/lib/support/time_precise.c", 
+      "src/core/lib/support/time_precise.h", 
+      "src/core/lib/support/time_win32.c", 
+      "src/core/lib/support/tls_pthread.c", 
+      "src/core/lib/support/tmpfile.h", 
+      "src/core/lib/support/tmpfile_posix.c", 
+      "src/core/lib/support/tmpfile_win32.c", 
+      "src/core/lib/support/wrap_memcpy.c"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [], 
+    "headers": [
+      "include/grpc/impl/codegen/alloc.h", 
+      "include/grpc/impl/codegen/atm.h", 
+      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
+      "include/grpc/impl/codegen/atm_gcc_sync.h", 
+      "include/grpc/impl/codegen/atm_win32.h", 
+      "include/grpc/impl/codegen/log.h", 
+      "include/grpc/impl/codegen/port_platform.h", 
+      "include/grpc/impl/codegen/slice.h", 
+      "include/grpc/impl/codegen/slice_buffer.h", 
+      "include/grpc/impl/codegen/sync.h", 
+      "include/grpc/impl/codegen/sync_generic.h", 
+      "include/grpc/impl/codegen/sync_posix.h", 
+      "include/grpc/impl/codegen/sync_win32.h", 
+      "include/grpc/impl/codegen/time.h"
+    ], 
+    "language": "c", 
+    "name": "gpr_codegen", 
+    "src": [
+      "include/grpc/impl/codegen/alloc.h", 
+      "include/grpc/impl/codegen/atm.h", 
+      "include/grpc/impl/codegen/atm_gcc_atomic.h", 
+      "include/grpc/impl/codegen/atm_gcc_sync.h", 
+      "include/grpc/impl/codegen/atm_win32.h", 
+      "include/grpc/impl/codegen/log.h", 
+      "include/grpc/impl/codegen/port_platform.h", 
+      "include/grpc/impl/codegen/slice.h", 
+      "include/grpc/impl/codegen/slice_buffer.h", 
+      "include/grpc/impl/codegen/sync.h", 
+      "include/grpc/impl/codegen/sync_generic.h", 
+      "include/grpc/impl/codegen/sync_posix.h", 
+      "include/grpc/impl/codegen/sync_win32.h", 
+      "include/grpc/impl/codegen/time.h"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "grpc", 
+      "grpc++_codegen"
+    ], 
+    "headers": [
+      "include/grpc++/alarm.h", 
+      "include/grpc++/channel.h", 
+      "include/grpc++/client_context.h", 
+      "include/grpc++/completion_queue.h", 
+      "include/grpc++/create_channel.h", 
+      "include/grpc++/generic/async_generic_service.h", 
+      "include/grpc++/generic/generic_stub.h", 
+      "include/grpc++/grpc++.h", 
+      "include/grpc++/impl/call.h", 
+      "include/grpc++/impl/client_unary_call.h", 
+      "include/grpc++/impl/grpc_library.h", 
+      "include/grpc++/impl/method_handler_impl.h", 
+      "include/grpc++/impl/proto_utils.h", 
+      "include/grpc++/impl/rpc_method.h", 
+      "include/grpc++/impl/rpc_service_method.h", 
+      "include/grpc++/impl/serialization_traits.h", 
+      "include/grpc++/impl/server_builder_option.h", 
+      "include/grpc++/impl/service_type.h", 
+      "include/grpc++/impl/sync.h", 
+      "include/grpc++/impl/sync_cxx11.h", 
+      "include/grpc++/impl/sync_no_cxx11.h", 
+      "include/grpc++/impl/thd.h", 
+      "include/grpc++/impl/thd_cxx11.h", 
+      "include/grpc++/impl/thd_no_cxx11.h", 
+      "include/grpc++/security/auth_context.h", 
+      "include/grpc++/security/auth_metadata_processor.h", 
+      "include/grpc++/security/credentials.h", 
+      "include/grpc++/security/server_credentials.h", 
+      "include/grpc++/server.h", 
+      "include/grpc++/server_builder.h", 
+      "include/grpc++/server_context.h", 
+      "include/grpc++/support/async_stream.h", 
+      "include/grpc++/support/async_unary_call.h", 
+      "include/grpc++/support/byte_buffer.h", 
+      "include/grpc++/support/channel_arguments.h", 
+      "include/grpc++/support/config.h", 
+      "include/grpc++/support/config_protobuf.h", 
+      "include/grpc++/support/slice.h", 
+      "include/grpc++/support/status.h", 
+      "include/grpc++/support/status_code_enum.h", 
+      "include/grpc++/support/string_ref.h", 
+      "include/grpc++/support/stub_options.h", 
+      "include/grpc++/support/sync_stream.h", 
+      "include/grpc++/support/time.h", 
+      "src/cpp/client/create_channel_internal.h", 
+      "src/cpp/common/core_codegen.h", 
+      "src/cpp/common/create_auth_context.h", 
+      "src/cpp/server/dynamic_thread_pool.h", 
+      "src/cpp/server/thread_pool_interface.h"
+    ], 
+    "language": "c", 
+    "name": "grpc++_base", 
+    "src": [
+      "include/grpc++/alarm.h", 
+      "include/grpc++/channel.h", 
+      "include/grpc++/client_context.h", 
+      "include/grpc++/completion_queue.h", 
+      "include/grpc++/create_channel.h", 
+      "include/grpc++/generic/async_generic_service.h", 
+      "include/grpc++/generic/generic_stub.h", 
+      "include/grpc++/grpc++.h", 
+      "include/grpc++/impl/call.h", 
+      "include/grpc++/impl/client_unary_call.h", 
+      "include/grpc++/impl/grpc_library.h", 
+      "include/grpc++/impl/method_handler_impl.h", 
+      "include/grpc++/impl/proto_utils.h", 
+      "include/grpc++/impl/rpc_method.h", 
+      "include/grpc++/impl/rpc_service_method.h", 
+      "include/grpc++/impl/serialization_traits.h", 
+      "include/grpc++/impl/server_builder_option.h", 
+      "include/grpc++/impl/service_type.h", 
+      "include/grpc++/impl/sync.h", 
+      "include/grpc++/impl/sync_cxx11.h", 
+      "include/grpc++/impl/sync_no_cxx11.h", 
+      "include/grpc++/impl/thd.h", 
+      "include/grpc++/impl/thd_cxx11.h", 
+      "include/grpc++/impl/thd_no_cxx11.h", 
+      "include/grpc++/security/auth_context.h", 
+      "include/grpc++/security/auth_metadata_processor.h", 
+      "include/grpc++/security/credentials.h", 
+      "include/grpc++/security/server_credentials.h", 
+      "include/grpc++/server.h", 
+      "include/grpc++/server_builder.h", 
+      "include/grpc++/server_context.h", 
+      "include/grpc++/support/async_stream.h", 
+      "include/grpc++/support/async_unary_call.h", 
+      "include/grpc++/support/byte_buffer.h", 
+      "include/grpc++/support/channel_arguments.h", 
+      "include/grpc++/support/config.h", 
+      "include/grpc++/support/config_protobuf.h", 
+      "include/grpc++/support/slice.h", 
+      "include/grpc++/support/status.h", 
+      "include/grpc++/support/status_code_enum.h", 
+      "include/grpc++/support/string_ref.h", 
+      "include/grpc++/support/stub_options.h", 
+      "include/grpc++/support/sync_stream.h", 
+      "include/grpc++/support/time.h", 
+      "src/cpp/client/channel.cc", 
+      "src/cpp/client/client_context.cc", 
+      "src/cpp/client/create_channel.cc", 
+      "src/cpp/client/create_channel_internal.cc", 
+      "src/cpp/client/create_channel_internal.h", 
+      "src/cpp/client/credentials.cc", 
+      "src/cpp/client/generic_stub.cc", 
+      "src/cpp/client/insecure_credentials.cc", 
+      "src/cpp/common/channel_arguments.cc", 
+      "src/cpp/common/completion_queue.cc", 
+      "src/cpp/common/core_codegen.cc", 
+      "src/cpp/common/core_codegen.h", 
+      "src/cpp/common/create_auth_context.h", 
+      "src/cpp/common/rpc_method.cc", 
+      "src/cpp/server/async_generic_service.cc", 
+      "src/cpp/server/create_default_thread_pool.cc", 
+      "src/cpp/server/dynamic_thread_pool.cc", 
+      "src/cpp/server/dynamic_thread_pool.h", 
+      "src/cpp/server/insecure_server_credentials.cc", 
+      "src/cpp/server/server.cc", 
+      "src/cpp/server/server_builder.cc", 
+      "src/cpp/server/server_context.cc", 
+      "src/cpp/server/server_credentials.cc", 
+      "src/cpp/server/thread_pool_interface.h", 
+      "src/cpp/util/byte_buffer.cc", 
+      "src/cpp/util/slice.cc", 
+      "src/cpp/util/status.cc", 
+      "src/cpp/util/string_ref.cc", 
+      "src/cpp/util/time.cc"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "grpc"
+    ], 
+    "headers": [
+      "include/grpc++/impl/codegen/async_stream.h", 
+      "include/grpc++/impl/codegen/async_unary_call.h", 
+      "include/grpc++/impl/codegen/call.h", 
+      "include/grpc++/impl/codegen/call_hook.h", 
+      "include/grpc++/impl/codegen/channel_interface.h", 
+      "include/grpc++/impl/codegen/client_context.h", 
+      "include/grpc++/impl/codegen/client_unary_call.h", 
+      "include/grpc++/impl/codegen/completion_queue.h", 
+      "include/grpc++/impl/codegen/completion_queue_tag.h", 
+      "include/grpc++/impl/codegen/config.h", 
+      "include/grpc++/impl/codegen/config_protobuf.h", 
+      "include/grpc++/impl/codegen/core_codegen_interface.h", 
+      "include/grpc++/impl/codegen/grpc_library.h", 
+      "include/grpc++/impl/codegen/method_handler_impl.h", 
+      "include/grpc++/impl/codegen/proto_utils.h", 
+      "include/grpc++/impl/codegen/rpc_method.h", 
+      "include/grpc++/impl/codegen/rpc_service_method.h", 
+      "include/grpc++/impl/codegen/security/auth_context.h", 
+      "include/grpc++/impl/codegen/serialization_traits.h", 
+      "include/grpc++/impl/codegen/server_context.h", 
+      "include/grpc++/impl/codegen/server_interface.h", 
+      "include/grpc++/impl/codegen/service_type.h", 
+      "include/grpc++/impl/codegen/status.h", 
+      "include/grpc++/impl/codegen/status_code_enum.h", 
+      "include/grpc++/impl/codegen/string_ref.h", 
+      "include/grpc++/impl/codegen/stub_options.h", 
+      "include/grpc++/impl/codegen/sync.h", 
+      "include/grpc++/impl/codegen/sync_cxx11.h", 
+      "include/grpc++/impl/codegen/sync_no_cxx11.h", 
+      "include/grpc++/impl/codegen/sync_stream.h", 
+      "include/grpc++/impl/codegen/time.h"
+    ], 
+    "language": "c", 
+    "name": "grpc++_codegen", 
+    "src": [
+      "include/grpc++/impl/codegen/async_stream.h", 
+      "include/grpc++/impl/codegen/async_unary_call.h", 
+      "include/grpc++/impl/codegen/call.h", 
+      "include/grpc++/impl/codegen/call_hook.h", 
+      "include/grpc++/impl/codegen/channel_interface.h", 
+      "include/grpc++/impl/codegen/client_context.h", 
+      "include/grpc++/impl/codegen/client_unary_call.h", 
+      "include/grpc++/impl/codegen/completion_queue.h", 
+      "include/grpc++/impl/codegen/completion_queue_tag.h", 
+      "include/grpc++/impl/codegen/config.h", 
+      "include/grpc++/impl/codegen/config_protobuf.h", 
+      "include/grpc++/impl/codegen/core_codegen_interface.h", 
+      "include/grpc++/impl/codegen/grpc_library.h", 
+      "include/grpc++/impl/codegen/method_handler_impl.h", 
+      "include/grpc++/impl/codegen/proto_utils.h", 
+      "include/grpc++/impl/codegen/rpc_method.h", 
+      "include/grpc++/impl/codegen/rpc_service_method.h", 
+      "include/grpc++/impl/codegen/security/auth_context.h", 
+      "include/grpc++/impl/codegen/serialization_traits.h", 
+      "include/grpc++/impl/codegen/server_context.h", 
+      "include/grpc++/impl/codegen/server_interface.h", 
+      "include/grpc++/impl/codegen/service_type.h", 
+      "include/grpc++/impl/codegen/status.h", 
+      "include/grpc++/impl/codegen/status_code_enum.h", 
+      "include/grpc++/impl/codegen/string_ref.h", 
+      "include/grpc++/impl/codegen/stub_options.h", 
+      "include/grpc++/impl/codegen/sync.h", 
+      "include/grpc++/impl/codegen/sync_cxx11.h", 
+      "include/grpc++/impl/codegen/sync_no_cxx11.h", 
+      "include/grpc++/impl/codegen/sync_stream.h", 
+      "include/grpc++/impl/codegen/time.h", 
+      "src/cpp/codegen/codegen_init.cc"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_codegen"
+    ], 
+    "headers": [
+      "include/grpc/byte_buffer.h", 
+      "include/grpc/byte_buffer_reader.h", 
+      "include/grpc/compression.h", 
+      "include/grpc/grpc.h", 
+      "include/grpc/status.h", 
+      "src/core/lib/channel/channel_args.h", 
+      "src/core/lib/channel/channel_stack.h", 
+      "src/core/lib/channel/channel_stack_builder.h", 
+      "src/core/lib/channel/compress_filter.h", 
+      "src/core/lib/channel/connected_channel.h", 
+      "src/core/lib/channel/context.h", 
+      "src/core/lib/channel/http_client_filter.h", 
+      "src/core/lib/channel/http_server_filter.h", 
+      "src/core/lib/compression/algorithm_metadata.h", 
+      "src/core/lib/compression/message_compress.h", 
+      "src/core/lib/debug/trace.h", 
+      "src/core/lib/http/format_request.h", 
+      "src/core/lib/http/httpcli.h", 
+      "src/core/lib/http/parser.h", 
+      "src/core/lib/iomgr/closure.h", 
+      "src/core/lib/iomgr/endpoint.h", 
+      "src/core/lib/iomgr/endpoint_pair.h", 
+      "src/core/lib/iomgr/ev_poll_and_epoll_posix.h", 
+      "src/core/lib/iomgr/ev_posix.h", 
+      "src/core/lib/iomgr/exec_ctx.h", 
+      "src/core/lib/iomgr/executor.h", 
+      "src/core/lib/iomgr/iocp_windows.h", 
+      "src/core/lib/iomgr/iomgr.h", 
+      "src/core/lib/iomgr/iomgr_internal.h", 
+      "src/core/lib/iomgr/iomgr_posix.h", 
+      "src/core/lib/iomgr/pollset.h", 
+      "src/core/lib/iomgr/pollset_set.h", 
+      "src/core/lib/iomgr/pollset_set_windows.h", 
+      "src/core/lib/iomgr/pollset_windows.h", 
+      "src/core/lib/iomgr/resolve_address.h", 
+      "src/core/lib/iomgr/sockaddr.h", 
+      "src/core/lib/iomgr/sockaddr_posix.h", 
+      "src/core/lib/iomgr/sockaddr_utils.h", 
+      "src/core/lib/iomgr/sockaddr_win32.h", 
+      "src/core/lib/iomgr/socket_utils_posix.h", 
+      "src/core/lib/iomgr/socket_windows.h", 
+      "src/core/lib/iomgr/tcp_client.h", 
+      "src/core/lib/iomgr/tcp_posix.h", 
+      "src/core/lib/iomgr/tcp_server.h", 
+      "src/core/lib/iomgr/tcp_windows.h", 
+      "src/core/lib/iomgr/time_averaged_stats.h", 
+      "src/core/lib/iomgr/timer.h", 
+      "src/core/lib/iomgr/timer_heap.h", 
+      "src/core/lib/iomgr/udp_server.h", 
+      "src/core/lib/iomgr/unix_sockets_posix.h", 
+      "src/core/lib/iomgr/wakeup_fd_pipe.h", 
+      "src/core/lib/iomgr/wakeup_fd_posix.h", 
+      "src/core/lib/iomgr/workqueue.h", 
+      "src/core/lib/iomgr/workqueue_posix.h", 
+      "src/core/lib/iomgr/workqueue_windows.h", 
+      "src/core/lib/json/json.h", 
+      "src/core/lib/json/json_common.h", 
+      "src/core/lib/json/json_reader.h", 
+      "src/core/lib/json/json_writer.h", 
+      "src/core/lib/surface/api_trace.h", 
+      "src/core/lib/surface/call.h", 
+      "src/core/lib/surface/call_test_only.h", 
+      "src/core/lib/surface/channel.h", 
+      "src/core/lib/surface/channel_init.h", 
+      "src/core/lib/surface/channel_stack_type.h", 
+      "src/core/lib/surface/completion_queue.h", 
+      "src/core/lib/surface/event_string.h", 
+      "src/core/lib/surface/init.h", 
+      "src/core/lib/surface/lame_client.h", 
+      "src/core/lib/surface/server.h", 
+      "src/core/lib/surface/surface_trace.h", 
+      "src/core/lib/transport/byte_stream.h", 
+      "src/core/lib/transport/connectivity_state.h", 
+      "src/core/lib/transport/metadata.h", 
+      "src/core/lib/transport/metadata_batch.h", 
+      "src/core/lib/transport/static_metadata.h", 
+      "src/core/lib/transport/transport.h", 
+      "src/core/lib/transport/transport_impl.h"
+    ], 
+    "language": "c", 
+    "name": "grpc_base", 
+    "src": [
+      "include/grpc/byte_buffer.h", 
+      "include/grpc/byte_buffer_reader.h", 
+      "include/grpc/compression.h", 
+      "include/grpc/grpc.h", 
+      "include/grpc/status.h", 
+      "src/core/lib/channel/channel_args.c", 
+      "src/core/lib/channel/channel_args.h", 
+      "src/core/lib/channel/channel_stack.c", 
+      "src/core/lib/channel/channel_stack.h", 
+      "src/core/lib/channel/channel_stack_builder.c", 
+      "src/core/lib/channel/channel_stack_builder.h", 
+      "src/core/lib/channel/compress_filter.c", 
+      "src/core/lib/channel/compress_filter.h", 
+      "src/core/lib/channel/connected_channel.c", 
+      "src/core/lib/channel/connected_channel.h", 
+      "src/core/lib/channel/context.h", 
+      "src/core/lib/channel/http_client_filter.c", 
+      "src/core/lib/channel/http_client_filter.h", 
+      "src/core/lib/channel/http_server_filter.c", 
+      "src/core/lib/channel/http_server_filter.h", 
+      "src/core/lib/compression/algorithm_metadata.h", 
+      "src/core/lib/compression/compression_algorithm.c", 
+      "src/core/lib/compression/message_compress.c", 
+      "src/core/lib/compression/message_compress.h", 
+      "src/core/lib/debug/trace.c", 
+      "src/core/lib/debug/trace.h", 
+      "src/core/lib/http/format_request.c", 
+      "src/core/lib/http/format_request.h", 
+      "src/core/lib/http/httpcli.c", 
+      "src/core/lib/http/httpcli.h", 
+      "src/core/lib/http/parser.c", 
+      "src/core/lib/http/parser.h", 
+      "src/core/lib/iomgr/closure.c", 
+      "src/core/lib/iomgr/closure.h", 
+      "src/core/lib/iomgr/endpoint.c", 
+      "src/core/lib/iomgr/endpoint.h", 
+      "src/core/lib/iomgr/endpoint_pair.h", 
+      "src/core/lib/iomgr/endpoint_pair_posix.c", 
+      "src/core/lib/iomgr/endpoint_pair_windows.c", 
+      "src/core/lib/iomgr/ev_poll_and_epoll_posix.c", 
+      "src/core/lib/iomgr/ev_poll_and_epoll_posix.h", 
+      "src/core/lib/iomgr/ev_posix.c", 
+      "src/core/lib/iomgr/ev_posix.h", 
+      "src/core/lib/iomgr/exec_ctx.c", 
+      "src/core/lib/iomgr/exec_ctx.h", 
+      "src/core/lib/iomgr/executor.c", 
+      "src/core/lib/iomgr/executor.h", 
+      "src/core/lib/iomgr/iocp_windows.c", 
+      "src/core/lib/iomgr/iocp_windows.h", 
+      "src/core/lib/iomgr/iomgr.c", 
+      "src/core/lib/iomgr/iomgr.h", 
+      "src/core/lib/iomgr/iomgr_internal.h", 
+      "src/core/lib/iomgr/iomgr_posix.c", 
+      "src/core/lib/iomgr/iomgr_posix.h", 
+      "src/core/lib/iomgr/iomgr_windows.c", 
+      "src/core/lib/iomgr/pollset.h", 
+      "src/core/lib/iomgr/pollset_set.h", 
+      "src/core/lib/iomgr/pollset_set_windows.c", 
+      "src/core/lib/iomgr/pollset_set_windows.h", 
+      "src/core/lib/iomgr/pollset_windows.c", 
+      "src/core/lib/iomgr/pollset_windows.h", 
+      "src/core/lib/iomgr/resolve_address.h", 
+      "src/core/lib/iomgr/resolve_address_posix.c", 
+      "src/core/lib/iomgr/resolve_address_windows.c", 
+      "src/core/lib/iomgr/sockaddr.h", 
+      "src/core/lib/iomgr/sockaddr_posix.h", 
+      "src/core/lib/iomgr/sockaddr_utils.c", 
+      "src/core/lib/iomgr/sockaddr_utils.h", 
+      "src/core/lib/iomgr/sockaddr_win32.h", 
+      "src/core/lib/iomgr/socket_utils_common_posix.c", 
+      "src/core/lib/iomgr/socket_utils_linux.c", 
+      "src/core/lib/iomgr/socket_utils_posix.c", 
+      "src/core/lib/iomgr/socket_utils_posix.h", 
+      "src/core/lib/iomgr/socket_windows.c", 
+      "src/core/lib/iomgr/socket_windows.h", 
+      "src/core/lib/iomgr/tcp_client.h", 
+      "src/core/lib/iomgr/tcp_client_posix.c", 
+      "src/core/lib/iomgr/tcp_client_windows.c", 
+      "src/core/lib/iomgr/tcp_posix.c", 
+      "src/core/lib/iomgr/tcp_posix.h", 
+      "src/core/lib/iomgr/tcp_server.h", 
+      "src/core/lib/iomgr/tcp_server_posix.c", 
+      "src/core/lib/iomgr/tcp_server_windows.c", 
+      "src/core/lib/iomgr/tcp_windows.c", 
+      "src/core/lib/iomgr/tcp_windows.h", 
+      "src/core/lib/iomgr/time_averaged_stats.c", 
+      "src/core/lib/iomgr/time_averaged_stats.h", 
+      "src/core/lib/iomgr/timer.c", 
+      "src/core/lib/iomgr/timer.h", 
+      "src/core/lib/iomgr/timer_heap.c", 
+      "src/core/lib/iomgr/timer_heap.h", 
+      "src/core/lib/iomgr/udp_server.c", 
+      "src/core/lib/iomgr/udp_server.h", 
+      "src/core/lib/iomgr/unix_sockets_posix.c", 
+      "src/core/lib/iomgr/unix_sockets_posix.h", 
+      "src/core/lib/iomgr/unix_sockets_posix_noop.c", 
+      "src/core/lib/iomgr/wakeup_fd_eventfd.c", 
+      "src/core/lib/iomgr/wakeup_fd_nospecial.c", 
+      "src/core/lib/iomgr/wakeup_fd_pipe.c", 
+      "src/core/lib/iomgr/wakeup_fd_pipe.h", 
+      "src/core/lib/iomgr/wakeup_fd_posix.c", 
+      "src/core/lib/iomgr/wakeup_fd_posix.h", 
+      "src/core/lib/iomgr/workqueue.h", 
+      "src/core/lib/iomgr/workqueue_posix.c", 
+      "src/core/lib/iomgr/workqueue_posix.h", 
+      "src/core/lib/iomgr/workqueue_windows.c", 
+      "src/core/lib/iomgr/workqueue_windows.h", 
+      "src/core/lib/json/json.c", 
+      "src/core/lib/json/json.h", 
+      "src/core/lib/json/json_common.h", 
+      "src/core/lib/json/json_reader.c", 
+      "src/core/lib/json/json_reader.h", 
+      "src/core/lib/json/json_string.c", 
+      "src/core/lib/json/json_writer.c", 
+      "src/core/lib/json/json_writer.h", 
+      "src/core/lib/surface/alarm.c", 
+      "src/core/lib/surface/api_trace.c", 
+      "src/core/lib/surface/api_trace.h", 
+      "src/core/lib/surface/byte_buffer.c", 
+      "src/core/lib/surface/byte_buffer_reader.c", 
+      "src/core/lib/surface/call.c", 
+      "src/core/lib/surface/call.h", 
+      "src/core/lib/surface/call_details.c", 
+      "src/core/lib/surface/call_log_batch.c", 
+      "src/core/lib/surface/call_test_only.h", 
+      "src/core/lib/surface/channel.c", 
+      "src/core/lib/surface/channel.h", 
+      "src/core/lib/surface/channel_init.c", 
+      "src/core/lib/surface/channel_init.h", 
+      "src/core/lib/surface/channel_ping.c", 
+      "src/core/lib/surface/channel_stack_type.c", 
+      "src/core/lib/surface/channel_stack_type.h", 
+      "src/core/lib/surface/completion_queue.c", 
+      "src/core/lib/surface/completion_queue.h", 
+      "src/core/lib/surface/event_string.c", 
+      "src/core/lib/surface/event_string.h", 
+      "src/core/lib/surface/init.c", 
+      "src/core/lib/surface/init.h", 
+      "src/core/lib/surface/lame_client.c", 
+      "src/core/lib/surface/lame_client.h", 
+      "src/core/lib/surface/metadata_array.c", 
+      "src/core/lib/surface/server.c", 
+      "src/core/lib/surface/server.h", 
+      "src/core/lib/surface/surface_trace.h", 
+      "src/core/lib/surface/validate_metadata.c", 
+      "src/core/lib/surface/version.c", 
+      "src/core/lib/transport/byte_stream.c", 
+      "src/core/lib/transport/byte_stream.h", 
+      "src/core/lib/transport/connectivity_state.c", 
+      "src/core/lib/transport/connectivity_state.h", 
+      "src/core/lib/transport/metadata.c", 
+      "src/core/lib/transport/metadata.h", 
+      "src/core/lib/transport/metadata_batch.c", 
+      "src/core/lib/transport/metadata_batch.h", 
+      "src/core/lib/transport/static_metadata.c", 
+      "src/core/lib/transport/static_metadata.h", 
+      "src/core/lib/transport/transport.c", 
+      "src/core/lib/transport/transport.h", 
+      "src/core/lib/transport/transport_impl.h", 
+      "src/core/lib/transport/transport_op_string.c"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_base"
+    ], 
+    "headers": [
+      "src/core/ext/client_config/client_channel.h", 
+      "src/core/ext/client_config/client_channel_factory.h", 
+      "src/core/ext/client_config/client_config.h", 
+      "src/core/ext/client_config/connector.h", 
+      "src/core/ext/client_config/initial_connect_string.h", 
+      "src/core/ext/client_config/lb_policy.h", 
+      "src/core/ext/client_config/lb_policy_factory.h", 
+      "src/core/ext/client_config/lb_policy_registry.h", 
+      "src/core/ext/client_config/resolver.h", 
+      "src/core/ext/client_config/resolver_factory.h", 
+      "src/core/ext/client_config/resolver_registry.h", 
+      "src/core/ext/client_config/subchannel.h", 
+      "src/core/ext/client_config/subchannel_call_holder.h", 
+      "src/core/ext/client_config/subchannel_index.h", 
+      "src/core/ext/client_config/uri_parser.h"
+    ], 
+    "language": "c", 
+    "name": "grpc_client_config", 
+    "src": [
+      "src/core/ext/client_config/channel_connectivity.c", 
+      "src/core/ext/client_config/client_channel.c", 
+      "src/core/ext/client_config/client_channel.h", 
+      "src/core/ext/client_config/client_channel_factory.c", 
+      "src/core/ext/client_config/client_channel_factory.h", 
+      "src/core/ext/client_config/client_config.c", 
+      "src/core/ext/client_config/client_config.h", 
+      "src/core/ext/client_config/client_config_plugin.c", 
+      "src/core/ext/client_config/connector.c", 
+      "src/core/ext/client_config/connector.h", 
+      "src/core/ext/client_config/default_initial_connect_string.c", 
+      "src/core/ext/client_config/initial_connect_string.c", 
+      "src/core/ext/client_config/initial_connect_string.h", 
+      "src/core/ext/client_config/lb_policy.c", 
+      "src/core/ext/client_config/lb_policy.h", 
+      "src/core/ext/client_config/lb_policy_factory.c", 
+      "src/core/ext/client_config/lb_policy_factory.h", 
+      "src/core/ext/client_config/lb_policy_registry.c", 
+      "src/core/ext/client_config/lb_policy_registry.h", 
+      "src/core/ext/client_config/resolver.c", 
+      "src/core/ext/client_config/resolver.h", 
+      "src/core/ext/client_config/resolver_factory.c", 
+      "src/core/ext/client_config/resolver_factory.h", 
+      "src/core/ext/client_config/resolver_registry.c", 
+      "src/core/ext/client_config/resolver_registry.h", 
+      "src/core/ext/client_config/subchannel.c", 
+      "src/core/ext/client_config/subchannel.h", 
+      "src/core/ext/client_config/subchannel_call_holder.c", 
+      "src/core/ext/client_config/subchannel_call_holder.h", 
+      "src/core/ext/client_config/subchannel_index.c", 
+      "src/core/ext/client_config/subchannel_index.h", 
+      "src/core/ext/client_config/uri_parser.c", 
+      "src/core/ext/client_config/uri_parser.h"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr"
+    ], 
+    "headers": [
+      "include/grpc/impl/codegen/byte_buffer.h", 
+      "include/grpc/impl/codegen/compression_types.h", 
+      "include/grpc/impl/codegen/connectivity_state.h", 
+      "include/grpc/impl/codegen/grpc_types.h", 
+      "include/grpc/impl/codegen/propagation_bits.h", 
+      "include/grpc/impl/codegen/status.h"
+    ], 
+    "language": "c", 
+    "name": "grpc_codegen", 
+    "src": [
+      "include/grpc/impl/codegen/byte_buffer.h", 
+      "include/grpc/impl/codegen/compression_types.h", 
+      "include/grpc/impl/codegen/connectivity_state.h", 
+      "include/grpc/impl/codegen/grpc_types.h", 
+      "include/grpc/impl/codegen/propagation_bits.h", 
+      "include/grpc/impl/codegen/status.h"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_base", 
+      "grpc_client_config", 
+      "nanopb"
+    ], 
+    "headers": [
+      "src/core/ext/lb_policy/grpclb/load_balancer_api.h", 
+      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h"
+    ], 
+    "language": "c", 
+    "name": "grpc_lb_policy_grpclb", 
+    "src": [
+      "src/core/ext/lb_policy/grpclb/load_balancer_api.c", 
+      "src/core/ext/lb_policy/grpclb/load_balancer_api.h", 
+      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", 
+      "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_base", 
+      "grpc_client_config"
+    ], 
+    "headers": [], 
+    "language": "c", 
+    "name": "grpc_lb_policy_pick_first", 
+    "src": [
+      "src/core/ext/lb_policy/pick_first/pick_first.c"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_base", 
+      "grpc_client_config"
+    ], 
+    "headers": [], 
+    "language": "c", 
+    "name": "grpc_lb_policy_round_robin", 
+    "src": [
+      "src/core/ext/lb_policy/round_robin/round_robin.c"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_base", 
+      "grpc_client_config"
+    ], 
+    "headers": [], 
+    "language": "c", 
+    "name": "grpc_resolver_dns_native", 
+    "src": [
+      "src/core/ext/resolver/dns/native/dns_resolver.c"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_base", 
+      "grpc_client_config"
+    ], 
+    "headers": [], 
+    "language": "c", 
+    "name": "grpc_resolver_sockaddr", 
+    "src": [
+      "src/core/ext/resolver/sockaddr/sockaddr_resolver.c"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_base", 
+      "grpc_transport_chttp2_alpn"
+    ], 
+    "headers": [
+      "include/grpc/grpc_security.h", 
+      "src/core/lib/security/auth_filters.h", 
+      "src/core/lib/security/b64.h", 
+      "src/core/lib/security/credentials.h", 
+      "src/core/lib/security/handshake.h", 
+      "src/core/lib/security/json_token.h", 
+      "src/core/lib/security/jwt_verifier.h", 
+      "src/core/lib/security/secure_endpoint.h", 
+      "src/core/lib/security/security_connector.h", 
+      "src/core/lib/security/security_context.h", 
+      "src/core/lib/tsi/fake_transport_security.h", 
+      "src/core/lib/tsi/ssl_transport_security.h", 
+      "src/core/lib/tsi/ssl_types.h", 
+      "src/core/lib/tsi/transport_security.h", 
+      "src/core/lib/tsi/transport_security_interface.h"
+    ], 
+    "language": "c", 
+    "name": "grpc_secure", 
+    "src": [
+      "include/grpc/grpc_security.h", 
+      "src/core/lib/http/httpcli_security_connector.c", 
+      "src/core/lib/security/auth_filters.h", 
+      "src/core/lib/security/b64.c", 
+      "src/core/lib/security/b64.h", 
+      "src/core/lib/security/client_auth_filter.c", 
+      "src/core/lib/security/credentials.c", 
+      "src/core/lib/security/credentials.h", 
+      "src/core/lib/security/credentials_metadata.c", 
+      "src/core/lib/security/credentials_posix.c", 
+      "src/core/lib/security/credentials_win32.c", 
+      "src/core/lib/security/google_default_credentials.c", 
+      "src/core/lib/security/handshake.c", 
+      "src/core/lib/security/handshake.h", 
+      "src/core/lib/security/json_token.c", 
+      "src/core/lib/security/json_token.h", 
+      "src/core/lib/security/jwt_verifier.c", 
+      "src/core/lib/security/jwt_verifier.h", 
+      "src/core/lib/security/secure_endpoint.c", 
+      "src/core/lib/security/secure_endpoint.h", 
+      "src/core/lib/security/security_connector.c", 
+      "src/core/lib/security/security_connector.h", 
+      "src/core/lib/security/security_context.c", 
+      "src/core/lib/security/security_context.h", 
+      "src/core/lib/security/server_auth_filter.c", 
+      "src/core/lib/surface/init_secure.c", 
+      "src/core/lib/tsi/fake_transport_security.c", 
+      "src/core/lib/tsi/fake_transport_security.h", 
+      "src/core/lib/tsi/ssl_transport_security.c", 
+      "src/core/lib/tsi/ssl_transport_security.h", 
+      "src/core/lib/tsi/ssl_types.h", 
+      "src/core/lib/tsi/transport_security.c", 
+      "src/core/lib/tsi/transport_security.h", 
+      "src/core/lib/tsi/transport_security_interface.h"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr_test_util", 
+      "grpc"
+    ], 
+    "headers": [
+      "test/core/end2end/cq_verifier.h", 
+      "test/core/end2end/fixtures/proxy.h", 
+      "test/core/iomgr/endpoint_tests.h", 
+      "test/core/util/grpc_profiler.h", 
+      "test/core/util/parse_hexstring.h", 
+      "test/core/util/port.h", 
+      "test/core/util/port_server_client.h", 
+      "test/core/util/slice_splitter.h"
+    ], 
+    "language": "c", 
+    "name": "grpc_test_util_base", 
+    "src": [
+      "test/core/end2end/cq_verifier.c", 
+      "test/core/end2end/cq_verifier.h", 
+      "test/core/end2end/fixtures/proxy.c", 
+      "test/core/end2end/fixtures/proxy.h", 
+      "test/core/iomgr/endpoint_tests.c", 
+      "test/core/iomgr/endpoint_tests.h", 
+      "test/core/util/grpc_profiler.c", 
+      "test/core/util/grpc_profiler.h", 
+      "test/core/util/parse_hexstring.c", 
+      "test/core/util/parse_hexstring.h", 
+      "test/core/util/port.h", 
+      "test/core/util/port_posix.c", 
+      "test/core/util/port_server_client.c", 
+      "test/core/util/port_server_client.h", 
+      "test/core/util/port_windows.c", 
+      "test/core/util/slice_splitter.c", 
+      "test/core/util/slice_splitter.h"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_base", 
+      "grpc_transport_chttp2_alpn"
+    ], 
+    "headers": [
+      "src/core/ext/transport/chttp2/transport/bin_encoder.h", 
+      "src/core/ext/transport/chttp2/transport/chttp2_transport.h", 
+      "src/core/ext/transport/chttp2/transport/frame.h", 
+      "src/core/ext/transport/chttp2/transport/frame_data.h", 
+      "src/core/ext/transport/chttp2/transport/frame_goaway.h", 
+      "src/core/ext/transport/chttp2/transport/frame_ping.h", 
+      "src/core/ext/transport/chttp2/transport/frame_rst_stream.h", 
+      "src/core/ext/transport/chttp2/transport/frame_settings.h", 
+      "src/core/ext/transport/chttp2/transport/frame_window_update.h", 
+      "src/core/ext/transport/chttp2/transport/hpack_encoder.h", 
+      "src/core/ext/transport/chttp2/transport/hpack_parser.h", 
+      "src/core/ext/transport/chttp2/transport/hpack_table.h", 
+      "src/core/ext/transport/chttp2/transport/http2_errors.h", 
+      "src/core/ext/transport/chttp2/transport/huffsyms.h", 
+      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
+      "src/core/ext/transport/chttp2/transport/internal.h", 
+      "src/core/ext/transport/chttp2/transport/status_conversion.h", 
+      "src/core/ext/transport/chttp2/transport/stream_map.h", 
+      "src/core/ext/transport/chttp2/transport/timeout_encoding.h", 
+      "src/core/ext/transport/chttp2/transport/varint.h"
+    ], 
+    "language": "c", 
+    "name": "grpc_transport_chttp2", 
+    "src": [
+      "src/core/ext/transport/chttp2/transport/bin_encoder.c", 
+      "src/core/ext/transport/chttp2/transport/bin_encoder.h", 
+      "src/core/ext/transport/chttp2/transport/chttp2_plugin.c", 
+      "src/core/ext/transport/chttp2/transport/chttp2_transport.c", 
+      "src/core/ext/transport/chttp2/transport/chttp2_transport.h", 
+      "src/core/ext/transport/chttp2/transport/frame.h", 
+      "src/core/ext/transport/chttp2/transport/frame_data.c", 
+      "src/core/ext/transport/chttp2/transport/frame_data.h", 
+      "src/core/ext/transport/chttp2/transport/frame_goaway.c", 
+      "src/core/ext/transport/chttp2/transport/frame_goaway.h", 
+      "src/core/ext/transport/chttp2/transport/frame_ping.c", 
+      "src/core/ext/transport/chttp2/transport/frame_ping.h", 
+      "src/core/ext/transport/chttp2/transport/frame_rst_stream.c", 
+      "src/core/ext/transport/chttp2/transport/frame_rst_stream.h", 
+      "src/core/ext/transport/chttp2/transport/frame_settings.c", 
+      "src/core/ext/transport/chttp2/transport/frame_settings.h", 
+      "src/core/ext/transport/chttp2/transport/frame_window_update.c", 
+      "src/core/ext/transport/chttp2/transport/frame_window_update.h", 
+      "src/core/ext/transport/chttp2/transport/hpack_encoder.c", 
+      "src/core/ext/transport/chttp2/transport/hpack_encoder.h", 
+      "src/core/ext/transport/chttp2/transport/hpack_parser.c", 
+      "src/core/ext/transport/chttp2/transport/hpack_parser.h", 
+      "src/core/ext/transport/chttp2/transport/hpack_table.c", 
+      "src/core/ext/transport/chttp2/transport/hpack_table.h", 
+      "src/core/ext/transport/chttp2/transport/http2_errors.h", 
+      "src/core/ext/transport/chttp2/transport/huffsyms.c", 
+      "src/core/ext/transport/chttp2/transport/huffsyms.h", 
+      "src/core/ext/transport/chttp2/transport/incoming_metadata.c", 
+      "src/core/ext/transport/chttp2/transport/incoming_metadata.h", 
+      "src/core/ext/transport/chttp2/transport/internal.h", 
+      "src/core/ext/transport/chttp2/transport/parsing.c", 
+      "src/core/ext/transport/chttp2/transport/status_conversion.c", 
+      "src/core/ext/transport/chttp2/transport/status_conversion.h", 
+      "src/core/ext/transport/chttp2/transport/stream_lists.c", 
+      "src/core/ext/transport/chttp2/transport/stream_map.c", 
+      "src/core/ext/transport/chttp2/transport/stream_map.h", 
+      "src/core/ext/transport/chttp2/transport/timeout_encoding.c", 
+      "src/core/ext/transport/chttp2/transport/timeout_encoding.h", 
+      "src/core/ext/transport/chttp2/transport/varint.c", 
+      "src/core/ext/transport/chttp2/transport/varint.h", 
+      "src/core/ext/transport/chttp2/transport/writing.c"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr"
+    ], 
+    "headers": [
+      "src/core/ext/transport/chttp2/alpn/alpn.h"
+    ], 
+    "language": "c", 
+    "name": "grpc_transport_chttp2_alpn", 
+    "src": [
+      "src/core/ext/transport/chttp2/alpn/alpn.c", 
+      "src/core/ext/transport/chttp2/alpn/alpn.h"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_base", 
+      "grpc_client_config", 
+      "grpc_transport_chttp2"
+    ], 
+    "headers": [], 
+    "language": "c", 
+    "name": "grpc_transport_chttp2_client_insecure", 
+    "src": [
+      "src/core/ext/transport/chttp2/client/insecure/channel_create.c"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_base", 
+      "grpc_client_config", 
+      "grpc_secure", 
+      "grpc_transport_chttp2"
+    ], 
+    "headers": [], 
+    "language": "c", 
+    "name": "grpc_transport_chttp2_client_secure", 
+    "src": [
+      "src/core/ext/transport/chttp2/client/secure/secure_channel_create.c"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_base", 
+      "grpc_transport_chttp2"
+    ], 
+    "headers": [], 
+    "language": "c", 
+    "name": "grpc_transport_chttp2_server_insecure", 
+    "src": [
+      "src/core/ext/transport/chttp2/server/insecure/server_chttp2.c"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [
+      "gpr", 
+      "grpc_base", 
+      "grpc_secure", 
+      "grpc_transport_chttp2"
+    ], 
+    "headers": [], 
+    "language": "c", 
+    "name": "grpc_transport_chttp2_server_secure", 
+    "src": [
+      "src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c"
+    ], 
+    "third_party": false, 
+    "type": "filegroup"
+  }, 
+  {
+    "deps": [], 
+    "headers": [
+      "third_party/nanopb/pb.h", 
+      "third_party/nanopb/pb_common.h", 
+      "third_party/nanopb/pb_decode.h", 
+      "third_party/nanopb/pb_encode.h"
+    ], 
+    "language": "c", 
+    "name": "nanopb", 
+    "src": [], 
+    "third_party": false, 
+    "type": "filegroup"
   }
 ]
diff --git a/vsprojects/buildtests_c.sln b/vsprojects/buildtests_c.sln
index a582f2b..e808d8b 100644
--- a/vsprojects/buildtests_c.sln
+++ b/vsprojects/buildtests_c.sln
@@ -38,8 +38,8 @@
         	lib = "True"
 	EndProjectSection
 	ProjectSection(ProjectDependencies) = postProject
-		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
 		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
 	EndProjectSection
 EndProject
@@ -50,6 +50,7 @@
 	ProjectSection(ProjectDependencies) = postProject
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
 		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
+		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
 		{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5} = {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}
 	EndProjectSection
 EndProject
@@ -74,11 +75,11 @@
         	lib = "True"
 	EndProjectSection
 	ProjectSection(ProjectDependencies) = postProject
-		{E3110C46-A148-FF65-08FD-3324829BE7FE} = {E3110C46-A148-FF65-08FD-3324829BE7FE}
-		{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
-		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
-		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
+		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
+		{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
+		{E3110C46-A148-FF65-08FD-3324829BE7FE} = {E3110C46-A148-FF65-08FD-3324829BE7FE}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_tcp_server", "vcxproj\.\test_tcp_server\test_tcp_server.vcxproj", "{E3110C46-A148-FF65-08FD-3324829BE7FE}"
@@ -86,10 +87,10 @@
         	lib = "True"
 	EndProjectSection
 	ProjectSection(ProjectDependencies) = postProject
-		{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
-		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
-		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
+		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
+		{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bad_client_test", "vcxproj\test/bad_client\bad_client_test\bad_client_test.vcxproj", "{BA67B418-B699-E41A-9CC4-0279C49481A5}"
@@ -97,10 +98,10 @@
         	lib = "True"
 	EndProjectSection
 	ProjectSection(ProjectDependencies) = postProject
+		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
 		{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF} = {0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}
 		{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5} = {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}
-		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
-		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "end2end_tests", "vcxproj\test/end2end/tests\end2end_tests\end2end_tests.vcxproj", "{1F1F9084-2A93-B80E-364F-5754894AFAB4}"
@@ -108,10 +109,10 @@
         	lib = "True"
 	EndProjectSection
 	ProjectSection(ProjectDependencies) = postProject
-		{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
-		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
-		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
+		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
+		{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "end2end_nosec_tests", "vcxproj\test/end2end/tests\end2end_nosec_tests\end2end_nosec_tests.vcxproj", "{47C2CB41-4E9F-58B6-F606-F6FAED5D00ED}"
@@ -119,10 +120,10 @@
         	lib = "True"
 	EndProjectSection
 	ProjectSection(ProjectDependencies) = postProject
+		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
 		{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF} = {0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}
 		{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5} = {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}
-		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
-		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "alarm_test", "vcxproj\test\alarm_test\alarm_test.vcxproj", "{AFD362D7-0E2A-E700-1F27-9D90F76166DF}"
diff --git a/vsprojects/grpc.sln b/vsprojects/grpc.sln
index 650b857..cff90f2 100644
--- a/vsprojects/grpc.sln
+++ b/vsprojects/grpc.sln
@@ -38,8 +38,8 @@
         	lib = "True"
 	EndProjectSection
 	ProjectSection(ProjectDependencies) = postProject
-		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
 		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
 	EndProjectSection
 EndProject
@@ -50,6 +50,7 @@
 	ProjectSection(ProjectDependencies) = postProject
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
 		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
+		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
 		{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5} = {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}
 	EndProjectSection
 EndProject
@@ -74,11 +75,11 @@
         	lib = "True"
 	EndProjectSection
 	ProjectSection(ProjectDependencies) = postProject
-		{E3110C46-A148-FF65-08FD-3324829BE7FE} = {E3110C46-A148-FF65-08FD-3324829BE7FE}
-		{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
-		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
-		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
+		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
+		{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
+		{E3110C46-A148-FF65-08FD-3324829BE7FE} = {E3110C46-A148-FF65-08FD-3324829BE7FE}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_tcp_server", "vcxproj\.\test_tcp_server\test_tcp_server.vcxproj", "{E3110C46-A148-FF65-08FD-3324829BE7FE}"
@@ -86,10 +87,10 @@
         	lib = "True"
 	EndProjectSection
 	ProjectSection(ProjectDependencies) = postProject
-		{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
-		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
-		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+		{EAB0A629-17A9-44DB-B5FF-E91A721FE037} = {EAB0A629-17A9-44DB-B5FF-E91A721FE037}
+		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
+		{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B} = {17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}
 	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc++", "vcxproj\.\grpc++\grpc++.vcxproj", "{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}"
@@ -104,6 +105,10 @@
 	ProjectSection(myProperties) = preProject
         	lib = "True"
 	EndProjectSection
+	ProjectSection(ProjectDependencies) = postProject
+		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
+	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc++_unsecure", "vcxproj\.\grpc++_unsecure\grpc++_unsecure.vcxproj", "{6EE56155-DF7C-4F6E-BFC4-F6F776BEB211}"
 	ProjectSection(myProperties) = preProject
@@ -111,6 +116,7 @@
 	EndProjectSection
 	ProjectSection(ProjectDependencies) = postProject
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
 		{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5} = {46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}
 	EndProjectSection
 EndProject
diff --git a/vsprojects/grpc_csharp_ext.sln b/vsprojects/grpc_csharp_ext.sln
index 11d2204..1c82496 100644
--- a/vsprojects/grpc_csharp_ext.sln
+++ b/vsprojects/grpc_csharp_ext.sln
@@ -29,8 +29,8 @@
         	lib = "True"
 	EndProjectSection
 	ProjectSection(ProjectDependencies) = postProject
-		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
 		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
 	EndProjectSection
 EndProject
 Global
diff --git a/vsprojects/grpc_protoc_plugins.sln b/vsprojects/grpc_protoc_plugins.sln
index 444cb26..5166bb1 100644
--- a/vsprojects/grpc_protoc_plugins.sln
+++ b/vsprojects/grpc_protoc_plugins.sln
@@ -7,6 +7,9 @@
 	ProjectSection(myProperties) = preProject
         	lib = "True"
 	EndProjectSection
+	ProjectSection(ProjectDependencies) = postProject
+		{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792} = {B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}
+	EndProjectSection
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_plugin_support", "vcxproj\.\grpc_plugin_support\grpc_plugin_support.vcxproj", "{B6E81D84-2ACB-41B8-8781-493A944C7817}"
 	ProjectSection(myProperties) = preProject
diff --git a/vsprojects/vcxproj/grpc++_codegen_lib/grpc++_codegen_lib.vcxproj b/vsprojects/vcxproj/grpc++_codegen_lib/grpc++_codegen_lib.vcxproj
index fa56d2a..015d3f3 100644
--- a/vsprojects/vcxproj/grpc++_codegen_lib/grpc++_codegen_lib.vcxproj
+++ b/vsprojects/vcxproj/grpc++_codegen_lib/grpc++_codegen_lib.vcxproj
@@ -203,6 +203,14 @@
     <ClCompile Include="$(SolutionDir)\..\src\cpp\codegen\codegen_init.cc">
     </ClCompile>
   </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    </ProjectReference>
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
index 7455e88..b57ae43 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
@@ -399,6 +399,9 @@
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
       <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_unsecure\grpc_unsecure.vcxproj">
       <Project>{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}</Project>
     </ProjectReference>
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index 10a87f7..9cecf41 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -288,9 +288,24 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\grpc_filter.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\mlog.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\rpc_metric_id.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\connector.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\initial_connect_string.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_factory.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_registry.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_factory.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\alpn.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\alpn\alpn.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\bin_encoder.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\chttp2_transport.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\frame.h" />
@@ -314,26 +329,11 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_args.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack_builder.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\client_channel.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\compress_filter.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\connected_channel.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\context.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\http_client_filter.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\http_server_filter.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\subchannel_call_holder.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\client_channel_factory.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\client_config.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\connector.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\initial_connect_string.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_factory.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_registry.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\resolver.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_factory.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_registry.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel_index.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\uri_parser.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\compression\algorithm_metadata.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\compression\message_compress.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\debug\trace.h" />
@@ -437,6 +437,42 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\tracing.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\channel_connectivity.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config_plugin.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\connector.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\default_initial_connect_string.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\initial_connect_string.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_factory.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_registry.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_factory.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.c">
@@ -449,6 +485,8 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\sockaddr\sockaddr_resolver.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\alpn\alpn.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\secure\secure_channel_create.c">
@@ -457,10 +495,10 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\server\secure\server_secure_chttp2.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\alpn.c">
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\bin_encoder.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\chttp2_plugin.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\chttp2_transport.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\frame_data.c">
@@ -505,8 +543,6 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack_builder.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\client_channel.c">
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\compress_filter.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\connected_channel.c">
@@ -515,36 +551,6 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\http_server_filter.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\subchannel_call_holder.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\client_channel_factory.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\client_config.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\connector.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\default_initial_connect_string.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\initial_connect_string.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_factory.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_registry.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\resolver.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_factory.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_registry.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel_index.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\uri_parser.c">
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\compression\compression_algorithm.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\compression\message_compress.c">
@@ -689,8 +695,6 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel_connectivity.c">
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel_init.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel_ping.c">
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index c32f033..b1d000b 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -28,6 +28,60 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\tracing.c">
       <Filter>src\core\ext\census</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\channel_connectivity.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config_plugin.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\connector.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\default_initial_connect_string.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\initial_connect_string.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_factory.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_registry.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_factory.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClCompile>
@@ -46,6 +100,9 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\sockaddr\sockaddr_resolver.c">
       <Filter>src\core\ext\resolver\sockaddr</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\alpn\alpn.c">
+      <Filter>src\core\ext\transport\chttp2\alpn</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
       <Filter>src\core\ext\transport\chttp2\client\insecure</Filter>
     </ClCompile>
@@ -58,10 +115,10 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\server\secure\server_secure_chttp2.c">
       <Filter>src\core\ext\transport\chttp2\server\secure</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\alpn.c">
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\bin_encoder.c">
       <Filter>src\core\ext\transport\chttp2\transport</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\bin_encoder.c">
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\chttp2_plugin.c">
       <Filter>src\core\ext\transport\chttp2\transport</Filter>
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\chttp2_transport.c">
@@ -130,9 +187,6 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack_builder.c">
       <Filter>src\core\lib\channel</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\client_channel.c">
-      <Filter>src\core\lib\channel</Filter>
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\compress_filter.c">
       <Filter>src\core\lib\channel</Filter>
     </ClCompile>
@@ -145,51 +199,6 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\http_server_filter.c">
       <Filter>src\core\lib\channel</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\subchannel_call_holder.c">
-      <Filter>src\core\lib\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\client_channel_factory.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\client_config.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\connector.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\default_initial_connect_string.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\initial_connect_string.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_factory.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_registry.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\resolver.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_factory.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_registry.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel_index.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\uri_parser.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\compression\compression_algorithm.c">
       <Filter>src\core\lib\compression</Filter>
     </ClCompile>
@@ -406,9 +415,6 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel.c">
       <Filter>src\core\lib\surface</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel_connectivity.c">
-      <Filter>src\core\lib\surface</Filter>
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel_init.c">
       <Filter>src\core\lib\surface</Filter>
     </ClCompile>
@@ -548,14 +554,59 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\rpc_metric_id.h">
       <Filter>src\core\ext\census</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\connector.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\initial_connect_string.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_factory.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_registry.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_factory.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h">
       <Filter>src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\alpn.h">
-      <Filter>src\core\ext\transport\chttp2\transport</Filter>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\alpn\alpn.h">
+      <Filter>src\core\ext\transport\chttp2\alpn</Filter>
     </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\bin_encoder.h">
       <Filter>src\core\ext\transport\chttp2\transport</Filter>
@@ -626,9 +677,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack_builder.h">
       <Filter>src\core\lib\channel</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\client_channel.h">
-      <Filter>src\core\lib\channel</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\compress_filter.h">
       <Filter>src\core\lib\channel</Filter>
     </ClInclude>
@@ -644,48 +692,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\http_server_filter.h">
       <Filter>src\core\lib\channel</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\subchannel_call_holder.h">
-      <Filter>src\core\lib\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\client_channel_factory.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\client_config.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\connector.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\initial_connect_string.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_factory.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_registry.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\resolver.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_factory.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_registry.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel_index.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\uri_parser.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\compression\algorithm_metadata.h">
       <Filter>src\core\lib\compression</Filter>
     </ClInclude>
@@ -962,6 +968,9 @@
     <Filter Include="src\core\ext\census">
       <UniqueIdentifier>{9bf70bd2-f553-11b2-c237-abd148971eea}</UniqueIdentifier>
     </Filter>
+    <Filter Include="src\core\ext\client_config">
+      <UniqueIdentifier>{003725f8-37fc-80b5-deba-baae32caf915}</UniqueIdentifier>
+    </Filter>
     <Filter Include="src\core\ext\lb_policy">
       <UniqueIdentifier>{030f00ff-6c54-76c8-12df-37e3008335d1}</UniqueIdentifier>
     </Filter>
@@ -1004,6 +1013,9 @@
     <Filter Include="src\core\ext\transport\chttp2">
       <UniqueIdentifier>{ac42667b-bbba-3571-20bc-7a4240ef26ca}</UniqueIdentifier>
     </Filter>
+    <Filter Include="src\core\ext\transport\chttp2\alpn">
+      <UniqueIdentifier>{ef2aa344-783f-7fbd-c83a-47e2d38db14d}</UniqueIdentifier>
+    </Filter>
     <Filter Include="src\core\ext\transport\chttp2\client">
       <UniqueIdentifier>{dbffebe0-eebb-577d-1860-ef6837f4cf50}</UniqueIdentifier>
     </Filter>
@@ -1031,9 +1043,6 @@
     <Filter Include="src\core\lib\channel">
       <UniqueIdentifier>{1931b044-90f3-cd68-b5f8-23be77ca8efc}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\core\lib\client_config">
-      <UniqueIdentifier>{2f3260de-be57-d18d-6882-61d115baa159}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src\core\lib\compression">
       <UniqueIdentifier>{dadf7fe9-3f15-d431-e4f6-f987b090536c}</UniqueIdentifier>
     </Filter>
diff --git a/vsprojects/vcxproj/grpc_codegen_lib/grpc_codegen_lib.vcxproj b/vsprojects/vcxproj/grpc_codegen_lib/grpc_codegen_lib.vcxproj
index 7d7a609..7651782 100644
--- a/vsprojects/vcxproj/grpc_codegen_lib/grpc_codegen_lib.vcxproj
+++ b/vsprojects/vcxproj/grpc_codegen_lib/grpc_codegen_lib.vcxproj
@@ -172,6 +172,11 @@
     <ClCompile Include="$(SolutionDir)\..\vsprojects\dummy.c">
     </ClCompile>
   </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    </ProjectReference>
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>
diff --git a/vsprojects/vcxproj/grpc_csharp_ext/grpc_csharp_ext.vcxproj b/vsprojects/vcxproj/grpc_csharp_ext/grpc_csharp_ext.vcxproj
index 680008c..ace5895 100644
--- a/vsprojects/vcxproj/grpc_csharp_ext/grpc_csharp_ext.vcxproj
+++ b/vsprojects/vcxproj/grpc_csharp_ext/grpc_csharp_ext.vcxproj
@@ -162,12 +162,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
-      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
       <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <None Include="packages.config" />
diff --git a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
index 668f8a5..780d43d 100644
--- a/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
+++ b/vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
@@ -187,12 +187,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
-      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
       <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
+      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
+    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
       <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
     </ProjectReference>
diff --git a/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj b/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj
index 2a3c50e..b3eb7f6 100644
--- a/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc_test_util_unsecure/grpc_test_util_unsecure.vcxproj
@@ -183,6 +183,9 @@
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
       <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_unsecure\grpc_unsecure.vcxproj">
       <Project>{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}</Project>
     </ProjectReference>
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
index 1b064aa..1a9a6c1 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
@@ -278,9 +278,24 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\grpc_filter.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\mlog.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\rpc_metric_id.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\connector.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\initial_connect_string.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_factory.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_registry.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_factory.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\alpn.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\alpn\alpn.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\bin_encoder.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\chttp2_transport.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\frame.h" />
@@ -304,26 +319,11 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_args.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack_builder.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\client_channel.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\compress_filter.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\connected_channel.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\context.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\http_client_filter.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\http_server_filter.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\subchannel_call_holder.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\client_channel_factory.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\client_config.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\connector.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\initial_connect_string.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_factory.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_registry.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\resolver.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_factory.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_registry.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel_index.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\uri_parser.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\compression\algorithm_metadata.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\compression\message_compress.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\debug\trace.h" />
@@ -413,6 +413,42 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\tracing.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\channel_connectivity.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config_plugin.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\connector.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\default_initial_connect_string.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\initial_connect_string.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_factory.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_registry.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_factory.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.c">
@@ -425,14 +461,16 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\sockaddr\sockaddr_resolver.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\alpn\alpn.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\server\insecure\server_chttp2.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\alpn.c">
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\bin_encoder.c">
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\chttp2_plugin.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\chttp2_transport.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\frame_data.c">
@@ -477,8 +515,6 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack_builder.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\client_channel.c">
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\compress_filter.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\connected_channel.c">
@@ -487,36 +523,6 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\http_server_filter.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\subchannel_call_holder.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\client_channel_factory.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\client_config.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\connector.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\default_initial_connect_string.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\initial_connect_string.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_factory.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_registry.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\resolver.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_factory.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_registry.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel_index.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\uri_parser.c">
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\compression\compression_algorithm.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\compression\message_compress.c">
@@ -631,8 +637,6 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel_connectivity.c">
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel_init.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel_ping.c">
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
index 9fd878b..bab9e4d 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
@@ -28,6 +28,60 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\tracing.c">
       <Filter>src\core\ext\census</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\channel_connectivity.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\client_config_plugin.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\connector.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\default_initial_connect_string.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\initial_connect_string.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_factory.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_registry.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_factory.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.c">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClCompile>
@@ -46,16 +100,19 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\resolver\sockaddr\sockaddr_resolver.c">
       <Filter>src\core\ext\resolver\sockaddr</Filter>
     </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\alpn\alpn.c">
+      <Filter>src\core\ext\transport\chttp2\alpn</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\client\insecure\channel_create.c">
       <Filter>src\core\ext\transport\chttp2\client\insecure</Filter>
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\server\insecure\server_chttp2.c">
       <Filter>src\core\ext\transport\chttp2\server\insecure</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\alpn.c">
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\bin_encoder.c">
       <Filter>src\core\ext\transport\chttp2\transport</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\bin_encoder.c">
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\chttp2_plugin.c">
       <Filter>src\core\ext\transport\chttp2\transport</Filter>
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\chttp2_transport.c">
@@ -124,9 +181,6 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack_builder.c">
       <Filter>src\core\lib\channel</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\client_channel.c">
-      <Filter>src\core\lib\channel</Filter>
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\compress_filter.c">
       <Filter>src\core\lib\channel</Filter>
     </ClCompile>
@@ -139,51 +193,6 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\http_server_filter.c">
       <Filter>src\core\lib\channel</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\subchannel_call_holder.c">
-      <Filter>src\core\lib\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\client_channel_factory.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\client_config.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\connector.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\default_initial_connect_string.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\initial_connect_string.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_factory.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_registry.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\resolver.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_factory.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_registry.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel_index.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\client_config\uri_parser.c">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\compression\compression_algorithm.c">
       <Filter>src\core\lib\compression</Filter>
     </ClCompile>
@@ -355,9 +364,6 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel.c">
       <Filter>src\core\lib\surface</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel_connectivity.c">
-      <Filter>src\core\lib\surface</Filter>
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\surface\channel_init.c">
       <Filter>src\core\lib\surface</Filter>
     </ClCompile>
@@ -485,14 +491,59 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\rpc_metric_id.h">
       <Filter>src\core\ext\census</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_channel_factory.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\client_config.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\connector.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\initial_connect_string.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_factory.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\lb_policy_registry.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_factory.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\resolver_registry.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_call_holder.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\subchannel_index.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\client_config\uri_parser.h">
+      <Filter>src\core\ext\client_config</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h">
       <Filter>src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\alpn.h">
-      <Filter>src\core\ext\transport\chttp2\transport</Filter>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\alpn\alpn.h">
+      <Filter>src\core\ext\transport\chttp2\alpn</Filter>
     </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\bin_encoder.h">
       <Filter>src\core\ext\transport\chttp2\transport</Filter>
@@ -563,9 +614,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack_builder.h">
       <Filter>src\core\lib\channel</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\client_channel.h">
-      <Filter>src\core\lib\channel</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\compress_filter.h">
       <Filter>src\core\lib\channel</Filter>
     </ClInclude>
@@ -581,48 +629,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\http_server_filter.h">
       <Filter>src\core\lib\channel</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\subchannel_call_holder.h">
-      <Filter>src\core\lib\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\client_channel_factory.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\client_config.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\connector.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\initial_connect_string.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_factory.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\lb_policy_registry.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\resolver.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_factory.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\resolver_registry.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\subchannel_index.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\client_config\uri_parser.h">
-      <Filter>src\core\lib\client_config</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\compression\algorithm_metadata.h">
       <Filter>src\core\lib\compression</Filter>
     </ClInclude>
@@ -857,6 +863,9 @@
     <Filter Include="src\core\ext\census">
       <UniqueIdentifier>{3f21cd12-b8b9-18f8-8780-e21bbe2285d0}</UniqueIdentifier>
     </Filter>
+    <Filter Include="src\core\ext\client_config">
+      <UniqueIdentifier>{25fa8af3-0a05-987c-741f-fa8ff9d65d51}</UniqueIdentifier>
+    </Filter>
     <Filter Include="src\core\ext\lb_policy">
       <UniqueIdentifier>{a23781d2-27e4-7cb0-12cd-59782ecb21ce}</UniqueIdentifier>
     </Filter>
@@ -899,6 +908,9 @@
     <Filter Include="src\core\ext\transport\chttp2">
       <UniqueIdentifier>{702829f0-099e-2ab7-6b44-ed7cff3ec083}</UniqueIdentifier>
     </Filter>
+    <Filter Include="src\core\ext\transport\chttp2\alpn">
+      <UniqueIdentifier>{7d4830f7-20db-07d3-c3a9-ecfe63ae1992}</UniqueIdentifier>
+    </Filter>
     <Filter Include="src\core\ext\transport\chttp2\client">
       <UniqueIdentifier>{0d589e16-e470-4968-318c-796af5a33637}</UniqueIdentifier>
     </Filter>
@@ -920,9 +932,6 @@
     <Filter Include="src\core\lib\channel">
       <UniqueIdentifier>{fb964f3d-a59c-a7ba-fee5-6072dbb94a7b}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\core\lib\client_config">
-      <UniqueIdentifier>{29ca2974-89e4-1a74-3e4d-0d63e2f77566}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src\core\lib\compression">
       <UniqueIdentifier>{b88002e9-185e-4e64-49f5-2d8989ce87f6}</UniqueIdentifier>
     </Filter>
diff --git a/vsprojects/vcxproj/interop_client_helper/interop_client_helper.vcxproj b/vsprojects/vcxproj/interop_client_helper/interop_client_helper.vcxproj
index 7a8a4b3..2ed0ba5 100644
--- a/vsprojects/vcxproj/interop_client_helper/interop_client_helper.vcxproj
+++ b/vsprojects/vcxproj/interop_client_helper/interop_client_helper.vcxproj
@@ -162,21 +162,21 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
+      <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
+    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++_test_util\grpc++_test_util.vcxproj">
       <Project>{0BE77741-552A-929B-A497-4EF7ECE17A64}</Project>
     </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
       <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
     </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
-      <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
-      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
-      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
-    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/interop_client_main/interop_client_main.vcxproj b/vsprojects/vcxproj/interop_client_main/interop_client_main.vcxproj
index b85c713..20559ee 100644
--- a/vsprojects/vcxproj/interop_client_main/interop_client_main.vcxproj
+++ b/vsprojects/vcxproj/interop_client_main/interop_client_main.vcxproj
@@ -180,8 +180,20 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\interop_client_helper\interop_client_helper.vcxproj">
-      <Project>{AE8AE98D-8EB9-D931-AA79-F6AB16234A49}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
+      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
+      <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++_test_config\grpc++_test_config.vcxproj">
+      <Project>{3F7D093D-11F9-C4BC-BEB7-18EB28E3F290}</Project>
     </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++_test_util\grpc++_test_util.vcxproj">
       <Project>{0BE77741-552A-929B-A497-4EF7ECE17A64}</Project>
@@ -189,20 +201,8 @@
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
       <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
     </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
-      <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
-      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
-      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
-      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++_test_config\grpc++_test_config.vcxproj">
-      <Project>{3F7D093D-11F9-C4BC-BEB7-18EB28E3F290}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\interop_client_helper\interop_client_helper.vcxproj">
+      <Project>{AE8AE98D-8EB9-D931-AA79-F6AB16234A49}</Project>
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/vsprojects/vcxproj/interop_server_helper/interop_server_helper.vcxproj b/vsprojects/vcxproj/interop_server_helper/interop_server_helper.vcxproj
index 4c99988..0719600 100644
--- a/vsprojects/vcxproj/interop_server_helper/interop_server_helper.vcxproj
+++ b/vsprojects/vcxproj/interop_server_helper/interop_server_helper.vcxproj
@@ -154,17 +154,17 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
-      <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
-      <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
     </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
       <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
     </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
-      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
+      <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
+      <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/vsprojects/vcxproj/interop_server_main/interop_server_main.vcxproj b/vsprojects/vcxproj/interop_server_main/interop_server_main.vcxproj
index 075750a..12e462a 100644
--- a/vsprojects/vcxproj/interop_server_main/interop_server_main.vcxproj
+++ b/vsprojects/vcxproj/interop_server_main/interop_server_main.vcxproj
@@ -175,8 +175,20 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\interop_server_helper\interop_server_helper.vcxproj">
-      <Project>{F55BEA2C-B61D-AAFE-CA15-223B8AC0DE5A}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
+      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
+      <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++_test_config\grpc++_test_config.vcxproj">
+      <Project>{3F7D093D-11F9-C4BC-BEB7-18EB28E3F290}</Project>
     </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++_test_util\grpc++_test_util.vcxproj">
       <Project>{0BE77741-552A-929B-A497-4EF7ECE17A64}</Project>
@@ -184,20 +196,8 @@
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
       <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
     </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
-      <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
-      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
-      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
-      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++_test_config\grpc++_test_config.vcxproj">
-      <Project>{3F7D093D-11F9-C4BC-BEB7-18EB28E3F290}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\interop_server_helper\interop_server_helper.vcxproj">
+      <Project>{F55BEA2C-B61D-AAFE-CA15-223B8AC0DE5A}</Project>
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/vsprojects/vcxproj/qps/qps.vcxproj b/vsprojects/vcxproj/qps/qps.vcxproj
index d458664..7ba8c19 100644
--- a/vsprojects/vcxproj/qps/qps.vcxproj
+++ b/vsprojects/vcxproj/qps/qps.vcxproj
@@ -233,14 +233,14 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
-      <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
+      <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
     </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++_test_util\grpc++_test_util.vcxproj">
       <Project>{0BE77741-552A-929B-A497-4EF7ECE17A64}</Project>
     </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
-      <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
+      <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/vsprojects/vcxproj/reconnect_server/reconnect_server.vcxproj b/vsprojects/vcxproj/reconnect_server/reconnect_server.vcxproj
index 9e4d44d..6f63aec 100644
--- a/vsprojects/vcxproj/reconnect_server/reconnect_server.vcxproj
+++ b/vsprojects/vcxproj/reconnect_server/reconnect_server.vcxproj
@@ -154,20 +154,20 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\test_tcp_server\test_tcp_server.vcxproj">
-      <Project>{E3110C46-A148-FF65-08FD-3324829BE7FE}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
-      <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
-      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
     </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
       <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
     </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
-      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
+      <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\test_tcp_server\test_tcp_server.vcxproj">
+      <Project>{E3110C46-A148-FF65-08FD-3324829BE7FE}</Project>
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/vsprojects/vcxproj/test/bad_client/bad_client_test/bad_client_test.vcxproj b/vsprojects/vcxproj/test/bad_client/bad_client_test/bad_client_test.vcxproj
index 07b7369..7b60968 100644
--- a/vsprojects/vcxproj/test/bad_client/bad_client_test/bad_client_test.vcxproj
+++ b/vsprojects/vcxproj/test/bad_client/bad_client_test/bad_client_test.vcxproj
@@ -154,18 +154,18 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
+      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
+    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util_unsecure\grpc_test_util_unsecure.vcxproj">
       <Project>{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}</Project>
     </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_unsecure\grpc_unsecure.vcxproj">
       <Project>{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}</Project>
     </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
-      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
-      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
-    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_aead_test_lib/boringssl_aead_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_aead_test_lib/boringssl_aead_test_lib.vcxproj
index 494840a..044d0bf 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_aead_test_lib/boringssl_aead_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_aead_test_lib/boringssl_aead_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_aes_test_lib/boringssl_aes_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_aes_test_lib/boringssl_aes_test_lib.vcxproj
index 3b1de7c..fc61fc0 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_aes_test_lib/boringssl_aes_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_aes_test_lib/boringssl_aes_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_asn1_test_lib/boringssl_asn1_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_asn1_test_lib/boringssl_asn1_test_lib.vcxproj
index 177bfcb..ce79e80 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_asn1_test_lib/boringssl_asn1_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_asn1_test_lib/boringssl_asn1_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_base64_test_lib/boringssl_base64_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_base64_test_lib/boringssl_base64_test_lib.vcxproj
index 70c99d8..73ef25c 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_base64_test_lib/boringssl_base64_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_base64_test_lib/boringssl_base64_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_bio_test_lib/boringssl_bio_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_bio_test_lib/boringssl_bio_test_lib.vcxproj
index 4db293e..9940f27 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_bio_test_lib/boringssl_bio_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_bio_test_lib/boringssl_bio_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_bn_test_lib/boringssl_bn_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_bn_test_lib/boringssl_bn_test_lib.vcxproj
index 2dc5a0b..d93b621 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_bn_test_lib/boringssl_bn_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_bn_test_lib/boringssl_bn_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_bytestring_test_lib/boringssl_bytestring_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_bytestring_test_lib/boringssl_bytestring_test_lib.vcxproj
index 8848184..6712766 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_bytestring_test_lib/boringssl_bytestring_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_bytestring_test_lib/boringssl_bytestring_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_cipher_test_lib/boringssl_cipher_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_cipher_test_lib/boringssl_cipher_test_lib.vcxproj
index ef18515..1f3560f 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_cipher_test_lib/boringssl_cipher_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_cipher_test_lib/boringssl_cipher_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_cmac_test_lib/boringssl_cmac_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_cmac_test_lib/boringssl_cmac_test_lib.vcxproj
index 06740ca..8949f2f 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_cmac_test_lib/boringssl_cmac_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_cmac_test_lib/boringssl_cmac_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_constant_time_test_lib/boringssl_constant_time_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_constant_time_test_lib/boringssl_constant_time_test_lib.vcxproj
index cc31162..2dc952a 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_constant_time_test_lib/boringssl_constant_time_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_constant_time_test_lib/boringssl_constant_time_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_dh_test_lib/boringssl_dh_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_dh_test_lib/boringssl_dh_test_lib.vcxproj
index aec7e2f..189b14b 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_dh_test_lib/boringssl_dh_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_dh_test_lib/boringssl_dh_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_digest_test_lib/boringssl_digest_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_digest_test_lib/boringssl_digest_test_lib.vcxproj
index 30f6573..9a3a231 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_digest_test_lib/boringssl_digest_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_digest_test_lib/boringssl_digest_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_dsa_test_lib/boringssl_dsa_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_dsa_test_lib/boringssl_dsa_test_lib.vcxproj
index 0d35de1..c46de48 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_dsa_test_lib/boringssl_dsa_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_dsa_test_lib/boringssl_dsa_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ec_test_lib/boringssl_ec_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_ec_test_lib/boringssl_ec_test_lib.vcxproj
index 644048b..d9aaf8a 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_ec_test_lib/boringssl_ec_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ec_test_lib/boringssl_ec_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_test_lib/boringssl_ecdsa_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_test_lib/boringssl_ecdsa_test_lib.vcxproj
index 7bc5df2..ab6cbd4 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_test_lib/boringssl_ecdsa_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ecdsa_test_lib/boringssl_ecdsa_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ed25519_test_lib/boringssl_ed25519_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_ed25519_test_lib/boringssl_ed25519_test_lib.vcxproj
index 6f5256b..dd8833f 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_ed25519_test_lib/boringssl_ed25519_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ed25519_test_lib/boringssl_ed25519_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_err_test_lib/boringssl_err_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_err_test_lib/boringssl_err_test_lib.vcxproj
index 87def13..4a9f563 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_err_test_lib/boringssl_err_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_err_test_lib/boringssl_err_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_evp_extra_test_lib/boringssl_evp_extra_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_evp_extra_test_lib/boringssl_evp_extra_test_lib.vcxproj
index b014092..eebfb38 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_evp_extra_test_lib/boringssl_evp_extra_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_evp_extra_test_lib/boringssl_evp_extra_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_evp_test_lib/boringssl_evp_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_evp_test_lib/boringssl_evp_test_lib.vcxproj
index 70657fe..e329100 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_evp_test_lib/boringssl_evp_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_evp_test_lib/boringssl_evp_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_example_mul_lib/boringssl_example_mul_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_example_mul_lib/boringssl_example_mul_lib.vcxproj
index 72e7b1f..f5840a1 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_example_mul_lib/boringssl_example_mul_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_example_mul_lib/boringssl_example_mul_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_gcm_test_lib/boringssl_gcm_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_gcm_test_lib/boringssl_gcm_test_lib.vcxproj
index 7b5ffa1..de58b93 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_gcm_test_lib/boringssl_gcm_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_gcm_test_lib/boringssl_gcm_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_hkdf_test_lib/boringssl_hkdf_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_hkdf_test_lib/boringssl_hkdf_test_lib.vcxproj
index 0160850..6148f42 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_hkdf_test_lib/boringssl_hkdf_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_hkdf_test_lib/boringssl_hkdf_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_hmac_test_lib/boringssl_hmac_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_hmac_test_lib/boringssl_hmac_test_lib.vcxproj
index 3a7e768..903fcf1 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_hmac_test_lib/boringssl_hmac_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_hmac_test_lib/boringssl_hmac_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_lhash_test_lib/boringssl_lhash_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_lhash_test_lib/boringssl_lhash_test_lib.vcxproj
index b12007d..058e40b 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_lhash_test_lib/boringssl_lhash_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_lhash_test_lib/boringssl_lhash_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_pbkdf_test_lib/boringssl_pbkdf_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_pbkdf_test_lib/boringssl_pbkdf_test_lib.vcxproj
index 090beb8..a3b5532 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_pbkdf_test_lib/boringssl_pbkdf_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_pbkdf_test_lib/boringssl_pbkdf_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_pkcs12_test_lib/boringssl_pkcs12_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_pkcs12_test_lib/boringssl_pkcs12_test_lib.vcxproj
index 5f316cd..8deb52e 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_pkcs12_test_lib/boringssl_pkcs12_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_pkcs12_test_lib/boringssl_pkcs12_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_pkcs7_test_lib/boringssl_pkcs7_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_pkcs7_test_lib/boringssl_pkcs7_test_lib.vcxproj
index 7037aab..4d4b250 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_pkcs7_test_lib/boringssl_pkcs7_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_pkcs7_test_lib/boringssl_pkcs7_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_pkcs8_test_lib/boringssl_pkcs8_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_pkcs8_test_lib/boringssl_pkcs8_test_lib.vcxproj
index 8e2d6c9..c6ff341 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_pkcs8_test_lib/boringssl_pkcs8_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_pkcs8_test_lib/boringssl_pkcs8_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_poly1305_test_lib/boringssl_poly1305_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_poly1305_test_lib/boringssl_poly1305_test_lib.vcxproj
index 852a161..dd01933 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_poly1305_test_lib/boringssl_poly1305_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_poly1305_test_lib/boringssl_poly1305_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test_lib/boringssl_pqueue_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test_lib/boringssl_pqueue_test_lib.vcxproj
index 12198c1..044f46c 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test_lib/boringssl_pqueue_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_pqueue_test_lib/boringssl_pqueue_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_refcount_test_lib/boringssl_refcount_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_refcount_test_lib/boringssl_refcount_test_lib.vcxproj
index ab0bb50..38fd3af 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_refcount_test_lib/boringssl_refcount_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_refcount_test_lib/boringssl_refcount_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_rsa_test_lib/boringssl_rsa_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_rsa_test_lib/boringssl_rsa_test_lib.vcxproj
index 420f70a..0071ff1 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_rsa_test_lib/boringssl_rsa_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_rsa_test_lib/boringssl_rsa_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_ssl_test_lib/boringssl_ssl_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_ssl_test_lib/boringssl_ssl_test_lib.vcxproj
index 58122a2..7d749fd 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_ssl_test_lib/boringssl_ssl_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_ssl_test_lib/boringssl_ssl_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_tab_test_lib/boringssl_tab_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_tab_test_lib/boringssl_tab_test_lib.vcxproj
index 3797961..bdd1d9d 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_tab_test_lib/boringssl_tab_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_tab_test_lib/boringssl_tab_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_thread_test_lib/boringssl_thread_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_thread_test_lib/boringssl_thread_test_lib.vcxproj
index 9ab8c25..f327c01 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_thread_test_lib/boringssl_thread_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_thread_test_lib/boringssl_thread_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_v3name_test_lib/boringssl_v3name_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_v3name_test_lib/boringssl_v3name_test_lib.vcxproj
index 43bdab2..2c2fced 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_v3name_test_lib/boringssl_v3name_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_v3name_test_lib/boringssl_v3name_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/boringssl/boringssl_x25519_test_lib/boringssl_x25519_test_lib.vcxproj b/vsprojects/vcxproj/test/boringssl/boringssl_x25519_test_lib/boringssl_x25519_test_lib.vcxproj
index 574207a..4d113e0 100644
--- a/vsprojects/vcxproj/test/boringssl/boringssl_x25519_test_lib/boringssl_x25519_test_lib.vcxproj
+++ b/vsprojects/vcxproj/test/boringssl/boringssl_x25519_test_lib/boringssl_x25519_test_lib.vcxproj
@@ -151,12 +151,12 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
-      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
-    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl\boringssl.vcxproj">
       <Project>{9FD9A3EF-C4A3-8390-D8F4-6F86C22A58CE}</Project>
     </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\boringssl_test_util\boringssl_test_util.vcxproj">
+      <Project>{427037B1-B51B-D6F1-5025-AD12B200266A}</Project>
+    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/end2end/tests/end2end_nosec_tests/end2end_nosec_tests.vcxproj b/vsprojects/vcxproj/test/end2end/tests/end2end_nosec_tests/end2end_nosec_tests.vcxproj
index d54d21b..1d1e014 100644
--- a/vsprojects/vcxproj/test/end2end/tests/end2end_nosec_tests/end2end_nosec_tests.vcxproj
+++ b/vsprojects/vcxproj/test/end2end/tests/end2end_nosec_tests/end2end_nosec_tests.vcxproj
@@ -227,18 +227,18 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
+      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
+    </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util_unsecure\grpc_test_util_unsecure.vcxproj">
       <Project>{0A7E7F92-FDEA-40F1-A9EC-3BA484F98BBF}</Project>
     </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_unsecure\grpc_unsecure.vcxproj">
       <Project>{46CEDFFF-9692-456A-AA24-38B5D6BCF4C5}</Project>
     </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
-      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
-      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
-    </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
diff --git a/vsprojects/vcxproj/test/end2end/tests/end2end_tests/end2end_tests.vcxproj b/vsprojects/vcxproj/test/end2end/tests/end2end_tests/end2end_tests.vcxproj
index c0b21c9..42372ca 100644
--- a/vsprojects/vcxproj/test/end2end/tests/end2end_tests/end2end_tests.vcxproj
+++ b/vsprojects/vcxproj/test/end2end/tests/end2end_tests/end2end_tests.vcxproj
@@ -229,17 +229,17 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
-      <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
-      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
     </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
       <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
     </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
-      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
+      <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
diff --git a/vsprojects/vcxproj/test_tcp_server/test_tcp_server.vcxproj b/vsprojects/vcxproj/test_tcp_server/test_tcp_server.vcxproj
index d0bf6c0..d3956f1 100644
--- a/vsprojects/vcxproj/test_tcp_server/test_tcp_server.vcxproj
+++ b/vsprojects/vcxproj/test_tcp_server/test_tcp_server.vcxproj
@@ -154,17 +154,17 @@
     </ClCompile>
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
-      <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
-    </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
-      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
+      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
     </ProjectReference>
     <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr_test_util\gpr_test_util.vcxproj">
       <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
     </ProjectReference>
-    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\gpr\gpr.vcxproj">
-      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc\grpc.vcxproj">
+      <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
+    </ProjectReference>
+    <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
+      <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
     </ProjectReference>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />