Merge branch 'master' of github.com:google/grpc into the-purge
diff --git a/BUILD b/BUILD
index e5822c7..ccff9c0 100644
--- a/BUILD
+++ b/BUILD
@@ -72,6 +72,7 @@
         "src/core/support/sync.c",
         "src/core/support/sync_posix.c",
         "src/core/support/sync_win32.c",
+        "src/core/support/thd.c",
         "src/core/support/thd_posix.c",
         "src/core/support/thd_win32.c",
         "src/core/support/time.c",
diff --git a/Makefile b/Makefile
index 3e5295f..6428da5 100644
--- a/Makefile
+++ b/Makefile
@@ -94,6 +94,15 @@
 LDFLAGS_dbg =
 DEFINES_dbg = _DEBUG DEBUG
 
+VALID_CONFIG_mutrace = 1
+CC_mutrace = $(DEFAULT_CC)
+CXX_mutrace = $(DEFAULT_CXX)
+LD_mutrace = $(DEFAULT_CC)
+LDXX_mutrace = $(DEFAULT_CXX)
+CPPFLAGS_mutrace = -O0
+LDFLAGS_mutrace = -rdynamic
+DEFINES_mutrace = _DEBUG DEBUG
+
 VALID_CONFIG_valgrind = 1
 REQUIRE_CUSTOM_LIBRARIES_valgrind = 1
 CC_valgrind = $(DEFAULT_CC)
@@ -2324,6 +2333,7 @@
     src/core/support/sync.c \
     src/core/support/sync_posix.c \
     src/core/support/sync_win32.c \
+    src/core/support/thd.c \
     src/core/support/thd_posix.c \
     src/core/support/thd_win32.c \
     src/core/support/time.c \
@@ -2418,6 +2428,7 @@
 $(OBJDIR)/$(CONFIG)/src/core/support/sync.o: 
 $(OBJDIR)/$(CONFIG)/src/core/support/sync_posix.o: 
 $(OBJDIR)/$(CONFIG)/src/core/support/sync_win32.o: 
+$(OBJDIR)/$(CONFIG)/src/core/support/thd.o: 
 $(OBJDIR)/$(CONFIG)/src/core/support/thd_posix.o: 
 $(OBJDIR)/$(CONFIG)/src/core/support/thd_win32.o: 
 $(OBJDIR)/$(CONFIG)/src/core/support/time.o: 
diff --git a/README.md b/README.md
index fa60b83..b78745f 100644
--- a/README.md
+++ b/README.md
@@ -5,6 +5,10 @@
 
 Copyright 2015 Google Inc.
 
+#Documentation
+
+You can find more detailed documentation and examples in the [grpc-common repository](http://github.com/grpc/grpc-common).
+
 #Installation
 
 See grpc/INSTALL for installation instructions for various platforms.
@@ -25,10 +29,6 @@
 Java source code is in [grpc-java] (http://github.com/grpc/grpc-java) repository. 
 Go source code is in [grpc-go] (http://github.com/grpc/grpc-go) repository.
 
-#Documentation
-
-You can find more detailed documentation and examples in the [grpc-common repository](http://github.com/grpc/grpc-common).
-
 #Current Status of libraries
 
 Libraries in different languages are in different state of development. We are seeking contributions for all of these libraries.
diff --git a/build.json b/build.json
index 1e7ab96..06adfee 100644
--- a/build.json
+++ b/build.json
@@ -337,6 +337,7 @@
         "src/core/support/sync.c",
         "src/core/support/sync_posix.c",
         "src/core/support/sync_win32.c",
+        "src/core/support/thd.c",
         "src/core/support/thd_posix.c",
         "src/core/support/thd_win32.c",
         "src/core/support/time.c",
diff --git a/include/grpc/support/thd.h b/include/grpc/support/thd.h
index 64d5bed..8126992 100644
--- a/include/grpc/support/thd.h
+++ b/include/grpc/support/thd.h
@@ -52,9 +52,8 @@
 
 /* Thread creation options. */
 typedef struct {
-  int flags; /* Flags below can be set here.  Default value 0.  */
+  int flags; /* Opaque field. Get and set with accessors below. */
 } gpr_thd_options;
-/* No flags are currently defined. */
 
 /* Create a new thread running (*thd_body)(arg) and place its thread identifier
    in *t, and return true.  If there are insufficient resources, return false.
@@ -66,9 +65,25 @@
 /* Return a gpr_thd_options struct with all fields set to defaults. */
 gpr_thd_options gpr_thd_options_default(void);
 
+/* Set the thread to become detached on startup - this is the default. */
+void gpr_thd_options_set_detached(gpr_thd_options *options);
+
+/* Set the thread to become joinable - mutually exclusive with detached. */
+void gpr_thd_options_set_joinable(gpr_thd_options *options);
+
+/* Returns non-zero if the option detached is set. */
+int gpr_thd_options_is_detached(const gpr_thd_options *options);
+
+/* Returns non-zero if the option joinable is set. */
+int gpr_thd_options_is_joinable(const gpr_thd_options *options);
+
 /* Returns the identifier of the current thread. */
 gpr_thd_id gpr_thd_currentid(void);
 
+/* Blocks until the specified thread properly terminates.
+   Calling this on a detached thread has unpredictable results. */
+void gpr_thd_join(gpr_thd_id t);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/compiler/python_generator.cc b/src/compiler/python_generator.cc
index d32213f..72149bc 100644
--- a/src/compiler/python_generator.cc
+++ b/src/compiler/python_generator.cc
@@ -354,6 +354,7 @@
         "Service", service->name(),
       });
   out->Print(dict, "def early_adopter_create_$Service$_stub(host, port,"
+             " metadata_transformer=None,"
              " secure=False, root_certificates=None, private_key=None,"
              " certificate_chain=None, server_host_override=None):\n");
   {
@@ -423,7 +424,8 @@
     out->Print(
         "return implementations.stub("
         "\"$PackageQualifiedServiceName$\","
-        " method_invocation_descriptions, host, port, secure=secure,"
+        " method_invocation_descriptions, host, port,"
+        " metadata_transformer=metadata_transformer, secure=secure,"
         " root_certificates=root_certificates, private_key=private_key,"
         " certificate_chain=certificate_chain,"
         " server_host_override=server_host_override)\n",
diff --git a/src/core/support/thd.c b/src/core/support/thd.c
new file mode 100644
index 0000000..ec308f3
--- /dev/null
+++ b/src/core/support/thd.c
@@ -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.
+ *
+ */
+
+/* Posix implementation for gpr threads. */
+
+#include <memory.h>
+
+#include <grpc/support/thd.h>
+
+enum {
+  GPR_THD_JOINABLE = 1
+};
+
+gpr_thd_options gpr_thd_options_default(void) {
+  gpr_thd_options options;
+  memset(&options, 0, sizeof(options));
+  return options;
+}
+
+void gpr_thd_options_set_detached(gpr_thd_options *options) {
+  options->flags &= ~GPR_THD_JOINABLE;
+}
+
+void gpr_thd_options_set_joinable(gpr_thd_options *options) {
+  options->flags |= GPR_THD_JOINABLE;
+}
+
+int gpr_thd_options_is_detached(const gpr_thd_options *options) {
+  if (!options) return 1;
+  return (options->flags & GPR_THD_JOINABLE) == 0;
+}
+
+int gpr_thd_options_is_joinable(const gpr_thd_options *options) {
+  if (!options) return 0;
+  return (options->flags & GPR_THD_JOINABLE) == GPR_THD_JOINABLE;
+}
diff --git a/src/core/support/thd_posix.c b/src/core/support/thd_posix.c
index f50ea58..7bf5272 100644
--- a/src/core/support/thd_posix.c
+++ b/src/core/support/thd_posix.c
@@ -68,7 +68,11 @@
   a->arg = arg;
 
   GPR_ASSERT(pthread_attr_init(&attr) == 0);
-  GPR_ASSERT(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) == 0);
+  if (gpr_thd_options_is_detached(options)) {
+    GPR_ASSERT(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED) == 0);
+  } else {
+    GPR_ASSERT(pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE) == 0);
+  }
   thread_started = (pthread_create(&p, &attr, &thread_body, a) == 0);
   GPR_ASSERT(pthread_attr_destroy(&attr) == 0);
   if (!thread_started) {
@@ -78,14 +82,12 @@
   return thread_started;
 }
 
-gpr_thd_options gpr_thd_options_default(void) {
-  gpr_thd_options options;
-  memset(&options, 0, sizeof(options));
-  return options;
-}
-
 gpr_thd_id gpr_thd_currentid(void) {
   return (gpr_thd_id)pthread_self();
 }
 
+void gpr_thd_join(gpr_thd_id t) {
+  pthread_join(t, NULL);
+}
+
 #endif /* GPR_POSIX_SYNC */
diff --git a/src/core/support/thd_win32.c b/src/core/support/thd_win32.c
index 347cad5..f92fb64 100644
--- a/src/core/support/thd_win32.c
+++ b/src/core/support/thd_win32.c
@@ -31,7 +31,7 @@
  *
  */
 
-/* Posix implementation for gpr threads. */
+/* Windows implementation for gpr threads. */
 
 #include <grpc/support/port_platform.h>
 
@@ -40,47 +40,81 @@
 #include <windows.h>
 #include <string.h>
 #include <grpc/support/alloc.h>
+#include <grpc/support/log.h>
 #include <grpc/support/thd.h>
 
-struct thd_arg {
+#if defined(_MSC_VER)
+#define thread_local __declspec(thread)
+#elif defined(__GNUC__)
+#define thread_local __thread
+#else
+#error "Unknown compiler - please file a bug report"
+#endif
+
+struct thd_info {
   void (*body)(void *arg); /* body of a thread */
   void *arg;               /* argument to a thread */
+  HANDLE join_event;       /* if joinable, the join event */
+  int joinable;            /* true if not detached */
 };
 
+static thread_local struct thd_info *g_thd_info;
+
+/* Destroys a thread info */
+static destroy_thread(struct thd_info *t) {
+  if (t->joinable) CloseHandle(t->join_event);
+  gpr_free(t);
+}
+
 /* Body of every thread started via gpr_thd_new. */
 static DWORD WINAPI thread_body(void *v) {
-  struct thd_arg a = *(struct thd_arg *)v;
-  gpr_free(v);
-  (*a.body)(a.arg);
+  g_thd_info = (struct thd_info *)v;
+  g_thd_info->body(g_thd_info->arg);
+  if (g_thd_info->joinable) {
+    BOOL ret = SetEvent(g_thd_info->join_event);
+    GPR_ASSERT(ret);
+  } else {
+    destroy_thread(g_thd_info);
+  }
   return 0;
 }
 
 int gpr_thd_new(gpr_thd_id *t, void (*thd_body)(void *arg), void *arg,
                 const gpr_thd_options *options) {
   HANDLE handle;
-  DWORD thread_id;
-  struct thd_arg *a = gpr_malloc(sizeof(*a));
-  a->body = thd_body;
-  a->arg = arg;
+  struct thd_info *info = gpr_malloc(sizeof(*info));
+  info->body = thd_body;
+  info->arg = arg;
   *t = 0;
-  handle = CreateThread(NULL, 64 * 1024, thread_body, a, 0, &thread_id);
-  if (handle == NULL) {
-    gpr_free(a);
+  if (gpr_thd_options_is_joinable(options)) {
+    info->joinable = 1;
+    info->join_event = CreateEvent(NULL, FALSE, FALSE, NULL);
+    if (info->join_event == NULL) {
+      gpr_free(info);
+      return 0;
+    }
   } else {
-    CloseHandle(handle); /* threads are "detached" */
+    info->joinable = 0;
   }
-  *t = (gpr_thd_id)thread_id;
+  handle = CreateThread(NULL, 64 * 1024, thread_body, info, 0, NULL);
+  if (handle == NULL) {
+    destroy_thread(info);
+  } else {
+    *t = (gpr_thd_id)info;
+    CloseHandle(handle);
+  }
   return handle != NULL;
 }
 
-gpr_thd_options gpr_thd_options_default(void) {
-  gpr_thd_options options;
-  memset(&options, 0, sizeof(options));
-  return options;
+gpr_thd_id gpr_thd_currentid(void) {
+  return (gpr_thd_id)g_thd_info;
 }
 
-gpr_thd_id gpr_thd_currentid(void) {
-  return (gpr_thd_id)GetCurrentThreadId();
+void gpr_thd_join(gpr_thd_id t) {
+  struct thd_info *info = (struct thd_info *)t;
+  DWORD ret = WaitForSingleObject(info->join_event, INFINITE);
+  GPR_ASSERT(ret == WAIT_OBJECT_0);
+  destroy_thread(info);
 }
 
 #endif /* GPR_WIN32 */
diff --git a/src/core/transport/metadata.c b/src/core/transport/metadata.c
index 1c15716..066cc26 100644
--- a/src/core/transport/metadata.c
+++ b/src/core/transport/metadata.c
@@ -97,7 +97,7 @@
 static void internal_string_unref(internal_string *s);
 static void discard_metadata(grpc_mdctx *ctx);
 static void gc_mdtab(grpc_mdctx *ctx);
-static void metadata_context_destroy(grpc_mdctx *ctx);
+static void metadata_context_destroy_locked(grpc_mdctx *ctx);
 
 static void lock(grpc_mdctx *ctx) { gpr_mu_lock(&ctx->mu); }
 
@@ -122,8 +122,7 @@
       discard_metadata(ctx);
     }
     if (ctx->strtab_count == 0) {
-      gpr_mu_unlock(&ctx->mu);
-      metadata_context_destroy(ctx);
+      metadata_context_destroy_locked(ctx);
       return;
     }
   }
@@ -185,8 +184,7 @@
   }
 }
 
-static void metadata_context_destroy(grpc_mdctx *ctx) {
-  gpr_mu_lock(&ctx->mu);
+static void metadata_context_destroy_locked(grpc_mdctx *ctx) {
   GPR_ASSERT(ctx->strtab_count == 0);
   GPR_ASSERT(ctx->mdtab_count == 0);
   GPR_ASSERT(ctx->mdtab_free == 0);
diff --git a/src/csharp/Grpc.Examples.MathClient/MathClient.cs b/src/csharp/Grpc.Examples.MathClient/MathClient.cs
index f5956bd..ca7683d 100644
--- a/src/csharp/Grpc.Examples.MathClient/MathClient.cs
+++ b/src/csharp/Grpc.Examples.MathClient/MathClient.cs
@@ -46,11 +46,15 @@
                 MathGrpc.IMathServiceClient stub = new MathGrpc.MathServiceClientStub(channel);
                 MathExamples.DivExample(stub);
 
-                MathExamples.FibExample(stub);
+                MathExamples.DivAsyncExample(stub).Wait();
 
-                MathExamples.SumExample(stub);
+                MathExamples.FibExample(stub).Wait();
 
-                MathExamples.DivManyExample(stub);
+                MathExamples.SumExample(stub).Wait();
+
+                MathExamples.DivManyExample(stub).Wait();
+
+                MathExamples.DependendRequestsExample(stub).Wait();
             }
 
             GrpcEnvironment.Shutdown();
diff --git a/src/csharp/Grpc.Examples.Tests/Grpc.Examples.Tests.csproj b/src/csharp/Grpc.Examples.Tests/Grpc.Examples.Tests.csproj
index cf5a640..f9c1caf 100644
--- a/src/csharp/Grpc.Examples.Tests/Grpc.Examples.Tests.csproj
+++ b/src/csharp/Grpc.Examples.Tests/Grpc.Examples.Tests.csproj
@@ -37,6 +37,18 @@
     <Reference Include="Google.ProtocolBuffers">
       <HintPath>..\packages\Google.ProtocolBuffers.2.4.1.521\lib\net40\Google.ProtocolBuffers.dll</HintPath>
     </Reference>
+    <Reference Include="System.Reactive.Interfaces">
+      <HintPath>..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Reactive.Core">
+      <HintPath>..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Reactive.Linq">
+      <HintPath>..\packages\Rx-Linq.2.2.5\lib\net45\System.Reactive.Linq.dll</HintPath>
+    </Reference>
+    <Reference Include="System.Reactive.PlatformServices">
+      <HintPath>..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll</HintPath>
+    </Reference>
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />
diff --git a/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs b/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs
index 85f213c..fa5d668 100644
--- a/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs
+++ b/src/csharp/Grpc.Examples.Tests/MathClientServerTests.cs
@@ -33,6 +33,7 @@
 
 using System;
 using System.Collections.Generic;
+using System.Reactive.Linq;
 using System.Threading;
 using System.Threading.Tasks;
 using Grpc.Core;
@@ -120,14 +121,12 @@
         [Test]
         public void Sum()
         {
-            var res = client.Sum();
-            foreach (var num in new long[] { 10, 20, 30 })
-            {
-                res.Inputs.OnNext(Num.CreateBuilder().SetNum_(num).Build());
-            }
-            res.Inputs.OnCompleted();
+            var clientStreamingResult = client.Sum();
+            var numList = new List<long> { 10, 20, 30 }.ConvertAll(
+                     n => Num.CreateBuilder().SetNum_(n).Build());
+            numList.Subscribe(clientStreamingResult.Inputs);
 
-            Assert.AreEqual(60, res.Task.Result.Num_);
+            Assert.AreEqual(60, clientStreamingResult.Task.Result.Num_);
         }
 
         [Test]
@@ -142,13 +141,7 @@
 
             var recorder = new RecordingObserver<DivReply>();
             var requestObserver = client.DivMany(recorder);
-
-            foreach (var arg in divArgsList)
-            {
-                requestObserver.OnNext(arg);
-            }
-            requestObserver.OnCompleted();
-
+            divArgsList.Subscribe(requestObserver);
             var result = recorder.ToList().Result;
 
             CollectionAssert.AreEqual(new long[] { 3, 4, 3 }, result.ConvertAll((divReply) => divReply.Quotient));
diff --git a/src/csharp/Grpc.Examples.Tests/packages.config b/src/csharp/Grpc.Examples.Tests/packages.config
index 51c17bc..06c5e6a 100644
--- a/src/csharp/Grpc.Examples.Tests/packages.config
+++ b/src/csharp/Grpc.Examples.Tests/packages.config
@@ -1,5 +1,10 @@
-<?xml version="1.0" encoding="utf-8"?>
-<packages>
-  <package id="Google.ProtocolBuffers" version="2.4.1.521" targetFramework="net45" />
-  <package id="NUnit" version="2.6.4" targetFramework="net45" />
+<?xml version="1.0" encoding="utf-8"?>

+<packages>

+  <package id="Google.ProtocolBuffers" version="2.4.1.521" targetFramework="net45" />

+  <package id="NUnit" version="2.6.4" targetFramework="net45" />

+  <package id="Rx-Core" version="2.2.5" targetFramework="net45" />

+  <package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" />

+  <package id="Rx-Linq" version="2.2.5" targetFramework="net45" />

+  <package id="Rx-Main" version="2.2.5" targetFramework="net45" />

+  <package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" />

 </packages>
\ No newline at end of file
diff --git a/src/csharp/Grpc.Examples/MathExamples.cs b/src/csharp/Grpc.Examples/MathExamples.cs
index b8bb7ea..032372b 100644
--- a/src/csharp/Grpc.Examples/MathExamples.cs
+++ b/src/csharp/Grpc.Examples/MathExamples.cs
@@ -45,51 +45,45 @@
             Console.WriteLine("Div Result: " + result);
         }
 
-        public static void DivAsyncExample(MathGrpc.IMathServiceClient stub)
+        public static async Task DivAsyncExample(MathGrpc.IMathServiceClient stub)
         {
-            Task<DivReply> call = stub.DivAsync(new DivArgs.Builder { Dividend = 4, Divisor = 5 }.Build());
-            DivReply result = call.Result;
+            Task<DivReply> resultTask = stub.DivAsync(new DivArgs.Builder { Dividend = 4, Divisor = 5 }.Build());
+            DivReply result = await resultTask;
+            Console.WriteLine("DivAsync Result: " + result);
+        }
+
+        public static async Task DivAsyncWithCancellationExample(MathGrpc.IMathServiceClient stub)
+        {
+            Task<DivReply> resultTask = stub.DivAsync(new DivArgs.Builder { Dividend = 4, Divisor = 5 }.Build());
+            DivReply result = await resultTask;
             Console.WriteLine(result);
         }
 
-        public static void DivAsyncWithCancellationExample(MathGrpc.IMathServiceClient stub)
-        {
-            Task<DivReply> call = stub.DivAsync(new DivArgs.Builder { Dividend = 4, Divisor = 5 }.Build());
-            DivReply result = call.Result;
-            Console.WriteLine(result);
-        }
-
-        public static void FibExample(MathGrpc.IMathServiceClient stub)
+        public static async Task FibExample(MathGrpc.IMathServiceClient stub)
         {
             var recorder = new RecordingObserver<Num>();
             stub.Fib(new FibArgs.Builder { Limit = 5 }.Build(), recorder);
-
-            List<Num> numbers = recorder.ToList().Result;
-            Console.WriteLine("Fib Result: " + string.Join("|", recorder.ToList().Result));
+            List<Num> result = await recorder.ToList();
+            Console.WriteLine("Fib Result: " + string.Join("|", result));
         }
 
-        public static void SumExample(MathGrpc.IMathServiceClient stub)
+        public static async Task SumExample(MathGrpc.IMathServiceClient stub)
         {
-            List<Num> numbers = new List<Num>
+            var numbers = new List<Num>
             {
                 new Num.Builder { Num_ = 1 }.Build(),
                 new Num.Builder { Num_ = 2 }.Build(),
                 new Num.Builder { Num_ = 3 }.Build()
             };
 
-            var res = stub.Sum();
-            foreach (var num in numbers)
-            {
-                res.Inputs.OnNext(num);
-            }
-            res.Inputs.OnCompleted();
-
-            Console.WriteLine("Sum Result: " + res.Task.Result);
+            var clientStreamingResult = stub.Sum();
+            numbers.Subscribe(clientStreamingResult.Inputs);
+            Console.WriteLine("Sum Result: " + await clientStreamingResult.Task);
         }
 
-        public static void DivManyExample(MathGrpc.IMathServiceClient stub)
+        public static async Task DivManyExample(MathGrpc.IMathServiceClient stub)
         {
-            List<DivArgs> divArgsList = new List<DivArgs>
+            var divArgsList = new List<DivArgs>
             {
                 new DivArgs.Builder { Dividend = 10, Divisor = 3 }.Build(),
                 new DivArgs.Builder { Dividend = 100, Divisor = 21 }.Build(),
@@ -97,26 +91,27 @@
             };
 
             var recorder = new RecordingObserver<DivReply>();
-
             var inputs = stub.DivMany(recorder);
-            foreach (var input in divArgsList)
-            {
-                inputs.OnNext(input);
-            }
-            inputs.OnCompleted();
-
-            Console.WriteLine("DivMany Result: " + string.Join("|", recorder.ToList().Result));
+            divArgsList.Subscribe(inputs);
+            var result = await recorder.ToList();
+            Console.WriteLine("DivMany Result: " + string.Join("|", result));
         }
 
-        public static void DependendRequestsExample(MathGrpc.IMathServiceClient stub)
+        public static async Task DependendRequestsExample(MathGrpc.IMathServiceClient stub)
         {
-            var numberList = new List<Num>
+            var numbers = new List<Num>
             {
-                new Num.Builder { Num_ = 1 }.Build(),
-                new Num.Builder { Num_ = 2 }.Build(), new Num.Builder { Num_ = 3 }.Build()
+                new Num.Builder { Num_ = 1 }.Build(), 
+                new Num.Builder { Num_ = 2 }.Build(),
+                new Num.Builder { Num_ = 3 }.Build()
             };
 
-            numberList.ToObservable();
+            var clientStreamingResult = stub.Sum();
+            numbers.Subscribe(clientStreamingResult.Inputs);
+            Num sum = await clientStreamingResult.Task;
+
+            DivReply result = await stub.DivAsync(new DivArgs.Builder { Dividend = sum.Num_, Divisor = numbers.Count }.Build());
+            Console.WriteLine("Avg Result: " + result);
         }
     }
 }
diff --git a/src/node/binding.gyp b/src/node/binding.gyp
index 7ef3bdf..83f72fa 100644
--- a/src/node/binding.gyp
+++ b/src/node/binding.gyp
@@ -18,12 +18,29 @@
       ],
       'link_settings': {
         'libraries': [
-          '-lrt',
           '-lpthread',
           '-lgrpc',
           '-lgpr'
-        ],
+        ]
       },
+      "conditions": [
+        ['OS == "mac"', {
+          'xcode_settings': {
+            'MACOSX_DEPLOYMENT_TARGET': '10.9',
+            'OTHER_CFLAGS': [
+              '-std=c++11',
+              '-stdlib=libc++'
+            ]
+          }
+        }],
+        ['OS != "mac"', {
+          'link_settings': {
+            'libraries': [
+              '-lrt'
+            ]
+          }
+        }]
+      ],
       "target_name": "grpc",
       "sources": [
         "ext/byte_buffer.cc",
diff --git a/src/node/ext/byte_buffer.cc b/src/node/ext/byte_buffer.cc
index 82b54b5..01bd92e 100644
--- a/src/node/ext/byte_buffer.cc
+++ b/src/node/ext/byte_buffer.cc
@@ -32,7 +32,6 @@
  */
 
 #include <string.h>
-#include <malloc.h>
 
 #include <node.h>
 #include <nan.h>
diff --git a/src/node/ext/channel.cc b/src/node/ext/channel.cc
index 787e274..d37bf76 100644
--- a/src/node/ext/channel.cc
+++ b/src/node/ext/channel.cc
@@ -31,8 +31,6 @@
  *
  */
 
-#include <malloc.h>
-
 #include <vector>
 
 #include <node.h>
diff --git a/src/node/ext/server.cc b/src/node/ext/server.cc
index e47bac8..3c2396b 100644
--- a/src/node/ext/server.cc
+++ b/src/node/ext/server.cc
@@ -38,8 +38,6 @@
 #include <node.h>
 #include <nan.h>
 
-#include <malloc.h>
-
 #include <vector>
 #include "grpc/grpc.h"
 #include "grpc/grpc_security.h"
diff --git a/src/node/src/client.js b/src/node/src/client.js
index c46f7d0..fad369c 100644
--- a/src/node/src/client.js
+++ b/src/node/src/client.js
@@ -241,13 +241,13 @@
           callback(err);
           return;
         }
+        emitter.emit('status', response.status);
         if (response.status.code !== grpc.status.OK) {
           var error = new Error(response.status.details);
           error.code = response.status.code;
           callback(error);
           return;
         }
-        emitter.emit('status', response.status);
         emitter.emit('metadata', response.metadata);
         callback(null, deserialize(response.read));
       });
@@ -312,13 +312,13 @@
           callback(err);
           return;
         }
+        stream.emit('status', response.status);
         if (response.status.code !== grpc.status.OK) {
           var error = new Error(response.status.details);
           error.code = response.status.code;
           callback(error);
           return;
         }
-        stream.emit('status', response.status);
         callback(null, deserialize(response.read));
       });
     });
diff --git a/src/node/src/server.js b/src/node/src/server.js
index 8a26a43..05de162 100644
--- a/src/node/src/server.js
+++ b/src/node/src/server.js
@@ -70,6 +70,9 @@
       status.details = error.details;
     }
   }
+  if (error.hasOwnProperty('metadata')) {
+    status.metadata = error.metadata;
+  }
   var error_batch = {};
   error_batch[grpc.opType.SEND_STATUS_FROM_SERVER] = status;
   call.startBatch(error_batch, function(){});
@@ -102,15 +105,20 @@
  * @param {*} value The value to respond with
  * @param {function(*):Buffer=} serialize Serialization function for the
  *     response
+ * @param {Object=} metadata Optional trailing metadata to send with status
  */
-function sendUnaryResponse(call, value, serialize) {
+function sendUnaryResponse(call, value, serialize, metadata) {
   var end_batch = {};
-  end_batch[grpc.opType.SEND_MESSAGE] = serialize(value);
-  end_batch[grpc.opType.SEND_STATUS_FROM_SERVER] = {
+  var status = {
     code: grpc.status.OK,
     details: 'OK',
     metadata: {}
   };
+  if (metadata) {
+    status.metadata = metadata;
+  }
+  end_batch[grpc.opType.SEND_MESSAGE] = serialize(value);
+  end_batch[grpc.opType.SEND_STATUS_FROM_SERVER] = status;
   call.startBatch(end_batch, function (){});
 }
 
@@ -143,6 +151,7 @@
   function setStatus(err) {
     var code = grpc.status.INTERNAL;
     var details = 'Unknown Error';
+    var metadata = {};
     if (err.hasOwnProperty('message')) {
       details = err.message;
     }
@@ -152,7 +161,10 @@
         details = err.details;
       }
     }
-    stream.status = {code: code, details: details, metadata: {}};
+    if (err.hasOwnProperty('metadata')) {
+      metadata = err.metadata;
+    }
+    stream.status = {code: code, details: details, metadata: metadata};
   }
   /**
    * Terminate the call. This includes indicating that reads are done, draining
@@ -166,6 +178,17 @@
     stream.end();
   }
   stream.on('error', terminateCall);
+  /**
+   * Override of Writable#end method that allows for sending metadata with a
+   * success status.
+   * @param {Object=} metadata Metadata to send with the status
+   */
+  stream.end = function(metadata) {
+    if (metadata) {
+      stream.status.metadata = metadata;
+    }
+    Writable.prototype.end.call(this);
+  };
 }
 
 /**
@@ -335,11 +358,13 @@
     if (emitter.cancelled) {
       return;
     }
-    handler.func(emitter, function sendUnaryData(err, value) {
+    handler.func(emitter, function sendUnaryData(err, value, trailer) {
       if (err) {
+        err.metadata = trailer;
         handleError(call, err);
+      } else {
+        sendUnaryResponse(call, value, handler.serialize, trailer);
       }
-      sendUnaryResponse(call, value, handler.serialize);
     });
   });
 }
@@ -378,12 +403,14 @@
   var metadata_batch = {};
   metadata_batch[grpc.opType.SEND_INITIAL_METADATA] = metadata;
   call.startBatch(metadata_batch, function() {});
-  handler.func(stream, function(err, value) {
+  handler.func(stream, function(err, value, trailer) {
     stream.terminate();
     if (err) {
+      err.metadata = trailer;
       handleError(call, err);
+    } else {
+      sendUnaryResponse(call, value, handler.serialize, trailer);
     }
-    sendUnaryResponse(call, value, handler.serialize);
   });
 }
 
diff --git a/src/node/test/surface_test.js b/src/node/test/surface_test.js
index 96b4781..590c644 100644
--- a/src/node/test/surface_test.js
+++ b/src/node/test/surface_test.js
@@ -126,6 +126,167 @@
     });
   });
 });
+describe('Trailing metadata', function() {
+  var client;
+  var server;
+  before(function() {
+    var test_proto = ProtoBuf.loadProtoFile(__dirname + '/test_service.proto');
+    var test_service = test_proto.lookup('TestService');
+    var Server = grpc.buildServer([test_service]);
+    server = new Server({
+      TestService: {
+        unary: function(call, cb) {
+          var req = call.request;
+          if (req.error) {
+            cb(new Error('Requested error'), null, {metadata: ['yes']});
+          } else {
+            cb(null, {count: 1}, {metadata: ['yes']});
+          }
+        },
+        clientStream: function(stream, cb){
+          var count = 0;
+          var errored;
+          stream.on('data', function(data) {
+            if (data.error) {
+              errored = true;
+              cb(new Error('Requested error'), null, {metadata: ['yes']});
+            } else {
+              count += 1;
+            }
+          });
+          stream.on('end', function() {
+            if (!errored) {
+              cb(null, {count: count}, {metadata: ['yes']});
+            }
+          });
+        },
+        serverStream: function(stream) {
+          var req = stream.request;
+          if (req.error) {
+            var err = new Error('Requested error');
+            err.metadata = {metadata: ['yes']};
+            stream.emit('error', err);
+          } else {
+            for (var i = 0; i < 5; i++) {
+              stream.write({count: i});
+            }
+            stream.end({metadata: ['yes']});
+          }
+        },
+        bidiStream: function(stream) {
+          var count = 0;
+          stream.on('data', function(data) {
+            if (data.error) {
+              var err = new Error('Requested error');
+              err.metadata = {
+                metadata: ['yes'],
+                count: ['' + count]
+              };
+              stream.emit('error', err);
+            } else {
+              stream.write({count: count});
+              count += 1;
+            }
+          });
+          stream.on('end', function() {
+            stream.end({metadata: ['yes']});
+          });
+        }
+      }
+    });
+    var port = server.bind('localhost:0');
+    var Client = surface_client.makeProtobufClientConstructor(test_service);
+    client = new Client('localhost:' + port);
+    server.listen();
+  });
+  after(function() {
+    server.shutdown();
+  });
+  it('should be present when a unary call succeeds', function(done) {
+    var call = client.unary({error: false}, function(err, data) {
+      assert.ifError(err);
+    });
+    call.on('status', function(status) {
+      assert.deepEqual(status.metadata.metadata, ['yes']);
+      done();
+    });
+  });
+  it('should be present when a unary call fails', function(done) {
+    var call = client.unary({error: true}, function(err, data) {
+      assert(err);
+    });
+    call.on('status', function(status) {
+      assert.deepEqual(status.metadata.metadata, ['yes']);
+      done();
+    });
+  });
+  it('should be present when a client stream call succeeds', function(done) {
+    var call = client.clientStream(function(err, data) {
+      assert.ifError(err);
+    });
+    call.write({error: false});
+    call.write({error: false});
+    call.end();
+    call.on('status', function(status) {
+      assert.deepEqual(status.metadata.metadata, ['yes']);
+      done();
+    });
+  });
+  it('should be present when a client stream call fails', function(done) {
+    var call = client.clientStream(function(err, data) {
+      assert(err);
+    });
+    call.write({error: false});
+    call.write({error: true});
+    call.end();
+    call.on('status', function(status) {
+      assert.deepEqual(status.metadata.metadata, ['yes']);
+      done();
+    });
+  });
+  it('should be present when a server stream call succeeds', function(done) {
+    var call = client.serverStream({error: false});
+    call.on('data', function(){});
+    call.on('status', function(status) {
+      assert.strictEqual(status.code, grpc.status.OK);
+      assert.deepEqual(status.metadata.metadata, ['yes']);
+      done();
+    });
+  });
+  it('should be present when a server stream call fails', function(done) {
+    var call = client.serverStream({error: true});
+    call.on('data', function(){});
+    call.on('status', function(status) {
+      assert.notStrictEqual(status.code, grpc.status.OK);
+      assert.deepEqual(status.metadata.metadata, ['yes']);
+      done();
+    });
+  });
+  it('should be present when a bidi stream succeeds', function(done) {
+    var call = client.bidiStream();
+    call.write({error: false});
+    call.write({error: false});
+    call.end();
+    call.on('data', function(){});
+    call.on('status', function(status) {
+      assert.strictEqual(status.code, grpc.status.OK);
+      assert.deepEqual(status.metadata.metadata, ['yes']);
+      done();
+    });
+  });
+  it('should be present when a bidi stream fails', function(done) {
+    var call = client.bidiStream();
+    call.write({error: false});
+    call.write({error: true});
+    call.end();
+    call.on('data', function(){});
+    call.on('status', function(status) {
+      assert.notStrictEqual(status.code, grpc.status.OK);
+      assert.deepEqual(status.metadata.metadata, ['yes']);
+      done();
+    });
+  });
+});
 describe('Cancelling surface client', function() {
   var client;
   var server;
diff --git a/src/node/test/test_service.proto b/src/node/test/test_service.proto
new file mode 100644
index 0000000..5d3d891
--- /dev/null
+++ b/src/node/test/test_service.proto
@@ -0,0 +1,52 @@
+// 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.
+
+syntax = "proto2";
+
+message Request {
+  optional bool error = 1;
+}
+
+message Response {
+  optional int32 count = 1;
+}
+
+service TestService {
+  rpc Unary (Request) returns (Response) {
+  }
+
+  rpc ClientStream (stream Request) returns (Response) {
+  }
+
+  rpc ServerStream (Request) returns (stream Response) {
+  }
+
+  rpc BidiStream (stream Request) returns (stream Response) {
+  }
+}
\ No newline at end of file
diff --git a/src/php/ext/grpc/call.c b/src/php/ext/grpc/call.c
index 6e83e79..6bc65b5 100644
--- a/src/php/ext/grpc/call.c
+++ b/src/php/ext/grpc/call.c
@@ -263,7 +263,7 @@
  * @param array batch Array of actions to take
  * @return object Object with results of all actions
  */
-PHP_METHOD(Call, start_batch) {
+PHP_METHOD(Call, startBatch) {
   wrapped_grpc_call *call =
       (wrapped_grpc_call *)zend_object_store_get_object(getThis() TSRMLS_CC);
   grpc_op ops[8];
@@ -494,7 +494,7 @@
 
 static zend_function_entry call_methods[] = {
     PHP_ME(Call, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
-    PHP_ME(Call, start_batch, NULL, ZEND_ACC_PUBLIC)
+    PHP_ME(Call, startBatch, NULL, ZEND_ACC_PUBLIC)
     PHP_ME(Call, cancel, NULL, ZEND_ACC_PUBLIC) PHP_FE_END};
 
 void grpc_init_call(TSRMLS_D) {
diff --git a/src/php/ext/grpc/server.c b/src/php/ext/grpc/server.c
index 46fe745..dbb9425 100644
--- a/src/php/ext/grpc/server.c
+++ b/src/php/ext/grpc/server.c
@@ -133,7 +133,7 @@
  * @param long $tag_cancel The tag to use if the call is cancelled
  * @return Void
  */
-PHP_METHOD(Server, request_call) {
+PHP_METHOD(Server, requestCall) {
   grpc_call_error error_code;
   wrapped_grpc_server *server =
       (wrapped_grpc_server *)zend_object_store_get_object(getThis() TSRMLS_CC);
@@ -178,7 +178,7 @@
  * @param string $addr The address to add
  * @return true on success, false on failure
  */
-PHP_METHOD(Server, add_http2_port) {
+PHP_METHOD(Server, addHttp2Port) {
   wrapped_grpc_server *server =
       (wrapped_grpc_server *)zend_object_store_get_object(getThis() TSRMLS_CC);
   const char *addr;
@@ -193,7 +193,7 @@
   RETURN_LONG(grpc_server_add_http2_port(server->wrapped, addr));
 }
 
-PHP_METHOD(Server, add_secure_http2_port) {
+PHP_METHOD(Server, addSecureHttp2Port) {
   wrapped_grpc_server *server =
       (wrapped_grpc_server *)zend_object_store_get_object(getThis() TSRMLS_CC);
   const char *addr;
@@ -227,9 +227,9 @@
 
 static zend_function_entry server_methods[] = {
     PHP_ME(Server, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
-    PHP_ME(Server, request_call, NULL, ZEND_ACC_PUBLIC)
-    PHP_ME(Server, add_http2_port, NULL, ZEND_ACC_PUBLIC)
-    PHP_ME(Server, add_secure_http2_port, NULL, ZEND_ACC_PUBLIC)
+    PHP_ME(Server, requestCall, NULL, ZEND_ACC_PUBLIC)
+    PHP_ME(Server, addHttp2Port, NULL, ZEND_ACC_PUBLIC)
+    PHP_ME(Server, addSecureHttp2Port, NULL, ZEND_ACC_PUBLIC)
     PHP_ME(Server, start, NULL, ZEND_ACC_PUBLIC) PHP_FE_END};
 
 void grpc_init_server(TSRMLS_D) {
diff --git a/src/php/ext/grpc/timeval.c b/src/php/ext/grpc/timeval.c
index 1c9542d..8a278d6 100644
--- a/src/php/ext/grpc/timeval.c
+++ b/src/php/ext/grpc/timeval.c
@@ -227,7 +227,7 @@
  * Returns the infinite future time value as a timeval object
  * @return Timeval Infinite future time value
  */
-PHP_METHOD(Timeval, inf_future) {
+PHP_METHOD(Timeval, infFuture) {
   zval *grpc_php_timeval_inf_future = grpc_php_wrap_timeval(gpr_inf_future);
   RETURN_DESTROY_ZVAL(grpc_php_timeval_inf_future);
 }
@@ -236,7 +236,7 @@
  * Returns the infinite past time value as a timeval object
  * @return Timeval Infinite past time value
  */
-PHP_METHOD(Timeval, inf_past) {
+PHP_METHOD(Timeval, infPast) {
   zval *grpc_php_timeval_inf_past = grpc_php_wrap_timeval(gpr_inf_past);
   RETURN_DESTROY_ZVAL(grpc_php_timeval_inf_past);
 }
@@ -245,7 +245,7 @@
  * Sleep until this time, interpreted as an absolute timeout
  * @return void
  */
-PHP_METHOD(Timeval, sleep_until) {
+PHP_METHOD(Timeval, sleepUntil) {
   wrapped_grpc_timeval *this =
       (wrapped_grpc_timeval *)zend_object_store_get_object(getThis() TSRMLS_CC);
   gpr_sleep_until(this->wrapped);
@@ -255,11 +255,11 @@
     PHP_ME(Timeval, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR)
     PHP_ME(Timeval, add, NULL, ZEND_ACC_PUBLIC)
     PHP_ME(Timeval, compare, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
-    PHP_ME(Timeval, inf_future, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
-    PHP_ME(Timeval, inf_past, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+    PHP_ME(Timeval, infFuture, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
+    PHP_ME(Timeval, infPast, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
     PHP_ME(Timeval, now, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
     PHP_ME(Timeval, similar, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
-    PHP_ME(Timeval, sleep_until, NULL, ZEND_ACC_PUBLIC)
+    PHP_ME(Timeval, sleepUntil, NULL, ZEND_ACC_PUBLIC)
     PHP_ME(Timeval, subtract, NULL, ZEND_ACC_PUBLIC)
     PHP_ME(Timeval, zero, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC) PHP_FE_END};
 
diff --git a/src/php/lib/Grpc/AbstractCall.php b/src/php/lib/Grpc/AbstractCall.php
index 413d596..1add972 100644
--- a/src/php/lib/Grpc/AbstractCall.php
+++ b/src/php/lib/Grpc/AbstractCall.php
@@ -45,7 +45,7 @@
    * @param string $method The method to call on the remote server
    */
   public function __construct(Channel $channel, $method, $deserialize) {
-    $this->call = new Call($channel, $method, Timeval::inf_future());
+    $this->call = new Call($channel, $method, Timeval::infFuture());
     $this->deserialize = $deserialize;
     $this->metadata = null;
   }
diff --git a/src/php/lib/Grpc/BidiStreamingCall.php b/src/php/lib/Grpc/BidiStreamingCall.php
index 2afceaf..76c642b 100644
--- a/src/php/lib/Grpc/BidiStreamingCall.php
+++ b/src/php/lib/Grpc/BidiStreamingCall.php
@@ -43,7 +43,7 @@
    * @param array $metadata Metadata to send with the call, if applicable
    */
   public function start($metadata) {
-    $this->call->start_batch([OP_SEND_INITIAL_METADATA => $metadata]);
+    $this->call->startBatch([OP_SEND_INITIAL_METADATA => $metadata]);
   }
 
   /**
@@ -55,7 +55,7 @@
     if ($this->metadata === null) {
       $batch[OP_RECV_INITIAL_METADATA] = true;
     }
-    $read_event = $this->call->start_batch($batch);
+    $read_event = $this->call->startBatch($batch);
     if ($this->metadata === null) {
       $this->metadata = $read_event->metadata;
     }
@@ -68,14 +68,14 @@
    * @param ByteBuffer $data The data to write
    */
   public function write($data) {
-    $this->call->start_batch([OP_SEND_MESSAGE => $data->serialize()]);
+    $this->call->startBatch([OP_SEND_MESSAGE => $data->serialize()]);
   }
 
   /**
    * Indicate that no more writes will be sent.
    */
   public function writesDone() {
-    $this->call->start_batch([OP_SEND_CLOSE_FROM_CLIENT => true]);
+    $this->call->startBatch([OP_SEND_CLOSE_FROM_CLIENT => true]);
   }
 
   /**
@@ -84,7 +84,7 @@
    *     and array $metadata members
    */
   public function getStatus() {
-    $status_event = $this->call->start_batch([
+    $status_event = $this->call->startBatch([
         OP_RECV_STATUS_ON_CLIENT => true
                                               ]);
     return $status_event->status;
diff --git a/src/php/lib/Grpc/ClientStreamingCall.php b/src/php/lib/Grpc/ClientStreamingCall.php
index ec585da..61439d3 100644
--- a/src/php/lib/Grpc/ClientStreamingCall.php
+++ b/src/php/lib/Grpc/ClientStreamingCall.php
@@ -44,11 +44,11 @@
    * @param array $metadata Metadata to send with the call, if applicable
    */
   public function start($arg_iter, $metadata = array()) {
-    $event = $this->call->start_batch([OP_SEND_INITIAL_METADATA => $metadata]);
+    $event = $this->call->startBatch([OP_SEND_INITIAL_METADATA => $metadata]);
     foreach($arg_iter as $arg) {
-      $this->call->start_batch([OP_SEND_MESSAGE => $arg->serialize()]);
+      $this->call->startBatch([OP_SEND_MESSAGE => $arg->serialize()]);
     }
-    $this->call->start_batch([OP_SEND_CLOSE_FROM_CLIENT => true]);
+    $this->call->startBatch([OP_SEND_CLOSE_FROM_CLIENT => true]);
   }
 
   /**
@@ -56,7 +56,7 @@
    * @return [response data, status]
    */
   public function wait() {
-    $event = $this->call->start_batch([
+    $event = $this->call->startBatch([
         OP_RECV_INITIAL_METADATA => true,
         OP_RECV_MESSAGE => true,
         OP_RECV_STATUS_ON_CLIENT => true]);
diff --git a/src/php/lib/Grpc/ServerStreamingCall.php b/src/php/lib/Grpc/ServerStreamingCall.php
index 574c1bb..631c863 100644
--- a/src/php/lib/Grpc/ServerStreamingCall.php
+++ b/src/php/lib/Grpc/ServerStreamingCall.php
@@ -44,7 +44,7 @@
    * @param array $metadata Metadata to send with the call, if applicable
    */
   public function start($arg, $metadata = array()) {
-    $event = $this->call->start_batch([
+    $event = $this->call->startBatch([
         OP_SEND_INITIAL_METADATA => $metadata,
         OP_RECV_INITIAL_METADATA => true,
         OP_SEND_MESSAGE => $arg->serialize(),
@@ -56,10 +56,10 @@
    * @return An iterator of response values
    */
   public function responses() {
-    $response = $this->call->start_batch([OP_RECV_MESSAGE => true])->message;
+    $response = $this->call->startBatch([OP_RECV_MESSAGE => true])->message;
     while($response !== null) {
       yield $this->deserializeResponse($response);
-      $response = $this->call->start_batch([OP_RECV_MESSAGE => true])->message;
+      $response = $this->call->startBatch([OP_RECV_MESSAGE => true])->message;
     }
   }
 
@@ -69,7 +69,7 @@
    *     and array $metadata members
    */
   public function getStatus() {
-    $status_event = $this->call->start_batch([
+    $status_event = $this->call->startBatch([
         OP_RECV_STATUS_ON_CLIENT => true
                                               ]);
     return $status_event->status;
diff --git a/src/php/lib/Grpc/UnaryCall.php b/src/php/lib/Grpc/UnaryCall.php
index 814d477..97a10a4 100644
--- a/src/php/lib/Grpc/UnaryCall.php
+++ b/src/php/lib/Grpc/UnaryCall.php
@@ -44,7 +44,7 @@
    * @param array $metadata Metadata to send with the call, if applicable
    */
   public function start($arg, $metadata = array()) {
-    $event = $this->call->start_batch([
+    $event = $this->call->startBatch([
         OP_SEND_INITIAL_METADATA => $metadata,
         OP_RECV_INITIAL_METADATA => true,
         OP_SEND_MESSAGE => $arg->serialize(),
@@ -57,7 +57,7 @@
    * @return [response data, status]
    */
   public function wait() {
-    $event = $this->call->start_batch([
+    $event = $this->call->startBatch([
         OP_RECV_MESSAGE => true,
         OP_RECV_STATUS_ON_CLIENT => true]);
     return array($this->deserializeResponse($event->message), $event->status);
diff --git a/src/php/tests/generated_code/GeneratedCodeTest.php b/src/php/tests/generated_code/GeneratedCodeTest.php
index afd7f21..927d24c 100755
--- a/src/php/tests/generated_code/GeneratedCodeTest.php
+++ b/src/php/tests/generated_code/GeneratedCodeTest.php
@@ -41,7 +41,8 @@
   protected static $client;
   protected static $timeout;
   public static function setUpBeforeClass() {
-    self::$client = new math\MathClient(getenv('GRPC_TEST_HOST'));
+    self::$client = new math\MathClient(new Grpc\BaseStub(
+        getenv('GRPC_TEST_HOST'), []));
   }
 
   public function testSimpleRequest() {
diff --git a/src/php/tests/unit_tests/CallTest.php b/src/php/tests/unit_tests/CallTest.php
index d361ce0..77a2d86 100755
--- a/src/php/tests/unit_tests/CallTest.php
+++ b/src/php/tests/unit_tests/CallTest.php
@@ -37,21 +37,21 @@
 
   public static function setUpBeforeClass() {
     self::$server = new Grpc\Server([]);
-    self::$port = self::$server->add_http2_port('0.0.0.0:0');
+    self::$port = self::$server->addHttp2Port('0.0.0.0:0');
   }
 
   public function setUp() {
     $this->channel = new Grpc\Channel('localhost:' . self::$port, []);
     $this->call = new Grpc\Call($this->channel,
                                 '/foo',
-                                Grpc\Timeval::inf_future());
+                                Grpc\Timeval::infFuture());
   }
 
   public function testAddEmptyMetadata() {
     $batch = [
         Grpc\OP_SEND_INITIAL_METADATA => []
               ];
-    $result = $this->call->start_batch($batch);
+    $result = $this->call->startBatch($batch);
     $this->assertTrue($result->send_metadata);
   }
 
@@ -59,7 +59,7 @@
     $batch = [
         Grpc\OP_SEND_INITIAL_METADATA => ['key' => ['value']]
               ];
-    $result = $this->call->start_batch($batch);
+    $result = $this->call->startBatch($batch);
     $this->assertTrue($result->send_metadata);
   }
 
@@ -67,7 +67,7 @@
     $batch = [
         Grpc\OP_SEND_INITIAL_METADATA => ['key' => ['value1', 'value2']]
               ];
-    $result = $this->call->start_batch($batch);
+    $result = $this->call->startBatch($batch);
     $this->assertTrue($result->send_metadata);
   }
 
@@ -76,7 +76,7 @@
         Grpc\OP_SEND_INITIAL_METADATA => ['key1' => ['value1'],
                                           'key2' => ['value2', 'value3']]
               ];
-    $result = $this->call->start_batch($batch);
+    $result = $this->call->startBatch($batch);
     $this->assertTrue($result->send_metadata);
   }
 }
diff --git a/src/php/tests/unit_tests/EndToEndTest.php b/src/php/tests/unit_tests/EndToEndTest.php
index 3e165b7..296873f 100755
--- a/src/php/tests/unit_tests/EndToEndTest.php
+++ b/src/php/tests/unit_tests/EndToEndTest.php
@@ -34,7 +34,7 @@
 class EndToEndTest extends PHPUnit_Framework_TestCase{
   public function setUp() {
     $this->server = new Grpc\Server([]);
-    $port = $this->server->add_http2_port('0.0.0.0:0');
+    $port = $this->server->addHttp2Port('0.0.0.0:0');
     $this->channel = new Grpc\Channel('localhost:' . $port, []);
     $this->server->start();
   }
@@ -45,13 +45,13 @@
   }
 
   public function testSimpleRequestBody() {
-    $deadline = Grpc\Timeval::inf_future();
+    $deadline = Grpc\Timeval::infFuture();
     $status_text = 'xyz';
     $call = new Grpc\Call($this->channel,
                           'dummy_method',
                           $deadline);
 
-    $event = $call->start_batch([
+    $event = $call->startBatch([
         Grpc\OP_SEND_INITIAL_METADATA => [],
         Grpc\OP_SEND_CLOSE_FROM_CLIENT => true
                                        ]);
@@ -59,12 +59,12 @@
     $this->assertTrue($event->send_metadata);
     $this->assertTrue($event->send_close);
 
-    $event = $this->server->request_call();
+    $event = $this->server->requestCall();
     $this->assertSame('dummy_method', $event->method);
     $this->assertSame([], $event->metadata);
     $server_call = $event->call;
 
-    $event = $server_call->start_batch([
+    $event = $server_call->startBatch([
         Grpc\OP_SEND_INITIAL_METADATA => [],
         Grpc\OP_SEND_STATUS_FROM_SERVER => [
             'metadata' => [],
@@ -78,7 +78,7 @@
     $this->assertTrue($event->send_status);
     $this->assertFalse($event->cancelled);
 
-    $event = $call->start_batch([
+    $event = $call->startBatch([
         Grpc\OP_RECV_INITIAL_METADATA => true,
         Grpc\OP_RECV_STATUS_ON_CLIENT => true
                                  ]);
@@ -94,7 +94,7 @@
   }
 
   public function testClientServerFullRequestResponse() {
-    $deadline = Grpc\Timeval::inf_future();
+    $deadline = Grpc\Timeval::infFuture();
     $req_text = 'client_server_full_request_response';
     $reply_text = 'reply:client_server_full_request_response';
     $status_text = 'status:client_server_full_response_text';
@@ -103,7 +103,7 @@
                           'dummy_method',
                           $deadline);
 
-    $event = $call->start_batch([
+    $event = $call->startBatch([
         Grpc\OP_SEND_INITIAL_METADATA => [],
         Grpc\OP_SEND_CLOSE_FROM_CLIENT => true,
         Grpc\OP_SEND_MESSAGE => $req_text
@@ -113,11 +113,11 @@
     $this->assertTrue($event->send_close);
     $this->assertTrue($event->send_message);
 
-    $event = $this->server->request_call();
+    $event = $this->server->requestCall();
     $this->assertSame('dummy_method', $event->method);
     $server_call = $event->call;
 
-    $event = $server_call->start_batch([
+    $event = $server_call->startBatch([
         Grpc\OP_SEND_INITIAL_METADATA => [],
         Grpc\OP_SEND_MESSAGE => $reply_text,
         Grpc\OP_SEND_STATUS_FROM_SERVER => [
@@ -135,7 +135,7 @@
     $this->assertFalse($event->cancelled);
     $this->assertSame($req_text, $event->message);
 
-    $event = $call->start_batch([
+    $event = $call->startBatch([
         Grpc\OP_RECV_INITIAL_METADATA => true,
         Grpc\OP_RECV_MESSAGE => true,
         Grpc\OP_RECV_STATUS_ON_CLIENT => true,
diff --git a/src/php/tests/unit_tests/SecureEndToEndTest.php b/src/php/tests/unit_tests/SecureEndToEndTest.php
index 2d62fe9..0c18cd3 100755
--- a/src/php/tests/unit_tests/SecureEndToEndTest.php
+++ b/src/php/tests/unit_tests/SecureEndToEndTest.php
@@ -40,8 +40,8 @@
         file_get_contents(dirname(__FILE__) . '/../data/server1.key'),
         file_get_contents(dirname(__FILE__) . '/../data/server1.pem'));
     $this->server = new Grpc\Server();
-    $port = $this->server->add_secure_http2_port('0.0.0.0:0',
-                                                 $server_credentials);
+    $port = $this->server->addSecureHttp2Port('0.0.0.0:0',
+                                              $server_credentials);
     $this->server->start();
     $this->channel = new Grpc\Channel(
         'localhost:' . $port,
@@ -57,13 +57,13 @@
   }
 
   public function testSimpleRequestBody() {
-    $deadline = Grpc\Timeval::inf_future();
+    $deadline = Grpc\Timeval::infFuture();
     $status_text = 'xyz';
     $call = new Grpc\Call($this->channel,
                           'dummy_method',
                           $deadline);
 
-    $event = $call->start_batch([
+    $event = $call->startBatch([
         Grpc\OP_SEND_INITIAL_METADATA => [],
         Grpc\OP_SEND_CLOSE_FROM_CLIENT => true
                                        ]);
@@ -71,12 +71,12 @@
     $this->assertTrue($event->send_metadata);
     $this->assertTrue($event->send_close);
 
-    $event = $this->server->request_call();
+    $event = $this->server->requestCall();
     $this->assertSame('dummy_method', $event->method);
     $this->assertSame([], $event->metadata);
     $server_call = $event->call;
 
-    $event = $server_call->start_batch([
+    $event = $server_call->startBatch([
         Grpc\OP_SEND_INITIAL_METADATA => [],
         Grpc\OP_SEND_STATUS_FROM_SERVER => [
             'metadata' => [],
@@ -90,7 +90,7 @@
     $this->assertTrue($event->send_status);
     $this->assertFalse($event->cancelled);
 
-    $event = $call->start_batch([
+    $event = $call->startBatch([
         Grpc\OP_RECV_INITIAL_METADATA => true,
         Grpc\OP_RECV_STATUS_ON_CLIENT => true
                                  ]);
@@ -106,7 +106,7 @@
   }
 
   public function testClientServerFullRequestResponse() {
-    $deadline = Grpc\Timeval::inf_future();
+    $deadline = Grpc\Timeval::infFuture();
     $req_text = 'client_server_full_request_response';
     $reply_text = 'reply:client_server_full_request_response';
     $status_text = 'status:client_server_full_response_text';
@@ -115,7 +115,7 @@
                           'dummy_method',
                           $deadline);
 
-    $event = $call->start_batch([
+    $event = $call->startBatch([
         Grpc\OP_SEND_INITIAL_METADATA => [],
         Grpc\OP_SEND_CLOSE_FROM_CLIENT => true,
         Grpc\OP_SEND_MESSAGE => $req_text
@@ -125,11 +125,11 @@
     $this->assertTrue($event->send_close);
     $this->assertTrue($event->send_message);
 
-    $event = $this->server->request_call();
+    $event = $this->server->requestCall();
     $this->assertSame('dummy_method', $event->method);
     $server_call = $event->call;
 
-    $event = $server_call->start_batch([
+    $event = $server_call->startBatch([
         Grpc\OP_SEND_INITIAL_METADATA => [],
         Grpc\OP_SEND_MESSAGE => $reply_text,
         Grpc\OP_SEND_STATUS_FROM_SERVER => [
@@ -147,7 +147,7 @@
     $this->assertFalse($event->cancelled);
     $this->assertSame($req_text, $event->message);
 
-    $event = $call->start_batch([
+    $event = $call->startBatch([
         Grpc\OP_RECV_INITIAL_METADATA => true,
         Grpc\OP_RECV_MESSAGE => true,
         Grpc\OP_RECV_STATUS_ON_CLIENT => true,
diff --git a/src/php/tests/unit_tests/TimevalTest.php b/src/php/tests/unit_tests/TimevalTest.php
index d20069a..a8bfcf0 100755
--- a/src/php/tests/unit_tests/TimevalTest.php
+++ b/src/php/tests/unit_tests/TimevalTest.php
@@ -39,14 +39,14 @@
 
   public function testPastIsLessThanZero() {
     $zero = Grpc\Timeval::zero();
-    $past = Grpc\Timeval::inf_past();
+    $past = Grpc\Timeval::infPast();
     $this->assertLessThan(0, Grpc\Timeval::compare($past, $zero));
     $this->assertGreaterThan(0, Grpc\Timeval::compare($zero, $past));
   }
 
   public function testFutureIsGreaterThanZero() {
     $zero = Grpc\Timeval::zero();
-    $future = Grpc\Timeval::inf_future();
+    $future = Grpc\Timeval::infFuture();
     $this->assertLessThan(0, Grpc\Timeval::compare($zero, $future));
     $this->assertGreaterThan(0, Grpc\Timeval::compare($future, $zero));
   }
@@ -56,7 +56,7 @@
    */
   public function testNowIsBetweenZeroAndFuture() {
     $zero = Grpc\Timeval::zero();
-    $future = Grpc\Timeval::inf_future();
+    $future = Grpc\Timeval::infFuture();
     $now = Grpc\Timeval::now();
     $this->assertLessThan(0, Grpc\Timeval::compare($zero, $now));
     $this->assertLessThan(0, Grpc\Timeval::compare($now, $future));
diff --git a/src/python/interop/interop/empty_pb2.py b/src/python/interop/interop/empty_pb2.py
index 732a358..8c1ce2f 100644
--- a/src/python/interop/interop/empty_pb2.py
+++ b/src/python/interop/interop/empty_pb2.py
@@ -57,6 +57,7 @@
 _sym_db.RegisterMessage(Empty)
 
 
-from grpc.framework.face import demonstration as _face_testing
-from grpc.framework.face import interfaces as _face_interfaces
+import abc
+from grpc.early_adopter import implementations
+from grpc.framework.alpha import utilities
 # @@protoc_insertion_point(module_scope)
diff --git a/src/python/interop/interop/messages_pb2.py b/src/python/interop/interop/messages_pb2.py
index d449a99..0bf3d86 100644
--- a/src/python/interop/interop/messages_pb2.py
+++ b/src/python/interop/interop/messages_pb2.py
@@ -441,6 +441,7 @@
 _sym_db.RegisterMessage(StreamingOutputCallResponse)
 
 
-from grpc.framework.face import demonstration as _face_testing
-from grpc.framework.face import interfaces as _face_interfaces
+import abc
+from grpc.early_adopter import implementations
+from grpc.framework.alpha import utilities
 # @@protoc_insertion_point(module_scope)
diff --git a/src/python/interop/interop/test_pb2.py b/src/python/interop/interop/test_pb2.py
index e860946..71325d5 100644
--- a/src/python/interop/interop/test_pb2.py
+++ b/src/python/interop/interop/test_pb2.py
@@ -29,121 +29,150 @@
 
 
 
-from grpc.framework.face import demonstration as _face_testing
-from grpc.framework.face import interfaces as _face_interfaces
-class TestServiceService(object):
+import abc
+from grpc.early_adopter import implementations
+from grpc.framework.alpha import utilities
+class EarlyAdopterTestServiceServicer(object):
   """<fill me in later!>"""
-  def __init__(self):
-    pass
-class TestServiceServicer(object):
+  __metaclass__ = abc.ABCMeta
+  @abc.abstractmethod
+  def EmptyCall(self, request, context):
+    raise NotImplementedError()
+  @abc.abstractmethod
+  def UnaryCall(self, request, context):
+    raise NotImplementedError()
+  @abc.abstractmethod
+  def StreamingOutputCall(self, request, context):
+    raise NotImplementedError()
+  @abc.abstractmethod
+  def StreamingInputCall(self, request_iterator, context):
+    raise NotImplementedError()
+  @abc.abstractmethod
+  def FullDuplexCall(self, request_iterator, context):
+    raise NotImplementedError()
+  @abc.abstractmethod
+  def HalfDuplexCall(self, request_iterator, context):
+    raise NotImplementedError()
+class EarlyAdopterTestServiceServer(object):
   """<fill me in later!>"""
-  def EmptyCall(self, arg):
+  __metaclass__ = abc.ABCMeta
+  @abc.abstractmethod
+  def start(self):
     raise NotImplementedError()
-  def UnaryCall(self, arg):
+  @abc.abstractmethod
+  def stop(self):
     raise NotImplementedError()
-  def StreamingOutputCall(self, arg):
-    raise NotImplementedError()
-  def StreamingInputCall(self, arg):
-    raise NotImplementedError()
-  def FullDuplexCall(self, arg):
-    raise NotImplementedError()
-  def HalfDuplexCall(self, arg):
-    raise NotImplementedError()
-class TestServiceStub(object):
+class EarlyAdopterTestServiceStub(object):
   """<fill me in later!>"""
-  def EmptyCall(self, arg):
+  __metaclass__ = abc.ABCMeta
+  @abc.abstractmethod
+  def EmptyCall(self, request):
     raise NotImplementedError()
   EmptyCall.async = None
-  def UnaryCall(self, arg):
+  @abc.abstractmethod
+  def UnaryCall(self, request):
     raise NotImplementedError()
   UnaryCall.async = None
-  def StreamingOutputCall(self, arg):
+  @abc.abstractmethod
+  def StreamingOutputCall(self, request):
     raise NotImplementedError()
   StreamingOutputCall.async = None
-  def StreamingInputCall(self, arg):
+  @abc.abstractmethod
+  def StreamingInputCall(self, request_iterator):
     raise NotImplementedError()
   StreamingInputCall.async = None
-  def FullDuplexCall(self, arg):
+  @abc.abstractmethod
+  def FullDuplexCall(self, request_iterator):
     raise NotImplementedError()
   FullDuplexCall.async = None
-  def HalfDuplexCall(self, arg):
+  @abc.abstractmethod
+  def HalfDuplexCall(self, request_iterator):
     raise NotImplementedError()
   HalfDuplexCall.async = None
-class _TestServiceStub(TestServiceStub):
-  def __init__(self, face_stub, default_timeout):
-    self._face_stub = face_stub
-    self._default_timeout = default_timeout
-    stub_self = self
-    class EmptyCall(object):
-      def __call__(self, arg):
-        return stub_self._face_stub.blocking_value_in_value_out("EmptyCall", arg, stub_self._default_timeout)
-      def async(self, arg):
-        return stub_self._face_stub.future_value_in_value_out("EmptyCall", arg, stub_self._default_timeout)
-    self.EmptyCall = EmptyCall()
-    class UnaryCall(object):
-      def __call__(self, arg):
-        return stub_self._face_stub.blocking_value_in_value_out("UnaryCall", arg, stub_self._default_timeout)
-      def async(self, arg):
-        return stub_self._face_stub.future_value_in_value_out("UnaryCall", arg, stub_self._default_timeout)
-    self.UnaryCall = UnaryCall()
-    class StreamingOutputCall(object):
-      def __call__(self, arg):
-        return stub_self._face_stub.inline_value_in_stream_out("StreamingOutputCall", arg, stub_self._default_timeout)
-      def async(self, arg):
-        return stub_self._face_stub.inline_value_in_stream_out("StreamingOutputCall", arg, stub_self._default_timeout)
-    self.StreamingOutputCall = StreamingOutputCall()
-    class StreamingInputCall(object):
-      def __call__(self, arg):
-        return stub_self._face_stub.blocking_stream_in_value_out("StreamingInputCall", arg, stub_self._default_timeout)
-      def async(self, arg):
-        return stub_self._face_stub.future_stream_in_value_out("StreamingInputCall", arg, stub_self._default_timeout)
-    self.StreamingInputCall = StreamingInputCall()
-    class FullDuplexCall(object):
-      def __call__(self, arg):
-        return stub_self._face_stub.inline_stream_in_stream_out("FullDuplexCall", arg, stub_self._default_timeout)
-      def async(self, arg):
-        return stub_self._face_stub.inline_stream_in_stream_out("FullDuplexCall", arg, stub_self._default_timeout)
-    self.FullDuplexCall = FullDuplexCall()
-    class HalfDuplexCall(object):
-      def __call__(self, arg):
-        return stub_self._face_stub.inline_stream_in_stream_out("HalfDuplexCall", arg, stub_self._default_timeout)
-      def async(self, arg):
-        return stub_self._face_stub.inline_stream_in_stream_out("HalfDuplexCall", arg, stub_self._default_timeout)
-    self.HalfDuplexCall = HalfDuplexCall()
-def mock_TestService(servicer, default_timeout):
-  value_in_value_out = {}
-  value_in_stream_out = {}
-  stream_in_value_out = {}
-  stream_in_stream_out = {}
-  class EmptyCall(_face_interfaces.InlineValueInValueOutMethod):
-    def service(self, request, context):
-      return servicer.EmptyCall(request)
-  value_in_value_out['EmptyCall'] = EmptyCall()
-  class UnaryCall(_face_interfaces.InlineValueInValueOutMethod):
-    def service(self, request, context):
-      return servicer.UnaryCall(request)
-  value_in_value_out['UnaryCall'] = UnaryCall()
-  class StreamingOutputCall(_face_interfaces.InlineValueInStreamOutMethod):
-    def service(self, request, context):
-      return servicer.StreamingOutputCall(request)
-  value_in_stream_out['StreamingOutputCall'] = StreamingOutputCall()
-  class StreamingInputCall(_face_interfaces.InlineStreamInValueOutMethod):
-    def service(self, request, context):
-      return servicer.StreamingInputCall(request)
-  stream_in_value_out['StreamingInputCall'] = StreamingInputCall()
-  class FullDuplexCall(_face_interfaces.InlineStreamInStreamOutMethod):
-    def service(self, request, context):
-      return servicer.FullDuplexCall(request)
-  stream_in_stream_out['FullDuplexCall'] = FullDuplexCall()
-  class HalfDuplexCall(_face_interfaces.InlineStreamInStreamOutMethod):
-    def service(self, request, context):
-      return servicer.HalfDuplexCall(request)
-  stream_in_stream_out['HalfDuplexCall'] = HalfDuplexCall()
-  face_linked_pair = _face_testing.server_and_stub(default_timeout,inline_value_in_value_out_methods=value_in_value_out,inline_value_in_stream_out_methods=value_in_stream_out,inline_stream_in_value_out_methods=stream_in_value_out,inline_stream_in_stream_out_methods=stream_in_stream_out)
-  class LinkedPair(object):
-    def __init__(self, server, stub):
-      self.server = server
-      self.stub = stub
-  stub = _TestServiceStub(face_linked_pair.stub, default_timeout)
-  return LinkedPair(None, stub)
+def early_adopter_create_TestService_server(servicer, port, private_key=None, certificate_chain=None):
+  import test.cpp.interop.empty_pb2
+  import test.cpp.interop.empty_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  method_service_descriptions = {
+    "EmptyCall": utilities.unary_unary_service_description(
+      servicer.EmptyCall,
+      test.cpp.interop.empty_pb2.Empty.FromString,
+      test.cpp.interop.empty_pb2.Empty.SerializeToString,
+    ),
+    "FullDuplexCall": utilities.stream_stream_service_description(
+      servicer.FullDuplexCall,
+      test.cpp.interop.messages_pb2.StreamingOutputCallRequest.FromString,
+      test.cpp.interop.messages_pb2.StreamingOutputCallResponse.SerializeToString,
+    ),
+    "HalfDuplexCall": utilities.stream_stream_service_description(
+      servicer.HalfDuplexCall,
+      test.cpp.interop.messages_pb2.StreamingOutputCallRequest.FromString,
+      test.cpp.interop.messages_pb2.StreamingOutputCallResponse.SerializeToString,
+    ),
+    "StreamingInputCall": utilities.stream_unary_service_description(
+      servicer.StreamingInputCall,
+      test.cpp.interop.messages_pb2.StreamingInputCallRequest.FromString,
+      test.cpp.interop.messages_pb2.StreamingInputCallResponse.SerializeToString,
+    ),
+    "StreamingOutputCall": utilities.unary_stream_service_description(
+      servicer.StreamingOutputCall,
+      test.cpp.interop.messages_pb2.StreamingOutputCallRequest.FromString,
+      test.cpp.interop.messages_pb2.StreamingOutputCallResponse.SerializeToString,
+    ),
+    "UnaryCall": utilities.unary_unary_service_description(
+      servicer.UnaryCall,
+      test.cpp.interop.messages_pb2.SimpleRequest.FromString,
+      test.cpp.interop.messages_pb2.SimpleResponse.SerializeToString,
+    ),
+  }
+  return implementations.server("grpc.testing.TestService", method_service_descriptions, port, private_key=private_key, certificate_chain=certificate_chain)
+def early_adopter_create_TestService_stub(host, port, metadata_transformer=None, secure=False, root_certificates=None, private_key=None, certificate_chain=None, server_host_override=None):
+  import test.cpp.interop.empty_pb2
+  import test.cpp.interop.empty_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  import test.cpp.interop.messages_pb2
+  method_invocation_descriptions = {
+    "EmptyCall": utilities.unary_unary_invocation_description(
+      test.cpp.interop.empty_pb2.Empty.SerializeToString,
+      test.cpp.interop.empty_pb2.Empty.FromString,
+    ),
+    "FullDuplexCall": utilities.stream_stream_invocation_description(
+      test.cpp.interop.messages_pb2.StreamingOutputCallRequest.SerializeToString,
+      test.cpp.interop.messages_pb2.StreamingOutputCallResponse.FromString,
+    ),
+    "HalfDuplexCall": utilities.stream_stream_invocation_description(
+      test.cpp.interop.messages_pb2.StreamingOutputCallRequest.SerializeToString,
+      test.cpp.interop.messages_pb2.StreamingOutputCallResponse.FromString,
+    ),
+    "StreamingInputCall": utilities.stream_unary_invocation_description(
+      test.cpp.interop.messages_pb2.StreamingInputCallRequest.SerializeToString,
+      test.cpp.interop.messages_pb2.StreamingInputCallResponse.FromString,
+    ),
+    "StreamingOutputCall": utilities.unary_stream_invocation_description(
+      test.cpp.interop.messages_pb2.StreamingOutputCallRequest.SerializeToString,
+      test.cpp.interop.messages_pb2.StreamingOutputCallResponse.FromString,
+    ),
+    "UnaryCall": utilities.unary_unary_invocation_description(
+      test.cpp.interop.messages_pb2.SimpleRequest.SerializeToString,
+      test.cpp.interop.messages_pb2.SimpleResponse.FromString,
+    ),
+  }
+  return implementations.stub("grpc.testing.TestService", method_invocation_descriptions, host, port, metadata_transformer=metadata_transformer, secure=secure, root_certificates=root_certificates, private_key=private_key, certificate_chain=certificate_chain, server_host_override=server_host_override)
 # @@protoc_insertion_point(module_scope)
diff --git a/src/python/src/grpc/_adapter/_call.c b/src/python/src/grpc/_adapter/_call.c
index f837267..bf96c1a 100644
--- a/src/python/src/grpc/_adapter/_call.c
+++ b/src/python/src/grpc/_adapter/_call.c
@@ -164,10 +164,10 @@
   const char* key = NULL;
   const char* value = NULL;
   int value_length = 0;
+  grpc_metadata metadata;
   if (!PyArg_ParseTuple(args, "ss#", &key, &value, &value_length)) {
     return NULL;
   }
-  grpc_metadata metadata;
   metadata.key = key;
   metadata.value = value;
   metadata.value_length = value_length;
diff --git a/src/python/src/grpc/_adapter/_call.h b/src/python/src/grpc/_adapter/_call.h
index fabc6f3..c04a228 100644
--- a/src/python/src/grpc/_adapter/_call.h
+++ b/src/python/src/grpc/_adapter/_call.h
@@ -38,7 +38,7 @@
 #include <grpc/grpc.h>
 
 typedef struct {
-  PyObject_HEAD;
+  PyObject_HEAD
   grpc_call *c_call;
 } Call;
 
diff --git a/src/python/src/grpc/_adapter/_channel.h b/src/python/src/grpc/_adapter/_channel.h
index 303b675..afc0f80 100644
--- a/src/python/src/grpc/_adapter/_channel.h
+++ b/src/python/src/grpc/_adapter/_channel.h
@@ -38,7 +38,7 @@
 #include <grpc/grpc.h>
 
 typedef struct {
-  PyObject_HEAD;
+  PyObject_HEAD
   grpc_channel *c_channel;
 } Channel;
 
diff --git a/src/python/src/grpc/_adapter/_client_credentials.h b/src/python/src/grpc/_adapter/_client_credentials.h
index 47476ce..bb9f7f0 100644
--- a/src/python/src/grpc/_adapter/_client_credentials.h
+++ b/src/python/src/grpc/_adapter/_client_credentials.h
@@ -38,7 +38,7 @@
 #include <grpc/grpc_security.h>
 
 typedef struct {
-  PyObject_HEAD;
+  PyObject_HEAD
   grpc_credentials *c_client_credentials;
 } ClientCredentials;
 
diff --git a/src/python/src/grpc/_adapter/_completion_queue.c b/src/python/src/grpc/_adapter/_completion_queue.c
index 76d6b6c..a639eff 100644
--- a/src/python/src/grpc/_adapter/_completion_queue.c
+++ b/src/python/src/grpc/_adapter/_completion_queue.c
@@ -124,7 +124,7 @@
     PyObject *key = PyString_FromString(elem.key);
     PyObject *value = PyString_FromStringAndSize(elem.value, elem.value_length);
     PyObject* kvp = PyTuple_Pack(2, key, value);
-    // n.b. PyList_SetItem *steals* a reference to the set element.
+    /* n.b. PyList_SetItem *steals* a reference to the set element. */
     PyList_SetItem(metadata, i, kvp);
     Py_DECREF(key);
     Py_DECREF(value);
@@ -266,6 +266,7 @@
   PyObject *details;
   PyObject *status;
   PyObject *event_args;
+  PyObject *metadata;
 
   code = pygrpc_status_code(c_event->data.finished.status);
   if (code == NULL) {
@@ -285,7 +286,7 @@
   if (status == NULL) {
     return NULL;
   }
-  PyObject* metadata = pygrpc_metadata_collection_get(
+  metadata = pygrpc_metadata_collection_get(
       c_event->data.finished.metadata_elements,
       c_event->data.finished.metadata_count);
   event_args = PyTuple_Pack(8, finish_event_kind, (PyObject *)c_event->tag,
diff --git a/src/python/src/grpc/_adapter/_completion_queue.h b/src/python/src/grpc/_adapter/_completion_queue.h
index 3a39476..9b377d1 100644
--- a/src/python/src/grpc/_adapter/_completion_queue.h
+++ b/src/python/src/grpc/_adapter/_completion_queue.h
@@ -38,7 +38,7 @@
 #include <grpc/grpc.h>
 
 typedef struct {
-  PyObject_HEAD;
+  PyObject_HEAD
   grpc_completion_queue *c_completion_queue;
 } CompletionQueue;
 
diff --git a/src/python/src/grpc/_adapter/_links_test.py b/src/python/src/grpc/_adapter/_links_test.py
index cfdcc2c..4987be3 100644
--- a/src/python/src/grpc/_adapter/_links_test.py
+++ b/src/python/src/grpc/_adapter/_links_test.py
@@ -43,6 +43,14 @@
 _TIMEOUT = 2
 
 
+# TODO(nathaniel): End-to-end metadata testing.
+def _transform_metadata(unused_metadata):
+  return (
+      ('one unused key', 'one unused value'),
+      ('another unused key', 'another unused value'),
+)
+
+
 class RoundTripTest(unittest.TestCase):
 
   def setUp(self):
@@ -76,7 +84,8 @@
 
     rear_link = rear.RearLink(
         'localhost', port, self.rear_link_pool, {test_method: None},
-        {test_method: None}, False, None, None, None)
+        {test_method: None}, False, None, None, None,
+        metadata_transformer=_transform_metadata)
     rear_link.join_fore_link(test_fore_link)
     test_fore_link.join_rear_link(rear_link)
     rear_link.start()
diff --git a/src/python/src/grpc/_adapter/_server.h b/src/python/src/grpc/_adapter/_server.h
index 4248712..4836bb6 100644
--- a/src/python/src/grpc/_adapter/_server.h
+++ b/src/python/src/grpc/_adapter/_server.h
@@ -38,7 +38,7 @@
 #include <grpc/grpc.h>
 
 typedef struct {
-  PyObject_HEAD;
+  PyObject_HEAD
   grpc_server *c_server;
 } Server;
 
diff --git a/src/python/src/grpc/_adapter/_server_credentials.h b/src/python/src/grpc/_adapter/_server_credentials.h
index bb6ff2c..6090404 100644
--- a/src/python/src/grpc/_adapter/_server_credentials.h
+++ b/src/python/src/grpc/_adapter/_server_credentials.h
@@ -38,7 +38,7 @@
 #include <grpc/grpc_security.h>
 
 typedef struct {
-  PyObject_HEAD;
+  PyObject_HEAD
   grpc_server_credentials *c_server_credentials;
 } ServerCredentials;
 
diff --git a/src/python/src/grpc/_adapter/rear.py b/src/python/src/grpc/_adapter/rear.py
index f19321c..2b93aa6 100644
--- a/src/python/src/grpc/_adapter/rear.py
+++ b/src/python/src/grpc/_adapter/rear.py
@@ -93,7 +93,7 @@
   def __init__(
       self, host, port, pool, request_serializers, response_deserializers,
       secure, root_certificates, private_key, certificate_chain,
-      server_host_override=None):
+      metadata_transformer=None, server_host_override=None):
     """Constructor.
 
     Args:
@@ -111,6 +111,9 @@
         key should be used.
       certificate_chain: The PEM-encoded certificate chain to use or None if
         no certificate chain should be used.
+      metadata_transformer: A function that given a metadata object produces
+        another metadata to be used in the underlying communication on the
+        wire.
       server_host_override: (For testing only) the target name used for SSL
         host name checking.
     """
@@ -134,6 +137,7 @@
     self._root_certificates = root_certificates
     self._private_key = private_key
     self._certificate_chain = certificate_chain
+    self._metadata_transformer = metadata_transformer
     self._server_host_override = server_host_override
 
   def _on_write_event(self, operation_id, event, rpc_state):
@@ -243,6 +247,10 @@
     """
     request_serializer = self._request_serializers[name]
     call = _low.Call(self._channel, name, self._host, time.time() + timeout)
+    if self._metadata_transformer is not None:
+      metadata = self._metadata_transformer([])
+      for metadata_key, metadata_value in metadata:
+        call.add_metadata(metadata_key, metadata_value)
     call.invoke(self._completion_queue, operation_id, operation_id)
     outstanding = set(_INVOCATION_EVENT_KINDS)
 
diff --git a/src/python/src/grpc/early_adopter/implementations.py b/src/python/src/grpc/early_adopter/implementations.py
index 7d3d29f..35456d3 100644
--- a/src/python/src/grpc/early_adopter/implementations.py
+++ b/src/python/src/grpc/early_adopter/implementations.py
@@ -114,7 +114,7 @@
 
   def __init__(
       self, breakdown, host, port, secure, root_certificates, private_key,
-      certificate_chain, server_host_override=None):
+      certificate_chain, metadata_transformer=None, server_host_override=None):
     self._lock = threading.Lock()
     self._breakdown = breakdown
     self._host = host
@@ -123,6 +123,7 @@
     self._root_certificates = root_certificates
     self._private_key = private_key
     self._certificate_chain = certificate_chain
+    self._metadata_transformer = metadata_transformer
     self._server_host_override = server_host_override
 
     self._pool = None
@@ -141,6 +142,7 @@
             self._breakdown.request_serializers,
             self._breakdown.response_deserializers, self._secure,
             self._root_certificates, self._private_key, self._certificate_chain,
+            metadata_transformer=self._metadata_transformer,
             server_host_override=self._server_host_override)
         self._front.join_rear_link(self._rear_link)
         self._rear_link.join_fore_link(self._front)
@@ -189,8 +191,9 @@
 
 
 def stub(
-    service_name, methods, host, port, secure=False, root_certificates=None,
-    private_key=None, certificate_chain=None, server_host_override=None):
+    service_name, methods, host, port, metadata_transformer=None, secure=False,
+    root_certificates=None, private_key=None, certificate_chain=None,
+    server_host_override=None):
   """Constructs an interfaces.Stub.
 
   Args:
@@ -201,6 +204,9 @@
       not qualified by the service name or decorated in any other way.
     host: The host to which to connect for RPC service.
     port: The port to which to connect for RPC service.
+    metadata_transformer: A callable that given a metadata object produces
+      another metadata object to be used in the underlying communication on the
+      wire.
     secure: Whether or not to construct the stub with a secure connection.
     root_certificates: The PEM-encoded root certificates or None to ask for
       them to be retrieved from a default location.
diff --git a/templates/Makefile.template b/templates/Makefile.template
index 8579a62..d6c80a5 100644
--- a/templates/Makefile.template
+++ b/templates/Makefile.template
@@ -111,6 +111,15 @@
 LDFLAGS_dbg =
 DEFINES_dbg = _DEBUG DEBUG
 
+VALID_CONFIG_mutrace = 1
+CC_mutrace = $(DEFAULT_CC)
+CXX_mutrace = $(DEFAULT_CXX)
+LD_mutrace = $(DEFAULT_CC)
+LDXX_mutrace = $(DEFAULT_CXX)
+CPPFLAGS_mutrace = -O0
+LDFLAGS_mutrace = -rdynamic
+DEFINES_mutrace = _DEBUG DEBUG
+
 VALID_CONFIG_valgrind = 1
 REQUIRE_CUSTOM_LIBRARIES_valgrind = 1
 CC_valgrind = $(DEFAULT_CC)
diff --git a/templates/vsprojects/vs2010/grpc.sln.template b/templates/vsprojects/vs2010/grpc.sln.template
index b90c0d7..47aa03c 100644
--- a/templates/vsprojects/vs2010/grpc.sln.template
+++ b/templates/vsprojects/vs2010/grpc.sln.template
@@ -20,10 +20,6 @@
   % endif
 EndProject
 % endfor
-Project("${cpp_proj_type}") = "gpr_shared", "gpr_shared.vcxproj", "{3D304D6B-AAF8-428B-AC7D-A698DDDE93C0}"
-EndProject
-Project("${cpp_proj_type}") = "grpc_shared", "grpc_shared.vcxproj", "{F2EE8FDB-F1E0-43A0-A297-6F255BB52AAA}"
-EndProject
 Project("${cpp_proj_type}") = "grpc_csharp_ext_shared", "grpc_csharp_ext_shared.vcxproj", "{C26D04A8-37C6-44C7-B458-906C9FCE928C}"
 EndProject
 Project("${cpp_proj_type}") = "zlibvc", "third_party\zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
diff --git a/templates/vsprojects/vs2013/grpc.sln.template b/templates/vsprojects/vs2013/grpc.sln.template
index d17f4a3..2b0f76b 100644
--- a/templates/vsprojects/vs2013/grpc.sln.template
+++ b/templates/vsprojects/vs2013/grpc.sln.template
@@ -23,10 +23,6 @@
   % endif
 EndProject
 % endfor
-Project("${cpp_proj_type}") = "gpr_shared", "gpr_shared.vcxproj", "{3D304D6B-AAF8-428B-AC7D-A698DDDE93C0}"
-EndProject
-Project("${cpp_proj_type}") = "grpc_shared", "grpc_shared.vcxproj", "{F2EE8FDB-F1E0-43A0-A297-6F255BB52AAA}"
-EndProject
 Project("${cpp_proj_type}") = "grpc_csharp_ext_shared", "grpc_csharp_ext_shared.vcxproj", "{C26D04A8-37C6-44C7-B458-906C9FCE928C}"
 EndProject
 Project("${cpp_proj_type}") = "zlibvc", "third_party\zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
diff --git a/test/core/support/thd_test.c b/test/core/support/thd_test.c
index c03a905..bb3d54a 100644
--- a/test/core/support/thd_test.c
+++ b/test/core/support/thd_test.c
@@ -60,12 +60,16 @@
   gpr_mu_unlock(&t->mu);
 }
 
+static void thd_body_joinable(void *v) { }
+
 /* Test that we can create a number of threads and wait for them. */
 static void test(void) {
   int i;
   gpr_thd_id thd;
+  gpr_thd_id thds[1000];
   struct test t;
   int n = 1000;
+  gpr_thd_options options = gpr_thd_options_default();
   gpr_mu_init(&t.mu);
   gpr_cv_init(&t.done_cv);
   t.n = n;
@@ -79,6 +83,13 @@
   }
   gpr_mu_unlock(&t.mu);
   GPR_ASSERT(t.n == 0);
+  gpr_thd_options_set_joinable(&options);
+  for (i = 0; i < n; i++) {
+    GPR_ASSERT(gpr_thd_new(&thds[i], &thd_body_joinable, NULL, &options));
+  }
+  for (i = 0; i < n; i++) {
+    gpr_thd_join(thds[i]);
+  }
 }
 
 /* ------------------------------------------------- */
diff --git a/test/cpp/qps/worker.cc b/test/cpp/qps/worker.cc
index 378151c..b6830cc 100644
--- a/test/cpp/qps/worker.cc
+++ b/test/cpp/qps/worker.cc
@@ -71,6 +71,8 @@
 
 static bool got_sigint = false;
 
+static void sigint_handler(int x) {got_sigint = true;}
+
 namespace grpc {
 namespace testing {
 
@@ -248,6 +250,8 @@
   grpc_init();
   ParseCommandLineFlags(&argc, &argv, true);
 
+  signal(SIGINT, sigint_handler);
+
   grpc::testing::RunServer();
 
   grpc_shutdown();
diff --git a/tools/distpackages/build_deb_packages.sh b/tools/distpackages/build_deb_packages.sh
index 7b2acb6..7dff8e3 100755
--- a/tools/distpackages/build_deb_packages.sh
+++ b/tools/distpackages/build_deb_packages.sh
@@ -30,11 +30,18 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 # Where to put resulting .deb packages.
-deb_dest="deb_out"
+deb_dest="/tmp/deb_out"
 mkdir -p $deb_dest
 
-version='0.5.0.0'
+# Update version from default values if the file /version.txt exists
+#
+# - when present, /version.txt will added by the docker build.
 pkg_version='0.5.0'
+if [ -f /version.txt ]; then
+  pkg_version=$(cat /version.txt)
+fi
+version="${pkg_version}.0"
+echo "Target release => $pkg_version"
 
 if [ -f /.dockerinit ]; then
   # We're in Docker where uname -p returns "unknown".
@@ -110,8 +117,5 @@
   dpkg-deb -c $deb_path
   echo "Problems reported by lintian:"
   lintian $deb_path
-
   echo
 done
-
-
diff --git a/tools/dockerfile/grpc_build_deb/Dockerfile b/tools/dockerfile/grpc_build_deb/Dockerfile
index 24ffc73..cf8da59 100644
--- a/tools/dockerfile/grpc_build_deb/Dockerfile
+++ b/tools/dockerfile/grpc_build_deb/Dockerfile
@@ -30,6 +30,9 @@
 # Dockerfile to build Debian packages for gRPC C core.
 FROM grpc/base
 
+# Add the file containing the gRPC version
+ADD version.txt version.txt
+
 # Install dependencies
 RUN apt-get update && apt-get install -y lintian
 
diff --git a/tools/dockerfile/grpc_build_deb/version.txt b/tools/dockerfile/grpc_build_deb/version.txt
new file mode 100644
index 0000000..4b9fcbe
--- /dev/null
+++ b/tools/dockerfile/grpc_build_deb/version.txt
@@ -0,0 +1 @@
+0.5.1
diff --git a/tools/gce_setup/grpc_docker.sh b/tools/gce_setup/grpc_docker.sh
index 497112c..0e82ac1 100755
--- a/tools/gce_setup/grpc_docker.sh
+++ b/tools/gce_setup/grpc_docker.sh
@@ -673,7 +673,7 @@
 }
 
 # grpc_build_proto_bins
-# 
+#
 # - rebuilds the dist_proto docker image
 #   * doing this builds the protoc and the ruby, python and cpp bins statically
 #
@@ -693,11 +693,11 @@
   gce_has_instance $grpc_project $host || return 1;
   local project_opt="--project $grpc_project"
   local zone_opt="--zone $grpc_zone"
-  
+
   # rebuild the dist_proto image
   local label='dist_proto'
   grpc_update_image -- -h $host $label || return 1
- 
+
   # run a command to copy the generated archive to the docker host
   local docker_prefix='sudo docker run -v /tmp:/tmp/proto_bins_out'
   local tar_name='proto-bins*.tar.gz'
@@ -715,6 +715,58 @@
   gcloud compute copy-files $rmt_tar $local_copy $project_opt $zone_opt || return 1
 }
 
+_grpc_build_debs_args() {
+  [[ -n $1 ]] && {  # host
+    host=$1
+    shift
+  } || {
+    host='grpc-docker-builder'
+  }
+}
+
+# grpc_build_debs
+#
+# - rebuilds the build_debs
+#   * doing this builds a deb package for release debs
+#
+# - runs a docker command that copies the debs from the docker instance to its
+#   host
+# - copies the debs from the host to the local machine
+grpc_build_debs() {
+  _grpc_ensure_gcloud_ssh || return 1;
+
+  # declare vars local so that they don't pollute the shell environment
+  # where this func is used.
+  local grpc_zone grpc_project dry_run  # set by _grpc_set_project_and_zone
+  # set by _grpc_build_debs_args
+  local host
+
+  # set the project zone and check that all necessary args are provided
+  _grpc_set_project_and_zone -f _grpc_build_debs_args "$@" || return 1
+  gce_has_instance $grpc_project $host || return 1;
+  local project_opt="--project $grpc_project"
+  local zone_opt="--zone $grpc_zone"
+
+  # rebuild the build_deb image
+  local label='build_deb'
+  grpc_update_image -- -h $host $label || return 1
+
+  # run a command to copy the debs from the docker instance to the host.
+  local docker_prefix='sudo docker run -v /tmp:/tmp/host_deb_out'
+  local cp_cmd="/bin/bash -c 'cp -v /tmp/deb_out/*.deb /tmp/host_deb_out'"
+  local cmd="$docker_prefix grpc/$label $cp_cmd"
+  local ssh_cmd="bash -l -c \"$cmd\""
+  echo "will run:"
+  echo "  $ssh_cmd"
+  echo "on $host"
+  gcloud compute $project_opt ssh $zone_opt $host --command "$cmd" || return 1
+
+  # copy the debs from host machine to the local one.
+  local rmt_debs="$host:/tmp/*.deb"
+  local local_copy="$(pwd)"
+  gcloud compute copy-files $rmt_debs $local_copy $project_opt $zone_opt || return 1
+}
+
 _grpc_launch_servers_args() {
   [[ -n $1 ]] && {  # host
     host=$1
@@ -1310,5 +1362,3 @@
 _grpc_gce_test_flags() {
   echo " --default_service_account=155450119199-r5aaqa2vqoa9g5mv2m6s3m1l293rlmel@developer.gserviceaccount.com --oauth_scope=https://www.googleapis.com/auth/xapi.zoo"
 }
-
-# TODO(grpc-team): add grpc_interop_gen_xxx_cmd for python
diff --git a/vsprojects/vs2010/gpr.vcxproj b/vsprojects/vs2010/gpr.vcxproj
index f50f871..d23124c 100644
--- a/vsprojects/vs2010/gpr.vcxproj
+++ b/vsprojects/vs2010/gpr.vcxproj
@@ -166,6 +166,8 @@
     </ClCompile>
     <ClCompile Include="..\..\src\core\support\sync_win32.c">
     </ClCompile>
+    <ClCompile Include="..\..\src\core\support\thd.c">
+    </ClCompile>
     <ClCompile Include="..\..\src\core\support\thd_posix.c">
     </ClCompile>
     <ClCompile Include="..\..\src\core\support\thd_win32.c">
diff --git a/vsprojects/vs2010/gpr.vcxproj.filters b/vsprojects/vs2010/gpr.vcxproj.filters
index dffaf1e..1f87944 100644
--- a/vsprojects/vs2010/gpr.vcxproj.filters
+++ b/vsprojects/vs2010/gpr.vcxproj.filters
@@ -88,6 +88,9 @@
     <ClCompile Include="..\..\src\core\support\sync_win32.c">
       <Filter>src\core\support</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\core\support\thd.c">
+      <Filter>src\core\support</Filter>
+    </ClCompile>
     <ClCompile Include="..\..\src\core\support\thd_posix.c">
       <Filter>src\core\support</Filter>
     </ClCompile>
diff --git a/vsprojects/vs2010/gpr_shared.vcxproj b/vsprojects/vs2010/gpr_shared.vcxproj
deleted file mode 100644
index 174911f..0000000
--- a/vsprojects/vs2010/gpr_shared.vcxproj
+++ /dev/null
@@ -1,184 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{3D304D6B-AAF8-428B-AC7D-A698DDDE93C0}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-    <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="global.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="global.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <TargetName>gpr</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <TargetName>gpr</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\include\grpc\support\alloc.h" />
-    <ClInclude Include="..\..\include\grpc\support\atm.h" />
-    <ClInclude Include="..\..\include\grpc\support\atm_gcc_atomic.h" />
-    <ClInclude Include="..\..\include\grpc\support\atm_gcc_sync.h" />
-    <ClInclude Include="..\..\include\grpc\support\atm_win32.h" />
-    <ClInclude Include="..\..\include\grpc\support\cancellable_platform.h" />
-    <ClInclude Include="..\..\include\grpc\support\cmdline.h" />
-    <ClInclude Include="..\..\include\grpc\support\cpu.h" />
-    <ClInclude Include="..\..\include\grpc\support\histogram.h" />
-    <ClInclude Include="..\..\include\grpc\support\host_port.h" />
-    <ClInclude Include="..\..\include\grpc\support\log.h" />
-    <ClInclude Include="..\..\include\grpc\support\log_win32.h" />
-    <ClInclude Include="..\..\include\grpc\support\port_platform.h" />
-    <ClInclude Include="..\..\include\grpc\support\slice.h" />
-    <ClInclude Include="..\..\include\grpc\support\slice_buffer.h" />
-    <ClInclude Include="..\..\include\grpc\support\sync.h" />
-    <ClInclude Include="..\..\include\grpc\support\sync_generic.h" />
-    <ClInclude Include="..\..\include\grpc\support\sync_posix.h" />
-    <ClInclude Include="..\..\include\grpc\support\sync_win32.h" />
-    <ClInclude Include="..\..\include\grpc\support\thd.h" />
-    <ClInclude Include="..\..\include\grpc\support\time.h" />
-    <ClInclude Include="..\..\include\grpc\support\useful.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\core\support\env.h" />
-    <ClInclude Include="..\..\src\core\support\file.h" />
-    <ClInclude Include="..\..\src\core\support\murmur_hash.h" />
-    <ClInclude Include="..\..\src\core\support\string.h" />
-    <ClInclude Include="..\..\src\core\support\string_win32.h" />
-    <ClInclude Include="..\..\src\core\support\thd_internal.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\core\support\alloc.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cancellable.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cmdline.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_iphone.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_linux.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\env_linux.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\env_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\env_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\file.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\file_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\file_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\histogram.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\host_port.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_android.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_linux.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\murmur_hash.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\slice.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\slice_buffer.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\string.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\string_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\string_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\sync.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\sync_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\sync_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\thd_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\thd_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\time.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\time_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\time_win32.c">
-    </ClCompile>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
-
diff --git a/vsprojects/vs2010/gpr_shared.vcxproj.filters b/vsprojects/vs2010/gpr_shared.vcxproj.filters
deleted file mode 100644
index dffaf1e..0000000
--- a/vsprojects/vs2010/gpr_shared.vcxproj.filters
+++ /dev/null
@@ -1,217 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="..\..\src\core\support\alloc.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cancellable.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cmdline.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_iphone.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_linux.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_windows.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\env_linux.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\env_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\env_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\file.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\file_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\file_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\histogram.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\host_port.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_android.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_linux.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\murmur_hash.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\slice.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\slice_buffer.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\string.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\string_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\string_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\sync.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\sync_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\sync_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\thd_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\thd_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\time.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\time_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\time_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\include\grpc\support\alloc.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\atm.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\atm_gcc_atomic.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\atm_gcc_sync.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\atm_win32.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\cancellable_platform.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\cmdline.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\cpu.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\histogram.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\host_port.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\log.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\log_win32.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\port_platform.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\slice.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\slice_buffer.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\sync.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\sync_generic.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\sync_posix.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\sync_win32.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\thd.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\time.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\useful.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\core\support\env.h">
-      <Filter>src\core\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\support\file.h">
-      <Filter>src\core\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\support\murmur_hash.h">
-      <Filter>src\core\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\support\string.h">
-      <Filter>src\core\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\support\string_win32.h">
-      <Filter>src\core\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\support\thd_internal.h">
-      <Filter>src\core\support</Filter>
-    </ClInclude>
-  </ItemGroup>
-
-  <ItemGroup>
-    <Filter Include="include">
-      <UniqueIdentifier>{9ea89137-2bf7-b6d9-b7af-7cb4d1b74928}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="include\grpc">
-      <UniqueIdentifier>{e6957ec1-85ba-6515-03c0-e12878045b1f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="include\grpc\support">
-      <UniqueIdentifier>{31c42000-3ed7-95e1-d076-df814b72cdee}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src">
-      <UniqueIdentifier>{60eb2826-e58b-cb10-a98d-fe04727398a2}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core">
-      <UniqueIdentifier>{c5e1baa7-de77-beb1-9675-942261648f79}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\support">
-      <UniqueIdentifier>{bb116f2a-ea2a-c233-82da-0c54e3cbfec1}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-</Project>
-
diff --git a/vsprojects/vs2010/gpr_test_util.vcxproj b/vsprojects/vs2010/gpr_test_util.vcxproj
index 667e451..0568fcf 100644
--- a/vsprojects/vs2010/gpr_test_util.vcxproj
+++ b/vsprojects/vs2010/gpr_test_util.vcxproj
@@ -76,6 +76,9 @@
     </Link>
   </ItemDefinitionGroup>
   <ItemGroup>
+    <ClInclude Include="..\..\test\core\util\test_config.h" />
+  </ItemGroup>
+  <ItemGroup>
     <ClCompile Include="..\..\test\core\util\test_config.c">
     </ClCompile>
   </ItemGroup>
diff --git a/vsprojects/vs2010/grpc.sln b/vsprojects/vs2010/grpc.sln
index 34e437c..8d1f877 100644
--- a/vsprojects/vs2010/grpc.sln
+++ b/vsprojects/vs2010/grpc.sln
@@ -15,6 +15,7 @@
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_test_util", "grpc_test_util.vcxproj", "{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}"
 	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}
 	EndProjectSection
 EndProject
@@ -35,10 +36,6 @@
 		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
 	EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr_shared", "gpr_shared.vcxproj", "{3D304D6B-AAF8-428B-AC7D-A698DDDE93C0}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_shared", "grpc_shared.vcxproj", "{F2EE8FDB-F1E0-43A0-A297-6F255BB52AAA}"
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_csharp_ext_shared", "grpc_csharp_ext_shared.vcxproj", "{C26D04A8-37C6-44C7-B458-906C9FCE928C}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "third_party\zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
diff --git a/vsprojects/vs2010/grpc_shared.vcxproj b/vsprojects/vs2010/grpc_shared.vcxproj
deleted file mode 100644
index 96c2fe0..0000000
--- a/vsprojects/vs2010/grpc_shared.vcxproj
+++ /dev/null
@@ -1,442 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{F2EE8FDB-F1E0-43A0-A297-6F255BB52AAA}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-    <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="global.props" />
-    <Import Project="ssl.props" />
-    <Import Project="winsock.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="global.props" />
-    <Import Project="ssl.props" />
-    <Import Project="winsock.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <TargetName>grpc</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <TargetName>grpc</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\include\grpc\grpc_security.h" />
-    <ClInclude Include="..\..\include\grpc\byte_buffer.h" />
-    <ClInclude Include="..\..\include\grpc\byte_buffer_reader.h" />
-    <ClInclude Include="..\..\include\grpc\grpc.h" />
-    <ClInclude Include="..\..\include\grpc\grpc_http.h" />
-    <ClInclude Include="..\..\include\grpc\status.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\core\httpcli\format_request.h" />
-    <ClInclude Include="..\..\src\core\httpcli\httpcli.h" />
-    <ClInclude Include="..\..\src\core\httpcli\httpcli_security_context.h" />
-    <ClInclude Include="..\..\src\core\httpcli\parser.h" />
-    <ClInclude Include="..\..\src\core\security\auth.h" />
-    <ClInclude Include="..\..\src\core\security\base64.h" />
-    <ClInclude Include="..\..\src\core\security\credentials.h" />
-    <ClInclude Include="..\..\src\core\security\json_token.h" />
-    <ClInclude Include="..\..\src\core\security\secure_endpoint.h" />
-    <ClInclude Include="..\..\src\core\security\secure_transport_setup.h" />
-    <ClInclude Include="..\..\src\core\security\security_context.h" />
-    <ClInclude Include="..\..\src\core\tsi\fake_transport_security.h" />
-    <ClInclude Include="..\..\src\core\tsi\ssl_transport_security.h" />
-    <ClInclude Include="..\..\src\core\tsi\transport_security.h" />
-    <ClInclude Include="..\..\src\core\tsi\transport_security_interface.h" />
-    <ClInclude Include="..\..\src\core\channel\census_filter.h" />
-    <ClInclude Include="..\..\src\core\channel\channel_args.h" />
-    <ClInclude Include="..\..\src\core\channel\channel_stack.h" />
-    <ClInclude Include="..\..\src\core\channel\child_channel.h" />
-    <ClInclude Include="..\..\src\core\channel\client_channel.h" />
-    <ClInclude Include="..\..\src\core\channel\client_setup.h" />
-    <ClInclude Include="..\..\src\core\channel\connected_channel.h" />
-    <ClInclude Include="..\..\src\core\channel\http_client_filter.h" />
-    <ClInclude Include="..\..\src\core\channel\http_filter.h" />
-    <ClInclude Include="..\..\src\core\channel\http_server_filter.h" />
-    <ClInclude Include="..\..\src\core\channel\metadata_buffer.h" />
-    <ClInclude Include="..\..\src\core\channel\noop_filter.h" />
-    <ClInclude Include="..\..\src\core\compression\algorithm.h" />
-    <ClInclude Include="..\..\src\core\compression\message_compress.h" />
-    <ClInclude Include="..\..\src\core\debug\trace.h" />
-    <ClInclude Include="..\..\src\core\iomgr\alarm.h" />
-    <ClInclude Include="..\..\src\core\iomgr\alarm_heap.h" />
-    <ClInclude Include="..\..\src\core\iomgr\alarm_internal.h" />
-    <ClInclude Include="..\..\src\core\iomgr\endpoint.h" />
-    <ClInclude Include="..\..\src\core\iomgr\endpoint_pair.h" />
-    <ClInclude Include="..\..\src\core\iomgr\fd_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\iocp_windows.h" />
-    <ClInclude Include="..\..\src\core\iomgr\iomgr.h" />
-    <ClInclude Include="..\..\src\core\iomgr\iomgr_internal.h" />
-    <ClInclude Include="..\..\src\core\iomgr\iomgr_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\pollset.h" />
-    <ClInclude Include="..\..\src\core\iomgr\pollset_kick.h" />
-    <ClInclude Include="..\..\src\core\iomgr\pollset_kick_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\pollset_kick_windows.h" />
-    <ClInclude Include="..\..\src\core\iomgr\pollset_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\pollset_windows.h" />
-    <ClInclude Include="..\..\src\core\iomgr\resolve_address.h" />
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr.h" />
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr_utils.h" />
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr_win32.h" />
-    <ClInclude Include="..\..\src\core\iomgr\socket_utils_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\socket_windows.h" />
-    <ClInclude Include="..\..\src\core\iomgr\tcp_client.h" />
-    <ClInclude Include="..\..\src\core\iomgr\tcp_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\tcp_server.h" />
-    <ClInclude Include="..\..\src\core\iomgr\tcp_windows.h" />
-    <ClInclude Include="..\..\src\core\iomgr\time_averaged_stats.h" />
-    <ClInclude Include="..\..\src\core\iomgr\wakeup_fd_pipe.h" />
-    <ClInclude Include="..\..\src\core\iomgr\wakeup_fd_posix.h" />
-    <ClInclude Include="..\..\src\core\json\json.h" />
-    <ClInclude Include="..\..\src\core\json\json_common.h" />
-    <ClInclude Include="..\..\src\core\json\json_reader.h" />
-    <ClInclude Include="..\..\src\core\json\json_writer.h" />
-    <ClInclude Include="..\..\src\core\statistics\census_interface.h" />
-    <ClInclude Include="..\..\src\core\statistics\census_log.h" />
-    <ClInclude Include="..\..\src\core\statistics\census_rpc_stats.h" />
-    <ClInclude Include="..\..\src\core\statistics\census_tracing.h" />
-    <ClInclude Include="..\..\src\core\statistics\hash_table.h" />
-    <ClInclude Include="..\..\src\core\statistics\window_stats.h" />
-    <ClInclude Include="..\..\src\core\surface\byte_buffer_queue.h" />
-    <ClInclude Include="..\..\src\core\surface\call.h" />
-    <ClInclude Include="..\..\src\core\surface\channel.h" />
-    <ClInclude Include="..\..\src\core\surface\client.h" />
-    <ClInclude Include="..\..\src\core\surface\completion_queue.h" />
-    <ClInclude Include="..\..\src\core\surface\event_string.h" />
-    <ClInclude Include="..\..\src\core\surface\init.h" />
-    <ClInclude Include="..\..\src\core\surface\server.h" />
-    <ClInclude Include="..\..\src\core\surface\surface_trace.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\alpn.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\bin_encoder.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_data.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_goaway.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_ping.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_rst_stream.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_settings.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_window_update.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\hpack_parser.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\hpack_table.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\http2_errors.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\huffsyms.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\status_conversion.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\stream_encoder.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\stream_map.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\timeout_encoding.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\varint.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2_transport.h" />
-    <ClInclude Include="..\..\src\core\transport\metadata.h" />
-    <ClInclude Include="..\..\src\core\transport\stream_op.h" />
-    <ClInclude Include="..\..\src\core\transport\transport.h" />
-    <ClInclude Include="..\..\src\core\transport\transport_impl.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\core\httpcli\format_request.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\httpcli\httpcli.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\httpcli\httpcli_security_context.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\httpcli\parser.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\auth.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\base64.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\credentials.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\credentials_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\credentials_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\factories.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\google_default_credentials.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\json_token.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\secure_endpoint.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\secure_transport_setup.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\security_context.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\server_secure_chttp2.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\init_secure.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\secure_channel_create.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\tsi\fake_transport_security.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\tsi\ssl_transport_security.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\tsi\transport_security.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\call_op_string.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\census_filter.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\channel_args.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\channel_stack.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\child_channel.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\client_channel.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\client_setup.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\connected_channel.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\http_client_filter.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\http_filter.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\http_server_filter.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\metadata_buffer.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\noop_filter.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\compression\algorithm.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\compression\message_compress.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\debug\trace.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\alarm.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\alarm_heap.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\endpoint.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\endpoint_pair_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\fd_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iocp_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iomgr.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iomgr_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iomgr_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_kick.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_epoll.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_poll_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\resolve_address_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\resolve_address_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\sockaddr_utils.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_utils_common_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_utils_linux.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_utils_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_client_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_client_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_server_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_server_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\time_averaged_stats.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_eventfd.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_nospecial.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_pipe.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json_reader.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json_string.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json_writer.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_init.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_log.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_rpc_stats.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_tracing.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\hash_table.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\window_stats.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\byte_buffer.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\byte_buffer_queue.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\byte_buffer_reader.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\call.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\call_details.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\call_log_batch.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\channel.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\channel_create.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\client.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\completion_queue.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\event_string.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\init.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\lame_client.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\metadata_array.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\server.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\server_chttp2.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\server_create.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\surface_trace.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\alpn.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\bin_encoder.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_data.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_goaway.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_ping.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_rst_stream.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_settings.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_window_update.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\hpack_parser.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\hpack_table.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\huffsyms.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\status_conversion.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\stream_encoder.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\stream_map.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\timeout_encoding.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\varint.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2_transport.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\metadata.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\stream_op.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\transport.c">
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="gpr.vcxproj">
-      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
-    </ProjectReference>
-    <ProjectReference Include="third_party\zlibvc.vcxproj">
-      <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
-
diff --git a/vsprojects/vs2010/grpc_shared.vcxproj.filters b/vsprojects/vs2010/grpc_shared.vcxproj.filters
deleted file mode 100644
index 20dbe8c..0000000
--- a/vsprojects/vs2010/grpc_shared.vcxproj.filters
+++ /dev/null
@@ -1,736 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="..\..\src\core\httpcli\format_request.c">
-      <Filter>src\core\httpcli</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\httpcli\httpcli.c">
-      <Filter>src\core\httpcli</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\httpcli\httpcli_security_context.c">
-      <Filter>src\core\httpcli</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\httpcli\parser.c">
-      <Filter>src\core\httpcli</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\auth.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\base64.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\credentials.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\credentials_posix.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\credentials_win32.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\factories.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\google_default_credentials.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\json_token.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\secure_endpoint.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\secure_transport_setup.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\security_context.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\server_secure_chttp2.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\init_secure.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\secure_channel_create.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\tsi\fake_transport_security.c">
-      <Filter>src\core\tsi</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\tsi\ssl_transport_security.c">
-      <Filter>src\core\tsi</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\tsi\transport_security.c">
-      <Filter>src\core\tsi</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\call_op_string.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\census_filter.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\channel_args.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\channel_stack.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\child_channel.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\client_channel.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\client_setup.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\connected_channel.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\http_client_filter.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\http_filter.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\http_server_filter.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\metadata_buffer.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\noop_filter.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\compression\algorithm.c">
-      <Filter>src\core\compression</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\compression\message_compress.c">
-      <Filter>src\core\compression</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\debug\trace.c">
-      <Filter>src\core\debug</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\alarm.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\alarm_heap.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\endpoint.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\endpoint_pair_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\fd_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iocp_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iomgr.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iomgr_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iomgr_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_kick.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_epoll.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_poll_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\resolve_address_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\resolve_address_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\sockaddr_utils.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_utils_common_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_utils_linux.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_utils_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_client_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_client_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_server_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_server_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\time_averaged_stats.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_eventfd.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_nospecial.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_pipe.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json.c">
-      <Filter>src\core\json</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json_reader.c">
-      <Filter>src\core\json</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json_string.c">
-      <Filter>src\core\json</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json_writer.c">
-      <Filter>src\core\json</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_init.c">
-      <Filter>src\core\statistics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_log.c">
-      <Filter>src\core\statistics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_rpc_stats.c">
-      <Filter>src\core\statistics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_tracing.c">
-      <Filter>src\core\statistics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\hash_table.c">
-      <Filter>src\core\statistics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\window_stats.c">
-      <Filter>src\core\statistics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\byte_buffer.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\byte_buffer_queue.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\byte_buffer_reader.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\call.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\call_details.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\call_log_batch.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\channel.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\channel_create.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\client.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\completion_queue.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\event_string.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\init.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\lame_client.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\metadata_array.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\server.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\server_chttp2.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\server_create.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\surface_trace.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\alpn.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\bin_encoder.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_data.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_goaway.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_ping.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_rst_stream.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_settings.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_window_update.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\hpack_parser.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\hpack_table.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\huffsyms.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\status_conversion.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\stream_encoder.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\stream_map.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\timeout_encoding.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\varint.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2_transport.c">
-      <Filter>src\core\transport</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\metadata.c">
-      <Filter>src\core\transport</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\stream_op.c">
-      <Filter>src\core\transport</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\transport.c">
-      <Filter>src\core\transport</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\include\grpc\grpc_security.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\byte_buffer.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\byte_buffer_reader.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\grpc.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\grpc_http.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\status.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\core\httpcli\format_request.h">
-      <Filter>src\core\httpcli</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\httpcli\httpcli.h">
-      <Filter>src\core\httpcli</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\httpcli\httpcli_security_context.h">
-      <Filter>src\core\httpcli</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\httpcli\parser.h">
-      <Filter>src\core\httpcli</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\auth.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\base64.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\credentials.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\json_token.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\secure_endpoint.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\secure_transport_setup.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\security_context.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\tsi\fake_transport_security.h">
-      <Filter>src\core\tsi</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\tsi\ssl_transport_security.h">
-      <Filter>src\core\tsi</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\tsi\transport_security.h">
-      <Filter>src\core\tsi</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\tsi\transport_security_interface.h">
-      <Filter>src\core\tsi</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\census_filter.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\channel_args.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\channel_stack.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\child_channel.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\client_channel.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\client_setup.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\connected_channel.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\http_client_filter.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\http_filter.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\http_server_filter.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\metadata_buffer.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\noop_filter.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\compression\algorithm.h">
-      <Filter>src\core\compression</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\compression\message_compress.h">
-      <Filter>src\core\compression</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\debug\trace.h">
-      <Filter>src\core\debug</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\alarm.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\alarm_heap.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\alarm_internal.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\endpoint.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\endpoint_pair.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\fd_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\iocp_windows.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\iomgr.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\iomgr_internal.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\iomgr_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\pollset.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\pollset_kick.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\pollset_kick_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\pollset_kick_windows.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\pollset_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\pollset_windows.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\resolve_address.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr_utils.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr_win32.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\socket_utils_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\socket_windows.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\tcp_client.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\tcp_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\tcp_server.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\tcp_windows.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\time_averaged_stats.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\wakeup_fd_pipe.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\wakeup_fd_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\json\json.h">
-      <Filter>src\core\json</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\json\json_common.h">
-      <Filter>src\core\json</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\json\json_reader.h">
-      <Filter>src\core\json</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\json\json_writer.h">
-      <Filter>src\core\json</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\statistics\census_interface.h">
-      <Filter>src\core\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\statistics\census_log.h">
-      <Filter>src\core\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\statistics\census_rpc_stats.h">
-      <Filter>src\core\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\statistics\census_tracing.h">
-      <Filter>src\core\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\statistics\hash_table.h">
-      <Filter>src\core\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\statistics\window_stats.h">
-      <Filter>src\core\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\byte_buffer_queue.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\call.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\channel.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\client.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\completion_queue.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\event_string.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\init.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\server.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\surface_trace.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\alpn.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\bin_encoder.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_data.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_goaway.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_ping.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_rst_stream.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_settings.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_window_update.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\hpack_parser.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\hpack_table.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\http2_errors.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\huffsyms.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\status_conversion.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\stream_encoder.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\stream_map.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\timeout_encoding.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\varint.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2_transport.h">
-      <Filter>src\core\transport</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\metadata.h">
-      <Filter>src\core\transport</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\stream_op.h">
-      <Filter>src\core\transport</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\transport.h">
-      <Filter>src\core\transport</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\transport_impl.h">
-      <Filter>src\core\transport</Filter>
-    </ClInclude>
-  </ItemGroup>
-
-  <ItemGroup>
-    <Filter Include="include">
-      <UniqueIdentifier>{968de0a1-346d-b75a-6f19-6a55119b8235}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="include\grpc">
-      <UniqueIdentifier>{880c644d-b84f-cfca-98bd-e145f36232ab}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src">
-      <UniqueIdentifier>{d538af37-07b2-062b-fa2a-d9f882cb2737}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core">
-      <UniqueIdentifier>{ea745680-21ea-9c5e-679b-64dc40562d08}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\channel">
-      <UniqueIdentifier>{d897b6c3-c555-234e-a589-b4f008063615}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\compression">
-      <UniqueIdentifier>{263cb913-dfe6-42a4-096b-cac231f76305}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\debug">
-      <UniqueIdentifier>{1da7ef8a-a06d-5499-b3de-19fee4a4214d}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\httpcli">
-      <UniqueIdentifier>{a9bc00ad-835f-c625-c6d9-6a1324f98b9f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\iomgr">
-      <UniqueIdentifier>{1baf3894-af37-e647-bdbc-95dc17ed0073}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\json">
-      <UniqueIdentifier>{e665cc0e-b994-d7c5-cc18-2007392019f0}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\security">
-      <UniqueIdentifier>{1d850ac6-e639-4eab-5338-4ba40272fcc9}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\statistics">
-      <UniqueIdentifier>{0ef49896-2313-4a3f-1ce2-716fa0e5c6ca}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\surface">
-      <UniqueIdentifier>{aeb18e82-5d25-0aad-8b02-a0a3470073ce}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\transport">
-      <UniqueIdentifier>{168fa1b1-1c18-eb55-9a4d-746bc58df2c1}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\transport\chttp2">
-      <UniqueIdentifier>{b8b623c3-a168-a2b1-0d5f-b70a1f1cd8d2}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\tsi">
-      <UniqueIdentifier>{0b0f9ab1-efa4-7f03-e446-6fb9b5227e84}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-</Project>
-
diff --git a/vsprojects/vs2010/grpc_test_util.vcxproj b/vsprojects/vs2010/grpc_test_util.vcxproj
index 6be2391..967543f 100644
--- a/vsprojects/vs2010/grpc_test_util.vcxproj
+++ b/vsprojects/vs2010/grpc_test_util.vcxproj
@@ -103,6 +103,9 @@
     <ProjectReference Include="gpr.vcxproj">
       <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
     </ProjectReference>
+    <ProjectReference Include="gpr_test_util.vcxproj">
+      <Project>{EAB0A629-17A9-44DB-B5FF-E91A721FE037}</Project>
+    </ProjectReference>
     <ProjectReference Include="grpc.vcxproj">
       <Project>{29D16885-7228-4C31-81ED-5F9187C7F2A9}</Project>
     </ProjectReference>
diff --git a/vsprojects/vs2013/gpr.vcxproj b/vsprojects/vs2013/gpr.vcxproj
index 4b44cc6..e0fa68e 100644
--- a/vsprojects/vs2013/gpr.vcxproj
+++ b/vsprojects/vs2013/gpr.vcxproj
@@ -168,6 +168,8 @@
     </ClCompile>
     <ClCompile Include="..\..\src\core\support\sync_win32.c">
     </ClCompile>
+    <ClCompile Include="..\..\src\core\support\thd.c">
+    </ClCompile>
     <ClCompile Include="..\..\src\core\support\thd_posix.c">
     </ClCompile>
     <ClCompile Include="..\..\src\core\support\thd_win32.c">
diff --git a/vsprojects/vs2013/gpr.vcxproj.filters b/vsprojects/vs2013/gpr.vcxproj.filters
index dffaf1e..1f87944 100644
--- a/vsprojects/vs2013/gpr.vcxproj.filters
+++ b/vsprojects/vs2013/gpr.vcxproj.filters
@@ -88,6 +88,9 @@
     <ClCompile Include="..\..\src\core\support\sync_win32.c">
       <Filter>src\core\support</Filter>
     </ClCompile>
+    <ClCompile Include="..\..\src\core\support\thd.c">
+      <Filter>src\core\support</Filter>
+    </ClCompile>
     <ClCompile Include="..\..\src\core\support\thd_posix.c">
       <Filter>src\core\support</Filter>
     </ClCompile>
diff --git a/vsprojects/vs2013/gpr_shared.vcxproj b/vsprojects/vs2013/gpr_shared.vcxproj
deleted file mode 100644
index 8533965..0000000
--- a/vsprojects/vs2013/gpr_shared.vcxproj
+++ /dev/null
@@ -1,186 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{3D304D6B-AAF8-428B-AC7D-A698DDDE93C0}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
-    <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-    <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="global.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="global.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <TargetName>gpr</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <TargetName>gpr</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\include\grpc\support\alloc.h" />
-    <ClInclude Include="..\..\include\grpc\support\atm.h" />
-    <ClInclude Include="..\..\include\grpc\support\atm_gcc_atomic.h" />
-    <ClInclude Include="..\..\include\grpc\support\atm_gcc_sync.h" />
-    <ClInclude Include="..\..\include\grpc\support\atm_win32.h" />
-    <ClInclude Include="..\..\include\grpc\support\cancellable_platform.h" />
-    <ClInclude Include="..\..\include\grpc\support\cmdline.h" />
-    <ClInclude Include="..\..\include\grpc\support\cpu.h" />
-    <ClInclude Include="..\..\include\grpc\support\histogram.h" />
-    <ClInclude Include="..\..\include\grpc\support\host_port.h" />
-    <ClInclude Include="..\..\include\grpc\support\log.h" />
-    <ClInclude Include="..\..\include\grpc\support\log_win32.h" />
-    <ClInclude Include="..\..\include\grpc\support\port_platform.h" />
-    <ClInclude Include="..\..\include\grpc\support\slice.h" />
-    <ClInclude Include="..\..\include\grpc\support\slice_buffer.h" />
-    <ClInclude Include="..\..\include\grpc\support\sync.h" />
-    <ClInclude Include="..\..\include\grpc\support\sync_generic.h" />
-    <ClInclude Include="..\..\include\grpc\support\sync_posix.h" />
-    <ClInclude Include="..\..\include\grpc\support\sync_win32.h" />
-    <ClInclude Include="..\..\include\grpc\support\thd.h" />
-    <ClInclude Include="..\..\include\grpc\support\time.h" />
-    <ClInclude Include="..\..\include\grpc\support\useful.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\core\support\env.h" />
-    <ClInclude Include="..\..\src\core\support\file.h" />
-    <ClInclude Include="..\..\src\core\support\murmur_hash.h" />
-    <ClInclude Include="..\..\src\core\support\string.h" />
-    <ClInclude Include="..\..\src\core\support\string_win32.h" />
-    <ClInclude Include="..\..\src\core\support\thd_internal.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\core\support\alloc.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cancellable.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cmdline.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_iphone.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_linux.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\env_linux.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\env_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\env_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\file.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\file_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\file_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\histogram.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\host_port.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_android.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_linux.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\murmur_hash.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\slice.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\slice_buffer.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\string.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\string_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\string_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\sync.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\sync_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\sync_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\thd_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\thd_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\time.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\time_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\time_win32.c">
-    </ClCompile>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
-
diff --git a/vsprojects/vs2013/gpr_shared.vcxproj.filters b/vsprojects/vs2013/gpr_shared.vcxproj.filters
deleted file mode 100644
index dffaf1e..0000000
--- a/vsprojects/vs2013/gpr_shared.vcxproj.filters
+++ /dev/null
@@ -1,217 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="..\..\src\core\support\alloc.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cancellable.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cmdline.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_iphone.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_linux.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\cpu_windows.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\env_linux.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\env_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\env_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\file.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\file_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\file_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\histogram.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\host_port.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_android.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_linux.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\log_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\murmur_hash.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\slice.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\slice_buffer.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\string.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\string_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\string_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\sync.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\sync_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\sync_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\thd_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\thd_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\time.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\time_posix.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\support\time_win32.c">
-      <Filter>src\core\support</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\include\grpc\support\alloc.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\atm.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\atm_gcc_atomic.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\atm_gcc_sync.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\atm_win32.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\cancellable_platform.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\cmdline.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\cpu.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\histogram.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\host_port.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\log.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\log_win32.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\port_platform.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\slice.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\slice_buffer.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\sync.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\sync_generic.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\sync_posix.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\sync_win32.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\thd.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\time.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\support\useful.h">
-      <Filter>include\grpc\support</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\core\support\env.h">
-      <Filter>src\core\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\support\file.h">
-      <Filter>src\core\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\support\murmur_hash.h">
-      <Filter>src\core\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\support\string.h">
-      <Filter>src\core\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\support\string_win32.h">
-      <Filter>src\core\support</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\support\thd_internal.h">
-      <Filter>src\core\support</Filter>
-    </ClInclude>
-  </ItemGroup>
-
-  <ItemGroup>
-    <Filter Include="include">
-      <UniqueIdentifier>{9ea89137-2bf7-b6d9-b7af-7cb4d1b74928}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="include\grpc">
-      <UniqueIdentifier>{e6957ec1-85ba-6515-03c0-e12878045b1f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="include\grpc\support">
-      <UniqueIdentifier>{31c42000-3ed7-95e1-d076-df814b72cdee}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src">
-      <UniqueIdentifier>{60eb2826-e58b-cb10-a98d-fe04727398a2}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core">
-      <UniqueIdentifier>{c5e1baa7-de77-beb1-9675-942261648f79}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\support">
-      <UniqueIdentifier>{bb116f2a-ea2a-c233-82da-0c54e3cbfec1}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-</Project>
-
diff --git a/vsprojects/vs2013/grpc.sln b/vsprojects/vs2013/grpc.sln
index 4e56edd..dfefddf 100644
--- a/vsprojects/vs2013/grpc.sln
+++ b/vsprojects/vs2013/grpc.sln
@@ -39,10 +39,6 @@
 		{29D16885-7228-4C31-81ED-5F9187C7F2A9} = {29D16885-7228-4C31-81ED-5F9187C7F2A9}
 	EndProjectSection
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gpr_shared", "gpr_shared.vcxproj", "{3D304D6B-AAF8-428B-AC7D-A698DDDE93C0}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_shared", "grpc_shared.vcxproj", "{F2EE8FDB-F1E0-43A0-A297-6F255BB52AAA}"
-EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "grpc_csharp_ext_shared", "grpc_csharp_ext_shared.vcxproj", "{C26D04A8-37C6-44C7-B458-906C9FCE928C}"
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlibvc", "third_party\zlibvc.vcxproj", "{8FD826F8-3739-44E6-8CC8-997122E53B8D}"
diff --git a/vsprojects/vs2013/grpc_shared.vcxproj b/vsprojects/vs2013/grpc_shared.vcxproj
deleted file mode 100644
index b673cc7..0000000
--- a/vsprojects/vs2013/grpc_shared.vcxproj
+++ /dev/null
@@ -1,444 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{F2EE8FDB-F1E0-43A0-A297-6F255BB52AAA}</ProjectGuid>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
-    <CharacterSet>Unicode</CharacterSet>
-    <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
-    <ConfigurationType>DynamicLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <PlatformToolset>v120</PlatformToolset>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-    <IntDir>$(Configuration)\$(ProjectName)\</IntDir>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="global.props" />
-    <Import Project="ssl.props" />
-    <Import Project="winsock.props" />
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-    <Import Project="global.props" />
-    <Import Project="ssl.props" />
-    <Import Project="winsock.props" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <TargetName>grpc</TargetName>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <TargetName>grpc</TargetName>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
-    <ClCompile>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>NotUsing</PrecompiledHeader>
-      <Optimization>MaxSpeed</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <SDLCheck>true</SDLCheck>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\include\grpc\grpc_security.h" />
-    <ClInclude Include="..\..\include\grpc\byte_buffer.h" />
-    <ClInclude Include="..\..\include\grpc\byte_buffer_reader.h" />
-    <ClInclude Include="..\..\include\grpc\grpc.h" />
-    <ClInclude Include="..\..\include\grpc\grpc_http.h" />
-    <ClInclude Include="..\..\include\grpc\status.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\core\httpcli\format_request.h" />
-    <ClInclude Include="..\..\src\core\httpcli\httpcli.h" />
-    <ClInclude Include="..\..\src\core\httpcli\httpcli_security_context.h" />
-    <ClInclude Include="..\..\src\core\httpcli\parser.h" />
-    <ClInclude Include="..\..\src\core\security\auth.h" />
-    <ClInclude Include="..\..\src\core\security\base64.h" />
-    <ClInclude Include="..\..\src\core\security\credentials.h" />
-    <ClInclude Include="..\..\src\core\security\json_token.h" />
-    <ClInclude Include="..\..\src\core\security\secure_endpoint.h" />
-    <ClInclude Include="..\..\src\core\security\secure_transport_setup.h" />
-    <ClInclude Include="..\..\src\core\security\security_context.h" />
-    <ClInclude Include="..\..\src\core\tsi\fake_transport_security.h" />
-    <ClInclude Include="..\..\src\core\tsi\ssl_transport_security.h" />
-    <ClInclude Include="..\..\src\core\tsi\transport_security.h" />
-    <ClInclude Include="..\..\src\core\tsi\transport_security_interface.h" />
-    <ClInclude Include="..\..\src\core\channel\census_filter.h" />
-    <ClInclude Include="..\..\src\core\channel\channel_args.h" />
-    <ClInclude Include="..\..\src\core\channel\channel_stack.h" />
-    <ClInclude Include="..\..\src\core\channel\child_channel.h" />
-    <ClInclude Include="..\..\src\core\channel\client_channel.h" />
-    <ClInclude Include="..\..\src\core\channel\client_setup.h" />
-    <ClInclude Include="..\..\src\core\channel\connected_channel.h" />
-    <ClInclude Include="..\..\src\core\channel\http_client_filter.h" />
-    <ClInclude Include="..\..\src\core\channel\http_filter.h" />
-    <ClInclude Include="..\..\src\core\channel\http_server_filter.h" />
-    <ClInclude Include="..\..\src\core\channel\metadata_buffer.h" />
-    <ClInclude Include="..\..\src\core\channel\noop_filter.h" />
-    <ClInclude Include="..\..\src\core\compression\algorithm.h" />
-    <ClInclude Include="..\..\src\core\compression\message_compress.h" />
-    <ClInclude Include="..\..\src\core\debug\trace.h" />
-    <ClInclude Include="..\..\src\core\iomgr\alarm.h" />
-    <ClInclude Include="..\..\src\core\iomgr\alarm_heap.h" />
-    <ClInclude Include="..\..\src\core\iomgr\alarm_internal.h" />
-    <ClInclude Include="..\..\src\core\iomgr\endpoint.h" />
-    <ClInclude Include="..\..\src\core\iomgr\endpoint_pair.h" />
-    <ClInclude Include="..\..\src\core\iomgr\fd_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\iocp_windows.h" />
-    <ClInclude Include="..\..\src\core\iomgr\iomgr.h" />
-    <ClInclude Include="..\..\src\core\iomgr\iomgr_internal.h" />
-    <ClInclude Include="..\..\src\core\iomgr\iomgr_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\pollset.h" />
-    <ClInclude Include="..\..\src\core\iomgr\pollset_kick.h" />
-    <ClInclude Include="..\..\src\core\iomgr\pollset_kick_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\pollset_kick_windows.h" />
-    <ClInclude Include="..\..\src\core\iomgr\pollset_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\pollset_windows.h" />
-    <ClInclude Include="..\..\src\core\iomgr\resolve_address.h" />
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr.h" />
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr_utils.h" />
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr_win32.h" />
-    <ClInclude Include="..\..\src\core\iomgr\socket_utils_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\socket_windows.h" />
-    <ClInclude Include="..\..\src\core\iomgr\tcp_client.h" />
-    <ClInclude Include="..\..\src\core\iomgr\tcp_posix.h" />
-    <ClInclude Include="..\..\src\core\iomgr\tcp_server.h" />
-    <ClInclude Include="..\..\src\core\iomgr\tcp_windows.h" />
-    <ClInclude Include="..\..\src\core\iomgr\time_averaged_stats.h" />
-    <ClInclude Include="..\..\src\core\iomgr\wakeup_fd_pipe.h" />
-    <ClInclude Include="..\..\src\core\iomgr\wakeup_fd_posix.h" />
-    <ClInclude Include="..\..\src\core\json\json.h" />
-    <ClInclude Include="..\..\src\core\json\json_common.h" />
-    <ClInclude Include="..\..\src\core\json\json_reader.h" />
-    <ClInclude Include="..\..\src\core\json\json_writer.h" />
-    <ClInclude Include="..\..\src\core\statistics\census_interface.h" />
-    <ClInclude Include="..\..\src\core\statistics\census_log.h" />
-    <ClInclude Include="..\..\src\core\statistics\census_rpc_stats.h" />
-    <ClInclude Include="..\..\src\core\statistics\census_tracing.h" />
-    <ClInclude Include="..\..\src\core\statistics\hash_table.h" />
-    <ClInclude Include="..\..\src\core\statistics\window_stats.h" />
-    <ClInclude Include="..\..\src\core\surface\byte_buffer_queue.h" />
-    <ClInclude Include="..\..\src\core\surface\call.h" />
-    <ClInclude Include="..\..\src\core\surface\channel.h" />
-    <ClInclude Include="..\..\src\core\surface\client.h" />
-    <ClInclude Include="..\..\src\core\surface\completion_queue.h" />
-    <ClInclude Include="..\..\src\core\surface\event_string.h" />
-    <ClInclude Include="..\..\src\core\surface\init.h" />
-    <ClInclude Include="..\..\src\core\surface\server.h" />
-    <ClInclude Include="..\..\src\core\surface\surface_trace.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\alpn.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\bin_encoder.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_data.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_goaway.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_ping.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_rst_stream.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_settings.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_window_update.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\hpack_parser.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\hpack_table.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\http2_errors.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\huffsyms.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\status_conversion.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\stream_encoder.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\stream_map.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\timeout_encoding.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2\varint.h" />
-    <ClInclude Include="..\..\src\core\transport\chttp2_transport.h" />
-    <ClInclude Include="..\..\src\core\transport\metadata.h" />
-    <ClInclude Include="..\..\src\core\transport\stream_op.h" />
-    <ClInclude Include="..\..\src\core\transport\transport.h" />
-    <ClInclude Include="..\..\src\core\transport\transport_impl.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="..\..\src\core\httpcli\format_request.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\httpcli\httpcli.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\httpcli\httpcli_security_context.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\httpcli\parser.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\auth.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\base64.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\credentials.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\credentials_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\credentials_win32.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\factories.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\google_default_credentials.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\json_token.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\secure_endpoint.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\secure_transport_setup.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\security_context.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\server_secure_chttp2.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\init_secure.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\secure_channel_create.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\tsi\fake_transport_security.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\tsi\ssl_transport_security.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\tsi\transport_security.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\call_op_string.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\census_filter.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\channel_args.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\channel_stack.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\child_channel.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\client_channel.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\client_setup.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\connected_channel.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\http_client_filter.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\http_filter.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\http_server_filter.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\metadata_buffer.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\noop_filter.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\compression\algorithm.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\compression\message_compress.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\debug\trace.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\alarm.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\alarm_heap.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\endpoint.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\endpoint_pair_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\fd_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iocp_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iomgr.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iomgr_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iomgr_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_kick.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_epoll.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_poll_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\resolve_address_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\resolve_address_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\sockaddr_utils.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_utils_common_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_utils_linux.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_utils_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_client_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_client_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_server_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_server_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_windows.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\time_averaged_stats.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_eventfd.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_nospecial.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_pipe.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_posix.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json_reader.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json_string.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json_writer.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_init.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_log.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_rpc_stats.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_tracing.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\hash_table.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\window_stats.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\byte_buffer.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\byte_buffer_queue.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\byte_buffer_reader.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\call.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\call_details.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\call_log_batch.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\channel.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\channel_create.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\client.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\completion_queue.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\event_string.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\init.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\lame_client.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\metadata_array.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\server.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\server_chttp2.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\server_create.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\surface_trace.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\alpn.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\bin_encoder.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_data.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_goaway.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_ping.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_rst_stream.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_settings.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_window_update.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\hpack_parser.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\hpack_table.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\huffsyms.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\status_conversion.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\stream_encoder.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\stream_map.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\timeout_encoding.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\varint.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2_transport.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\metadata.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\stream_op.c">
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\transport.c">
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="gpr.vcxproj">
-      <Project>{B23D3D1A-9438-4EDA-BEB6-9A0A03D17792}</Project>
-    </ProjectReference>
-    <ProjectReference Include="third_party\zlibvc.vcxproj">
-      <Project>{8fd826f8-3739-44e6-8cc8-997122e53b8d}</Project>
-    </ProjectReference>
-  </ItemGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>
-
diff --git a/vsprojects/vs2013/grpc_shared.vcxproj.filters b/vsprojects/vs2013/grpc_shared.vcxproj.filters
deleted file mode 100644
index 20dbe8c..0000000
--- a/vsprojects/vs2013/grpc_shared.vcxproj.filters
+++ /dev/null
@@ -1,736 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <ClCompile Include="..\..\src\core\httpcli\format_request.c">
-      <Filter>src\core\httpcli</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\httpcli\httpcli.c">
-      <Filter>src\core\httpcli</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\httpcli\httpcli_security_context.c">
-      <Filter>src\core\httpcli</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\httpcli\parser.c">
-      <Filter>src\core\httpcli</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\auth.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\base64.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\credentials.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\credentials_posix.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\credentials_win32.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\factories.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\google_default_credentials.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\json_token.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\secure_endpoint.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\secure_transport_setup.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\security_context.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\security\server_secure_chttp2.c">
-      <Filter>src\core\security</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\init_secure.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\secure_channel_create.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\tsi\fake_transport_security.c">
-      <Filter>src\core\tsi</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\tsi\ssl_transport_security.c">
-      <Filter>src\core\tsi</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\tsi\transport_security.c">
-      <Filter>src\core\tsi</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\call_op_string.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\census_filter.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\channel_args.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\channel_stack.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\child_channel.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\client_channel.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\client_setup.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\connected_channel.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\http_client_filter.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\http_filter.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\http_server_filter.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\metadata_buffer.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\channel\noop_filter.c">
-      <Filter>src\core\channel</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\compression\algorithm.c">
-      <Filter>src\core\compression</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\compression\message_compress.c">
-      <Filter>src\core\compression</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\debug\trace.c">
-      <Filter>src\core\debug</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\alarm.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\alarm_heap.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\endpoint.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\endpoint_pair_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\fd_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iocp_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iomgr.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iomgr_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\iomgr_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_kick.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_epoll.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_multipoller_with_poll_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\pollset_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\resolve_address_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\resolve_address_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\sockaddr_utils.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_utils_common_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_utils_linux.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_utils_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\socket_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_client_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_client_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_server_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_server_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\tcp_windows.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\time_averaged_stats.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_eventfd.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_nospecial.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_pipe.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\iomgr\wakeup_fd_posix.c">
-      <Filter>src\core\iomgr</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json.c">
-      <Filter>src\core\json</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json_reader.c">
-      <Filter>src\core\json</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json_string.c">
-      <Filter>src\core\json</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\json\json_writer.c">
-      <Filter>src\core\json</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_init.c">
-      <Filter>src\core\statistics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_log.c">
-      <Filter>src\core\statistics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_rpc_stats.c">
-      <Filter>src\core\statistics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\census_tracing.c">
-      <Filter>src\core\statistics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\hash_table.c">
-      <Filter>src\core\statistics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\statistics\window_stats.c">
-      <Filter>src\core\statistics</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\byte_buffer.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\byte_buffer_queue.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\byte_buffer_reader.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\call.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\call_details.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\call_log_batch.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\channel.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\channel_create.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\client.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\completion_queue.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\event_string.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\init.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\lame_client.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\metadata_array.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\server.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\server_chttp2.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\server_create.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\surface\surface_trace.c">
-      <Filter>src\core\surface</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\alpn.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\bin_encoder.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_data.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_goaway.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_ping.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_rst_stream.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_settings.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\frame_window_update.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\hpack_parser.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\hpack_table.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\huffsyms.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\status_conversion.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\stream_encoder.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\stream_map.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\timeout_encoding.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2\varint.c">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\chttp2_transport.c">
-      <Filter>src\core\transport</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\metadata.c">
-      <Filter>src\core\transport</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\stream_op.c">
-      <Filter>src\core\transport</Filter>
-    </ClCompile>
-    <ClCompile Include="..\..\src\core\transport\transport.c">
-      <Filter>src\core\transport</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\include\grpc\grpc_security.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\byte_buffer.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\byte_buffer_reader.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\grpc.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\grpc_http.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\grpc\status.h">
-      <Filter>include\grpc</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="..\..\src\core\httpcli\format_request.h">
-      <Filter>src\core\httpcli</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\httpcli\httpcli.h">
-      <Filter>src\core\httpcli</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\httpcli\httpcli_security_context.h">
-      <Filter>src\core\httpcli</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\httpcli\parser.h">
-      <Filter>src\core\httpcli</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\auth.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\base64.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\credentials.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\json_token.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\secure_endpoint.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\secure_transport_setup.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\security\security_context.h">
-      <Filter>src\core\security</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\tsi\fake_transport_security.h">
-      <Filter>src\core\tsi</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\tsi\ssl_transport_security.h">
-      <Filter>src\core\tsi</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\tsi\transport_security.h">
-      <Filter>src\core\tsi</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\tsi\transport_security_interface.h">
-      <Filter>src\core\tsi</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\census_filter.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\channel_args.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\channel_stack.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\child_channel.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\client_channel.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\client_setup.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\connected_channel.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\http_client_filter.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\http_filter.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\http_server_filter.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\metadata_buffer.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\channel\noop_filter.h">
-      <Filter>src\core\channel</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\compression\algorithm.h">
-      <Filter>src\core\compression</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\compression\message_compress.h">
-      <Filter>src\core\compression</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\debug\trace.h">
-      <Filter>src\core\debug</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\alarm.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\alarm_heap.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\alarm_internal.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\endpoint.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\endpoint_pair.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\fd_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\iocp_windows.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\iomgr.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\iomgr_internal.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\iomgr_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\pollset.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\pollset_kick.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\pollset_kick_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\pollset_kick_windows.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\pollset_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\pollset_windows.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\resolve_address.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr_utils.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\sockaddr_win32.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\socket_utils_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\socket_windows.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\tcp_client.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\tcp_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\tcp_server.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\tcp_windows.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\time_averaged_stats.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\wakeup_fd_pipe.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\iomgr\wakeup_fd_posix.h">
-      <Filter>src\core\iomgr</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\json\json.h">
-      <Filter>src\core\json</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\json\json_common.h">
-      <Filter>src\core\json</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\json\json_reader.h">
-      <Filter>src\core\json</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\json\json_writer.h">
-      <Filter>src\core\json</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\statistics\census_interface.h">
-      <Filter>src\core\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\statistics\census_log.h">
-      <Filter>src\core\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\statistics\census_rpc_stats.h">
-      <Filter>src\core\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\statistics\census_tracing.h">
-      <Filter>src\core\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\statistics\hash_table.h">
-      <Filter>src\core\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\statistics\window_stats.h">
-      <Filter>src\core\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\byte_buffer_queue.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\call.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\channel.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\client.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\completion_queue.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\event_string.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\init.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\server.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\surface\surface_trace.h">
-      <Filter>src\core\surface</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\alpn.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\bin_encoder.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_data.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_goaway.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_ping.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_rst_stream.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_settings.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\frame_window_update.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\hpack_parser.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\hpack_table.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\http2_errors.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\huffsyms.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\status_conversion.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\stream_encoder.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\stream_map.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\timeout_encoding.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2\varint.h">
-      <Filter>src\core\transport\chttp2</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\chttp2_transport.h">
-      <Filter>src\core\transport</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\metadata.h">
-      <Filter>src\core\transport</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\stream_op.h">
-      <Filter>src\core\transport</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\transport.h">
-      <Filter>src\core\transport</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\src\core\transport\transport_impl.h">
-      <Filter>src\core\transport</Filter>
-    </ClInclude>
-  </ItemGroup>
-
-  <ItemGroup>
-    <Filter Include="include">
-      <UniqueIdentifier>{968de0a1-346d-b75a-6f19-6a55119b8235}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="include\grpc">
-      <UniqueIdentifier>{880c644d-b84f-cfca-98bd-e145f36232ab}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src">
-      <UniqueIdentifier>{d538af37-07b2-062b-fa2a-d9f882cb2737}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core">
-      <UniqueIdentifier>{ea745680-21ea-9c5e-679b-64dc40562d08}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\channel">
-      <UniqueIdentifier>{d897b6c3-c555-234e-a589-b4f008063615}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\compression">
-      <UniqueIdentifier>{263cb913-dfe6-42a4-096b-cac231f76305}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\debug">
-      <UniqueIdentifier>{1da7ef8a-a06d-5499-b3de-19fee4a4214d}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\httpcli">
-      <UniqueIdentifier>{a9bc00ad-835f-c625-c6d9-6a1324f98b9f}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\iomgr">
-      <UniqueIdentifier>{1baf3894-af37-e647-bdbc-95dc17ed0073}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\json">
-      <UniqueIdentifier>{e665cc0e-b994-d7c5-cc18-2007392019f0}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\security">
-      <UniqueIdentifier>{1d850ac6-e639-4eab-5338-4ba40272fcc9}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\statistics">
-      <UniqueIdentifier>{0ef49896-2313-4a3f-1ce2-716fa0e5c6ca}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\surface">
-      <UniqueIdentifier>{aeb18e82-5d25-0aad-8b02-a0a3470073ce}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\transport">
-      <UniqueIdentifier>{168fa1b1-1c18-eb55-9a4d-746bc58df2c1}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\transport\chttp2">
-      <UniqueIdentifier>{b8b623c3-a168-a2b1-0d5f-b70a1f1cd8d2}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\core\tsi">
-      <UniqueIdentifier>{0b0f9ab1-efa4-7f03-e446-6fb9b5227e84}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-</Project>
-