diff --git a/BUILD b/BUILD
index 32ff4b4d9a86747c360aa1a8cfe0b03d07657dfb..a470d66f4a5981b0169d61c94386f560579fdb8b 100644
--- a/BUILD
+++ b/BUILD
@@ -159,6 +159,12 @@ cc_library(
 cc_library(
   name = "grpc",
   srcs = [
+    "src/core/ext/census/aggregation.h",
+    "src/core/ext/census/census_interface.h",
+    "src/core/ext/census/census_rpc_stats.h",
+    "src/core/ext/census/grpc_filter.h",
+    "src/core/ext/census/mlog.h",
+    "src/core/ext/census/rpc_metric_id.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
     "src/core/ext/transport/chttp2/transport/alpn.h",
@@ -182,11 +188,6 @@ cc_library(
     "src/core/ext/transport/chttp2/transport/stream_map.h",
     "src/core/ext/transport/chttp2/transport/timeout_encoding.h",
     "src/core/ext/transport/chttp2/transport/varint.h",
-    "src/core/lib/census/aggregation.h",
-    "src/core/lib/census/grpc_filter.h",
-    "src/core/lib/census/grpc_plugin.h",
-    "src/core/lib/census/mlog.h",
-    "src/core/lib/census/rpc_metric_id.h",
     "src/core/lib/channel/channel_args.h",
     "src/core/lib/channel/channel_stack.h",
     "src/core/lib/channel/channel_stack_builder.h",
@@ -268,8 +269,6 @@ cc_library(
     "src/core/lib/security/secure_endpoint.h",
     "src/core/lib/security/security_connector.h",
     "src/core/lib/security/security_context.h",
-    "src/core/lib/statistics/census_interface.h",
-    "src/core/lib/statistics/census_rpc_stats.h",
     "src/core/lib/surface/api_trace.h",
     "src/core/lib/surface/call.h",
     "src/core/lib/surface/call_test_only.h",
@@ -294,6 +293,15 @@ cc_library(
     "src/core/lib/tsi/ssl_types.h",
     "src/core/lib/tsi/transport_security.h",
     "src/core/lib/tsi/transport_security_interface.h",
+    "src/core/ext/census/context.c",
+    "src/core/ext/census/grpc_context.c",
+    "src/core/ext/census/grpc_filter.c",
+    "src/core/ext/census/grpc_plugin.c",
+    "src/core/ext/census/initialize.c",
+    "src/core/ext/census/mlog.c",
+    "src/core/ext/census/operation.c",
+    "src/core/ext/census/placeholders.c",
+    "src/core/ext/census/tracing.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -323,15 +331,6 @@ cc_library(
     "src/core/ext/transport/chttp2/transport/timeout_encoding.c",
     "src/core/ext/transport/chttp2/transport/varint.c",
     "src/core/ext/transport/chttp2/transport/writing.c",
-    "src/core/lib/census/context.c",
-    "src/core/lib/census/grpc_context.c",
-    "src/core/lib/census/grpc_filter.c",
-    "src/core/lib/census/grpc_plugin.c",
-    "src/core/lib/census/initialize.c",
-    "src/core/lib/census/mlog.c",
-    "src/core/lib/census/operation.c",
-    "src/core/lib/census/placeholders.c",
-    "src/core/lib/census/tracing.c",
     "src/core/lib/channel/channel_args.c",
     "src/core/lib/channel/channel_stack.c",
     "src/core/lib/channel/channel_stack_builder.c",
@@ -529,6 +528,12 @@ cc_library(
 cc_library(
   name = "grpc_unsecure",
   srcs = [
+    "src/core/ext/census/aggregation.h",
+    "src/core/ext/census/census_interface.h",
+    "src/core/ext/census/census_rpc_stats.h",
+    "src/core/ext/census/grpc_filter.h",
+    "src/core/ext/census/mlog.h",
+    "src/core/ext/census/rpc_metric_id.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
     "src/core/ext/transport/chttp2/transport/alpn.h",
@@ -552,11 +557,6 @@ cc_library(
     "src/core/ext/transport/chttp2/transport/stream_map.h",
     "src/core/ext/transport/chttp2/transport/timeout_encoding.h",
     "src/core/ext/transport/chttp2/transport/varint.h",
-    "src/core/lib/census/aggregation.h",
-    "src/core/lib/census/grpc_filter.h",
-    "src/core/lib/census/grpc_plugin.h",
-    "src/core/lib/census/mlog.h",
-    "src/core/lib/census/rpc_metric_id.h",
     "src/core/lib/channel/channel_args.h",
     "src/core/lib/channel/channel_stack.h",
     "src/core/lib/channel/channel_stack_builder.h",
@@ -629,8 +629,6 @@ cc_library(
     "src/core/lib/json/json_common.h",
     "src/core/lib/json/json_reader.h",
     "src/core/lib/json/json_writer.h",
-    "src/core/lib/statistics/census_interface.h",
-    "src/core/lib/statistics/census_rpc_stats.h",
     "src/core/lib/surface/api_trace.h",
     "src/core/lib/surface/call.h",
     "src/core/lib/surface/call_test_only.h",
@@ -650,6 +648,15 @@ cc_library(
     "src/core/lib/transport/static_metadata.h",
     "src/core/lib/transport/transport.h",
     "src/core/lib/transport/transport_impl.h",
+    "src/core/ext/census/context.c",
+    "src/core/ext/census/grpc_context.c",
+    "src/core/ext/census/grpc_filter.c",
+    "src/core/ext/census/grpc_plugin.c",
+    "src/core/ext/census/initialize.c",
+    "src/core/ext/census/mlog.c",
+    "src/core/ext/census/operation.c",
+    "src/core/ext/census/placeholders.c",
+    "src/core/ext/census/tracing.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -677,15 +684,6 @@ cc_library(
     "src/core/ext/transport/chttp2/transport/timeout_encoding.c",
     "src/core/ext/transport/chttp2/transport/varint.c",
     "src/core/ext/transport/chttp2/transport/writing.c",
-    "src/core/lib/census/context.c",
-    "src/core/lib/census/grpc_context.c",
-    "src/core/lib/census/grpc_filter.c",
-    "src/core/lib/census/grpc_plugin.c",
-    "src/core/lib/census/initialize.c",
-    "src/core/lib/census/mlog.c",
-    "src/core/lib/census/operation.c",
-    "src/core/lib/census/placeholders.c",
-    "src/core/lib/census/tracing.c",
     "src/core/lib/channel/channel_args.c",
     "src/core/lib/channel/channel_stack.c",
     "src/core/lib/channel/channel_stack_builder.c",
@@ -1359,6 +1357,15 @@ objc_library(
 objc_library(
   name = "grpc_objc",
   srcs = [
+    "src/core/ext/census/context.c",
+    "src/core/ext/census/grpc_context.c",
+    "src/core/ext/census/grpc_filter.c",
+    "src/core/ext/census/grpc_plugin.c",
+    "src/core/ext/census/initialize.c",
+    "src/core/ext/census/mlog.c",
+    "src/core/ext/census/operation.c",
+    "src/core/ext/census/placeholders.c",
+    "src/core/ext/census/tracing.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -1388,15 +1395,6 @@ objc_library(
     "src/core/ext/transport/chttp2/transport/timeout_encoding.c",
     "src/core/ext/transport/chttp2/transport/varint.c",
     "src/core/ext/transport/chttp2/transport/writing.c",
-    "src/core/lib/census/context.c",
-    "src/core/lib/census/grpc_context.c",
-    "src/core/lib/census/grpc_filter.c",
-    "src/core/lib/census/grpc_plugin.c",
-    "src/core/lib/census/initialize.c",
-    "src/core/lib/census/mlog.c",
-    "src/core/lib/census/operation.c",
-    "src/core/lib/census/placeholders.c",
-    "src/core/lib/census/tracing.c",
     "src/core/lib/channel/channel_args.c",
     "src/core/lib/channel/channel_stack.c",
     "src/core/lib/channel/channel_stack_builder.c",
@@ -1536,6 +1534,12 @@ objc_library(
     "include/grpc/impl/codegen/propagation_bits.h",
     "include/grpc/impl/codegen/status.h",
     "include/grpc/status.h",
+    "src/core/ext/census/aggregation.h",
+    "src/core/ext/census/census_interface.h",
+    "src/core/ext/census/census_rpc_stats.h",
+    "src/core/ext/census/grpc_filter.h",
+    "src/core/ext/census/mlog.h",
+    "src/core/ext/census/rpc_metric_id.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
     "src/core/ext/transport/chttp2/transport/alpn.h",
@@ -1559,11 +1563,6 @@ objc_library(
     "src/core/ext/transport/chttp2/transport/stream_map.h",
     "src/core/ext/transport/chttp2/transport/timeout_encoding.h",
     "src/core/ext/transport/chttp2/transport/varint.h",
-    "src/core/lib/census/aggregation.h",
-    "src/core/lib/census/grpc_filter.h",
-    "src/core/lib/census/grpc_plugin.h",
-    "src/core/lib/census/mlog.h",
-    "src/core/lib/census/rpc_metric_id.h",
     "src/core/lib/channel/channel_args.h",
     "src/core/lib/channel/channel_stack.h",
     "src/core/lib/channel/channel_stack_builder.h",
@@ -1645,8 +1644,6 @@ objc_library(
     "src/core/lib/security/secure_endpoint.h",
     "src/core/lib/security/security_connector.h",
     "src/core/lib/security/security_context.h",
-    "src/core/lib/statistics/census_interface.h",
-    "src/core/lib/statistics/census_rpc_stats.h",
     "src/core/lib/surface/api_trace.h",
     "src/core/lib/surface/call.h",
     "src/core/lib/surface/call_test_only.h",
diff --git a/Makefile b/Makefile
index d98f729ca698eb232e7ee06e9c7aefdf70b8767c..cefdd2306ae47172bc2a75c4fb7121084bf369bb 100644
--- a/Makefile
+++ b/Makefile
@@ -2452,6 +2452,15 @@ endif
 
 
 LIBGRPC_SRC = \
+    src/core/ext/census/context.c \
+    src/core/ext/census/grpc_context.c \
+    src/core/ext/census/grpc_filter.c \
+    src/core/ext/census/grpc_plugin.c \
+    src/core/ext/census/initialize.c \
+    src/core/ext/census/mlog.c \
+    src/core/ext/census/operation.c \
+    src/core/ext/census/placeholders.c \
+    src/core/ext/census/tracing.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
     src/core/ext/lb_policy/pick_first/pick_first.c \
@@ -2481,15 +2490,6 @@ LIBGRPC_SRC = \
     src/core/ext/transport/chttp2/transport/timeout_encoding.c \
     src/core/ext/transport/chttp2/transport/varint.c \
     src/core/ext/transport/chttp2/transport/writing.c \
-    src/core/lib/census/context.c \
-    src/core/lib/census/grpc_context.c \
-    src/core/lib/census/grpc_filter.c \
-    src/core/lib/census/grpc_plugin.c \
-    src/core/lib/census/initialize.c \
-    src/core/lib/census/mlog.c \
-    src/core/lib/census/operation.c \
-    src/core/lib/census/placeholders.c \
-    src/core/lib/census/tracing.c \
     src/core/lib/channel/channel_args.c \
     src/core/lib/channel/channel_stack.c \
     src/core/lib/channel/channel_stack_builder.c \
@@ -2814,6 +2814,15 @@ endif
 
 
 LIBGRPC_UNSECURE_SRC = \
+    src/core/ext/census/context.c \
+    src/core/ext/census/grpc_context.c \
+    src/core/ext/census/grpc_filter.c \
+    src/core/ext/census/grpc_plugin.c \
+    src/core/ext/census/initialize.c \
+    src/core/ext/census/mlog.c \
+    src/core/ext/census/operation.c \
+    src/core/ext/census/placeholders.c \
+    src/core/ext/census/tracing.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
     src/core/ext/lb_policy/pick_first/pick_first.c \
@@ -2841,15 +2850,6 @@ LIBGRPC_UNSECURE_SRC = \
     src/core/ext/transport/chttp2/transport/timeout_encoding.c \
     src/core/ext/transport/chttp2/transport/varint.c \
     src/core/ext/transport/chttp2/transport/writing.c \
-    src/core/lib/census/context.c \
-    src/core/lib/census/grpc_context.c \
-    src/core/lib/census/grpc_filter.c \
-    src/core/lib/census/grpc_plugin.c \
-    src/core/lib/census/initialize.c \
-    src/core/lib/census/mlog.c \
-    src/core/lib/census/operation.c \
-    src/core/lib/census/placeholders.c \
-    src/core/lib/census/tracing.c \
     src/core/lib/channel/channel_args.c \
     src/core/lib/channel/channel_stack.c \
     src/core/lib/channel/channel_stack_builder.c \
diff --git a/binding.gyp b/binding.gyp
index 5dabef3e17d21096b795ee28ad3a27ee49785dcc..972a4926a81a2333f6ba88625a0e763a8fb67091 100644
--- a/binding.gyp
+++ b/binding.gyp
@@ -558,6 +558,15 @@
         'gpr',
       ],
       'sources': [
+        'src/core/ext/census/context.c',
+        'src/core/ext/census/grpc_context.c',
+        'src/core/ext/census/grpc_filter.c',
+        'src/core/ext/census/grpc_plugin.c',
+        'src/core/ext/census/initialize.c',
+        'src/core/ext/census/mlog.c',
+        'src/core/ext/census/operation.c',
+        'src/core/ext/census/placeholders.c',
+        'src/core/ext/census/tracing.c',
         'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
         'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
         'src/core/ext/lb_policy/pick_first/pick_first.c',
@@ -587,15 +596,6 @@
         'src/core/ext/transport/chttp2/transport/timeout_encoding.c',
         'src/core/ext/transport/chttp2/transport/varint.c',
         'src/core/ext/transport/chttp2/transport/writing.c',
-        'src/core/lib/census/context.c',
-        'src/core/lib/census/grpc_context.c',
-        'src/core/lib/census/grpc_filter.c',
-        'src/core/lib/census/grpc_plugin.c',
-        'src/core/lib/census/initialize.c',
-        'src/core/lib/census/mlog.c',
-        'src/core/lib/census/operation.c',
-        'src/core/lib/census/placeholders.c',
-        'src/core/lib/census/tracing.c',
         'src/core/lib/channel/channel_args.c',
         'src/core/lib/channel/channel_stack.c',
         'src/core/lib/channel/channel_stack_builder.c',
diff --git a/build.yaml b/build.yaml
index 285d45f00818ebf74caeba92824663fbfaa567ad..549daa58e69065cdfdc0f25c1a51377b9bbf38a4 100644
--- a/build.yaml
+++ b/build.yaml
@@ -13,16 +13,23 @@ filegroups:
   public_headers:
   - include/grpc/census.h
   headers:
-  - src/core/lib/census/aggregation.h
-  - src/core/lib/census/mlog.h
-  - src/core/lib/census/rpc_metric_id.h
-  src:
-  - src/core/lib/census/context.c
-  - src/core/lib/census/initialize.c
-  - src/core/lib/census/mlog.c
-  - src/core/lib/census/operation.c
-  - src/core/lib/census/placeholders.c
-  - src/core/lib/census/tracing.c
+  - src/core/ext/census/aggregation.h
+  - src/core/ext/census/census_interface.h
+  - src/core/ext/census/census_rpc_stats.h
+  - src/core/ext/census/grpc_filter.h
+  - src/core/ext/census/mlog.h
+  - src/core/ext/census/rpc_metric_id.h
+  src:
+  - src/core/ext/census/context.c
+  - src/core/ext/census/grpc_context.c
+  - src/core/ext/census/grpc_filter.c
+  - src/core/ext/census/grpc_plugin.c
+  - src/core/ext/census/initialize.c
+  - src/core/ext/census/mlog.c
+  - src/core/ext/census/operation.c
+  - src/core/ext/census/placeholders.c
+  - src/core/ext/census/tracing.c
+  plugin: census_grpc_plugin
 - name: gpr
   public_headers:
   - include/grpc/support/alloc.h
@@ -247,8 +254,6 @@ filegroups:
   - include/grpc/grpc.h
   - include/grpc/status.h
   headers:
-  - src/core/lib/census/grpc_filter.h
-  - src/core/lib/census/grpc_plugin.h
   - src/core/lib/channel/channel_args.h
   - src/core/lib/channel/channel_stack.h
   - src/core/lib/channel/channel_stack_builder.h
@@ -321,8 +326,6 @@ filegroups:
   - src/core/lib/json/json_common.h
   - src/core/lib/json/json_reader.h
   - src/core/lib/json/json_writer.h
-  - src/core/lib/statistics/census_interface.h
-  - src/core/lib/statistics/census_rpc_stats.h
   - src/core/lib/surface/api_trace.h
   - src/core/lib/surface/call.h
   - src/core/lib/surface/call_test_only.h
@@ -343,9 +346,6 @@ filegroups:
   - src/core/lib/transport/transport.h
   - src/core/lib/transport/transport_impl.h
   src:
-  - src/core/lib/census/grpc_context.c
-  - src/core/lib/census/grpc_filter.c
-  - src/core/lib/census/grpc_plugin.c
   - src/core/lib/channel/channel_args.c
   - src/core/lib/channel/channel_stack.c
   - src/core/lib/channel/channel_stack_builder.c
diff --git a/config.m4 b/config.m4
index 1b414a1142b0eee54aa32d077badf8635b39bb59..540506ade79c190252de6095019b8de7f320a798 100644
--- a/config.m4
+++ b/config.m4
@@ -80,6 +80,15 @@ if test "$PHP_GRPC" != "no"; then
     src/core/lib/support/tmpfile_posix.c \
     src/core/lib/support/tmpfile_win32.c \
     src/core/lib/support/wrap_memcpy.c \
+    src/core/ext/census/context.c \
+    src/core/ext/census/grpc_context.c \
+    src/core/ext/census/grpc_filter.c \
+    src/core/ext/census/grpc_plugin.c \
+    src/core/ext/census/initialize.c \
+    src/core/ext/census/mlog.c \
+    src/core/ext/census/operation.c \
+    src/core/ext/census/placeholders.c \
+    src/core/ext/census/tracing.c \
     src/core/ext/lb_policy/grpclb/load_balancer_api.c \
     src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
     src/core/ext/lb_policy/pick_first/pick_first.c \
@@ -109,15 +118,6 @@ if test "$PHP_GRPC" != "no"; then
     src/core/ext/transport/chttp2/transport/timeout_encoding.c \
     src/core/ext/transport/chttp2/transport/varint.c \
     src/core/ext/transport/chttp2/transport/writing.c \
-    src/core/lib/census/context.c \
-    src/core/lib/census/grpc_context.c \
-    src/core/lib/census/grpc_filter.c \
-    src/core/lib/census/grpc_plugin.c \
-    src/core/lib/census/initialize.c \
-    src/core/lib/census/mlog.c \
-    src/core/lib/census/operation.c \
-    src/core/lib/census/placeholders.c \
-    src/core/lib/census/tracing.c \
     src/core/lib/channel/channel_args.c \
     src/core/lib/channel/channel_stack.c \
     src/core/lib/channel/channel_stack_builder.c \
@@ -547,6 +547,7 @@ if test "$PHP_GRPC" != "no"; then
   PHP_ADD_BUILD_DIR($ext_builddir/src/php/ext/grpc)
 
   PHP_ADD_BUILD_DIR($ext_builddir/src/boringssl)
+  PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/census)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/grpclb)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/lb_policy/pick_first)
@@ -556,7 +557,6 @@ if test "$PHP_GRPC" != "no"; then
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/server/insecure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/server/secure)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/ext/transport/chttp2/transport)
-  PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/census)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/channel)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/client_config)
   PHP_ADD_BUILD_DIR($ext_builddir/src/core/lib/client_config/resolvers)
diff --git a/gRPC.podspec b/gRPC.podspec
index d94905ce2a6e7715c5edb231623123bb62a6c243..f4ba753a6c3797d850bfb850c6c16142a50586c5 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -161,6 +161,12 @@ Pod::Spec.new do |s|
                       'src/core/lib/support/tmpfile_posix.c',
                       'src/core/lib/support/tmpfile_win32.c',
                       'src/core/lib/support/wrap_memcpy.c',
+                      'src/core/ext/census/aggregation.h',
+                      'src/core/ext/census/census_interface.h',
+                      'src/core/ext/census/census_rpc_stats.h',
+                      'src/core/ext/census/grpc_filter.h',
+                      'src/core/ext/census/mlog.h',
+                      'src/core/ext/census/rpc_metric_id.h',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
                       'src/core/ext/transport/chttp2/transport/alpn.h',
@@ -184,11 +190,6 @@ Pod::Spec.new do |s|
                       'src/core/ext/transport/chttp2/transport/stream_map.h',
                       'src/core/ext/transport/chttp2/transport/timeout_encoding.h',
                       'src/core/ext/transport/chttp2/transport/varint.h',
-                      'src/core/lib/census/aggregation.h',
-                      'src/core/lib/census/grpc_filter.h',
-                      'src/core/lib/census/grpc_plugin.h',
-                      'src/core/lib/census/mlog.h',
-                      'src/core/lib/census/rpc_metric_id.h',
                       'src/core/lib/channel/channel_args.h',
                       'src/core/lib/channel/channel_stack.h',
                       'src/core/lib/channel/channel_stack_builder.h',
@@ -270,8 +271,6 @@ Pod::Spec.new do |s|
                       'src/core/lib/security/secure_endpoint.h',
                       'src/core/lib/security/security_connector.h',
                       'src/core/lib/security/security_context.h',
-                      'src/core/lib/statistics/census_interface.h',
-                      'src/core/lib/statistics/census_rpc_stats.h',
                       'src/core/lib/surface/api_trace.h',
                       'src/core/lib/surface/call.h',
                       'src/core/lib/surface/call_test_only.h',
@@ -313,6 +312,15 @@ Pod::Spec.new do |s|
                       'include/grpc/impl/codegen/propagation_bits.h',
                       'include/grpc/impl/codegen/status.h',
                       'include/grpc/status.h',
+                      'src/core/ext/census/context.c',
+                      'src/core/ext/census/grpc_context.c',
+                      'src/core/ext/census/grpc_filter.c',
+                      'src/core/ext/census/grpc_plugin.c',
+                      'src/core/ext/census/initialize.c',
+                      'src/core/ext/census/mlog.c',
+                      'src/core/ext/census/operation.c',
+                      'src/core/ext/census/placeholders.c',
+                      'src/core/ext/census/tracing.c',
                       'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
                       'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
                       'src/core/ext/lb_policy/pick_first/pick_first.c',
@@ -342,15 +350,6 @@ Pod::Spec.new do |s|
                       'src/core/ext/transport/chttp2/transport/timeout_encoding.c',
                       'src/core/ext/transport/chttp2/transport/varint.c',
                       'src/core/ext/transport/chttp2/transport/writing.c',
-                      'src/core/lib/census/context.c',
-                      'src/core/lib/census/grpc_context.c',
-                      'src/core/lib/census/grpc_filter.c',
-                      'src/core/lib/census/grpc_plugin.c',
-                      'src/core/lib/census/initialize.c',
-                      'src/core/lib/census/mlog.c',
-                      'src/core/lib/census/operation.c',
-                      'src/core/lib/census/placeholders.c',
-                      'src/core/lib/census/tracing.c',
                       'src/core/lib/channel/channel_args.c',
                       'src/core/lib/channel/channel_stack.c',
                       'src/core/lib/channel/channel_stack_builder.c',
@@ -491,6 +490,12 @@ Pod::Spec.new do |s|
                               'src/core/lib/support/thd_internal.h',
                               'src/core/lib/support/time_precise.h',
                               'src/core/lib/support/tmpfile.h',
+                              'src/core/ext/census/aggregation.h',
+                              'src/core/ext/census/census_interface.h',
+                              'src/core/ext/census/census_rpc_stats.h',
+                              'src/core/ext/census/grpc_filter.h',
+                              'src/core/ext/census/mlog.h',
+                              'src/core/ext/census/rpc_metric_id.h',
                               'src/core/ext/lb_policy/grpclb/load_balancer_api.h',
                               'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h',
                               'src/core/ext/transport/chttp2/transport/alpn.h',
@@ -514,11 +519,6 @@ Pod::Spec.new do |s|
                               'src/core/ext/transport/chttp2/transport/stream_map.h',
                               'src/core/ext/transport/chttp2/transport/timeout_encoding.h',
                               'src/core/ext/transport/chttp2/transport/varint.h',
-                              'src/core/lib/census/aggregation.h',
-                              'src/core/lib/census/grpc_filter.h',
-                              'src/core/lib/census/grpc_plugin.h',
-                              'src/core/lib/census/mlog.h',
-                              'src/core/lib/census/rpc_metric_id.h',
                               'src/core/lib/channel/channel_args.h',
                               'src/core/lib/channel/channel_stack.h',
                               'src/core/lib/channel/channel_stack_builder.h',
@@ -600,8 +600,6 @@ Pod::Spec.new do |s|
                               'src/core/lib/security/secure_endpoint.h',
                               'src/core/lib/security/security_connector.h',
                               'src/core/lib/security/security_context.h',
-                              'src/core/lib/statistics/census_interface.h',
-                              'src/core/lib/statistics/census_rpc_stats.h',
                               'src/core/lib/surface/api_trace.h',
                               'src/core/lib/surface/call.h',
                               'src/core/lib/surface/call_test_only.h',
diff --git a/grpc.gemspec b/grpc.gemspec
index e96bedb5875d5330d3d19a287784d2c01b8c14a4..7941a1f4857f17d68b1b7fd299bd29b0e31db4d0 100755
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -157,6 +157,12 @@ Gem::Specification.new do |s|
   s.files += %w( include/grpc/impl/codegen/propagation_bits.h )
   s.files += %w( include/grpc/impl/codegen/status.h )
   s.files += %w( include/grpc/status.h )
+  s.files += %w( src/core/ext/census/aggregation.h )
+  s.files += %w( src/core/ext/census/census_interface.h )
+  s.files += %w( src/core/ext/census/census_rpc_stats.h )
+  s.files += %w( src/core/ext/census/grpc_filter.h )
+  s.files += %w( src/core/ext/census/mlog.h )
+  s.files += %w( src/core/ext/census/rpc_metric_id.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.h )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h )
   s.files += %w( src/core/ext/transport/chttp2/transport/alpn.h )
@@ -180,11 +186,6 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/transport/chttp2/transport/stream_map.h )
   s.files += %w( src/core/ext/transport/chttp2/transport/timeout_encoding.h )
   s.files += %w( src/core/ext/transport/chttp2/transport/varint.h )
-  s.files += %w( src/core/lib/census/aggregation.h )
-  s.files += %w( src/core/lib/census/grpc_filter.h )
-  s.files += %w( src/core/lib/census/grpc_plugin.h )
-  s.files += %w( src/core/lib/census/mlog.h )
-  s.files += %w( src/core/lib/census/rpc_metric_id.h )
   s.files += %w( src/core/lib/channel/channel_args.h )
   s.files += %w( src/core/lib/channel/channel_stack.h )
   s.files += %w( src/core/lib/channel/channel_stack_builder.h )
@@ -266,8 +267,6 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/lib/security/secure_endpoint.h )
   s.files += %w( src/core/lib/security/security_connector.h )
   s.files += %w( src/core/lib/security/security_context.h )
-  s.files += %w( src/core/lib/statistics/census_interface.h )
-  s.files += %w( src/core/lib/statistics/census_rpc_stats.h )
   s.files += %w( src/core/lib/surface/api_trace.h )
   s.files += %w( src/core/lib/surface/call.h )
   s.files += %w( src/core/lib/surface/call_test_only.h )
@@ -296,6 +295,15 @@ Gem::Specification.new do |s|
   s.files += %w( third_party/nanopb/pb_common.h )
   s.files += %w( third_party/nanopb/pb_decode.h )
   s.files += %w( third_party/nanopb/pb_encode.h )
+  s.files += %w( src/core/ext/census/context.c )
+  s.files += %w( src/core/ext/census/grpc_context.c )
+  s.files += %w( src/core/ext/census/grpc_filter.c )
+  s.files += %w( src/core/ext/census/grpc_plugin.c )
+  s.files += %w( src/core/ext/census/initialize.c )
+  s.files += %w( src/core/ext/census/mlog.c )
+  s.files += %w( src/core/ext/census/operation.c )
+  s.files += %w( src/core/ext/census/placeholders.c )
+  s.files += %w( src/core/ext/census/tracing.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/load_balancer_api.c )
   s.files += %w( src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c )
   s.files += %w( src/core/ext/lb_policy/pick_first/pick_first.c )
@@ -325,15 +333,6 @@ Gem::Specification.new do |s|
   s.files += %w( src/core/ext/transport/chttp2/transport/timeout_encoding.c )
   s.files += %w( src/core/ext/transport/chttp2/transport/varint.c )
   s.files += %w( src/core/ext/transport/chttp2/transport/writing.c )
-  s.files += %w( src/core/lib/census/context.c )
-  s.files += %w( src/core/lib/census/grpc_context.c )
-  s.files += %w( src/core/lib/census/grpc_filter.c )
-  s.files += %w( src/core/lib/census/grpc_plugin.c )
-  s.files += %w( src/core/lib/census/initialize.c )
-  s.files += %w( src/core/lib/census/mlog.c )
-  s.files += %w( src/core/lib/census/operation.c )
-  s.files += %w( src/core/lib/census/placeholders.c )
-  s.files += %w( src/core/lib/census/tracing.c )
   s.files += %w( src/core/lib/channel/channel_args.c )
   s.files += %w( src/core/lib/channel/channel_stack.c )
   s.files += %w( src/core/lib/channel/channel_stack_builder.c )
diff --git a/package.json b/package.json
index cbcfc19ee3cb4f1ae4a34655103dc9690a331bc8..fc5cce953af74e4373909ec75a9b4c4ac43cef7c 100644
--- a/package.json
+++ b/package.json
@@ -100,6 +100,12 @@
     "include/grpc/impl/codegen/propagation_bits.h",
     "include/grpc/impl/codegen/status.h",
     "include/grpc/status.h",
+    "src/core/ext/census/aggregation.h",
+    "src/core/ext/census/census_interface.h",
+    "src/core/ext/census/census_rpc_stats.h",
+    "src/core/ext/census/grpc_filter.h",
+    "src/core/ext/census/mlog.h",
+    "src/core/ext/census/rpc_metric_id.h",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.h",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h",
     "src/core/ext/transport/chttp2/transport/alpn.h",
@@ -123,11 +129,6 @@
     "src/core/ext/transport/chttp2/transport/stream_map.h",
     "src/core/ext/transport/chttp2/transport/timeout_encoding.h",
     "src/core/ext/transport/chttp2/transport/varint.h",
-    "src/core/lib/census/aggregation.h",
-    "src/core/lib/census/grpc_filter.h",
-    "src/core/lib/census/grpc_plugin.h",
-    "src/core/lib/census/mlog.h",
-    "src/core/lib/census/rpc_metric_id.h",
     "src/core/lib/channel/channel_args.h",
     "src/core/lib/channel/channel_stack.h",
     "src/core/lib/channel/channel_stack_builder.h",
@@ -209,8 +210,6 @@
     "src/core/lib/security/secure_endpoint.h",
     "src/core/lib/security/security_connector.h",
     "src/core/lib/security/security_context.h",
-    "src/core/lib/statistics/census_interface.h",
-    "src/core/lib/statistics/census_rpc_stats.h",
     "src/core/lib/surface/api_trace.h",
     "src/core/lib/surface/call.h",
     "src/core/lib/surface/call_test_only.h",
@@ -239,6 +238,15 @@
     "third_party/nanopb/pb_common.h",
     "third_party/nanopb/pb_decode.h",
     "third_party/nanopb/pb_encode.h",
+    "src/core/ext/census/context.c",
+    "src/core/ext/census/grpc_context.c",
+    "src/core/ext/census/grpc_filter.c",
+    "src/core/ext/census/grpc_plugin.c",
+    "src/core/ext/census/initialize.c",
+    "src/core/ext/census/mlog.c",
+    "src/core/ext/census/operation.c",
+    "src/core/ext/census/placeholders.c",
+    "src/core/ext/census/tracing.c",
     "src/core/ext/lb_policy/grpclb/load_balancer_api.c",
     "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c",
     "src/core/ext/lb_policy/pick_first/pick_first.c",
@@ -268,15 +276,6 @@
     "src/core/ext/transport/chttp2/transport/timeout_encoding.c",
     "src/core/ext/transport/chttp2/transport/varint.c",
     "src/core/ext/transport/chttp2/transport/writing.c",
-    "src/core/lib/census/context.c",
-    "src/core/lib/census/grpc_context.c",
-    "src/core/lib/census/grpc_filter.c",
-    "src/core/lib/census/grpc_plugin.c",
-    "src/core/lib/census/initialize.c",
-    "src/core/lib/census/mlog.c",
-    "src/core/lib/census/operation.c",
-    "src/core/lib/census/placeholders.c",
-    "src/core/lib/census/tracing.c",
     "src/core/lib/channel/channel_args.c",
     "src/core/lib/channel/channel_stack.c",
     "src/core/lib/channel/channel_stack_builder.c",
diff --git a/package.xml b/package.xml
index 1caf850c561583d8aa728e68c3291d78be7a9ac3..0538d73c049e5d7f512db81ae37a971acec245a0 100644
--- a/package.xml
+++ b/package.xml
@@ -161,6 +161,12 @@
     <file baseinstalldir="/" name="include/grpc/impl/codegen/propagation_bits.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/impl/codegen/status.h" role="src" />
     <file baseinstalldir="/" name="include/grpc/status.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/aggregation.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/census_interface.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/census_rpc_stats.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/grpc_filter.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/mlog.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/rpc_metric_id.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/alpn.h" role="src" />
@@ -184,11 +190,6 @@
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/stream_map.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/timeout_encoding.h" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/varint.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/aggregation.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/grpc_filter.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/grpc_plugin.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/mlog.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/rpc_metric_id.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/channel_args.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/channel_stack.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/channel_stack_builder.h" role="src" />
@@ -270,8 +271,6 @@
     <file baseinstalldir="/" name="src/core/lib/security/secure_endpoint.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/security/security_connector.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/security/security_context.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/statistics/census_interface.h" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/statistics/census_rpc_stats.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/surface/api_trace.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/surface/call.h" role="src" />
     <file baseinstalldir="/" name="src/core/lib/surface/call_test_only.h" role="src" />
@@ -300,6 +299,15 @@
     <file baseinstalldir="/" name="third_party/nanopb/pb_common.h" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_decode.h" role="src" />
     <file baseinstalldir="/" name="third_party/nanopb/pb_encode.h" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/context.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/grpc_context.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/grpc_filter.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/grpc_plugin.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/initialize.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/mlog.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/operation.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/placeholders.c" role="src" />
+    <file baseinstalldir="/" name="src/core/ext/census/tracing.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/load_balancer_api.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/lb_policy/pick_first/pick_first.c" role="src" />
@@ -329,15 +337,6 @@
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/timeout_encoding.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/varint.c" role="src" />
     <file baseinstalldir="/" name="src/core/ext/transport/chttp2/transport/writing.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/context.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/grpc_context.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/grpc_filter.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/grpc_plugin.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/initialize.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/mlog.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/operation.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/placeholders.c" role="src" />
-    <file baseinstalldir="/" name="src/core/lib/census/tracing.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/channel_args.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/channel_stack.c" role="src" />
     <file baseinstalldir="/" name="src/core/lib/channel/channel_stack_builder.c" role="src" />
diff --git a/src/core/lib/census/README.md b/src/core/ext/census/README.md
similarity index 100%
rename from src/core/lib/census/README.md
rename to src/core/ext/census/README.md
diff --git a/src/core/lib/census/aggregation.h b/src/core/ext/census/aggregation.h
similarity index 95%
rename from src/core/lib/census/aggregation.h
rename to src/core/ext/census/aggregation.h
index 088ad808efd10d0530f0f95547c09f3ba3a242ca..45f789c772b84f2b98dfc006b52527cb71c0cd32 100644
--- a/src/core/lib/census/aggregation.h
+++ b/src/core/ext/census/aggregation.h
@@ -33,8 +33,8 @@
 
 #include <stddef.h>
 
-#ifndef GRPC_CORE_LIB_CENSUS_AGGREGATION_H
-#define GRPC_CORE_LIB_CENSUS_AGGREGATION_H
+#ifndef GRPC_CORE_EXT_CENSUS_AGGREGATION_H
+#define GRPC_CORE_EXT_CENSUS_AGGREGATION_H
 
 /** Structure used to describe an aggregation type. */
 struct census_aggregation_ops {
@@ -63,4 +63,4 @@ struct census_aggregation_ops {
   size_t (*print)(const void *aggregation, char *buffer, size_t n);
 };
 
-#endif /* GRPC_CORE_LIB_CENSUS_AGGREGATION_H */
+#endif /* GRPC_CORE_EXT_CENSUS_AGGREGATION_H */
diff --git a/src/core/lib/statistics/census_init.c b/src/core/ext/census/census_init.c
similarity index 91%
rename from src/core/lib/statistics/census_init.c
rename to src/core/ext/census/census_init.c
index 7a8b8b660a9e1db5b50cb5a26349b6df3261d650..690b09e78945afd3cd32de4710766d48d03cc1f0 100644
--- a/src/core/lib/statistics/census_init.c
+++ b/src/core/ext/census/census_init.c
@@ -31,11 +31,11 @@
  *
  */
 
-#include "src/core/lib/statistics/census_interface.h"
+#include "src/core/ext/census/census_interface.h"
 
 #include <grpc/support/log.h>
-#include "src/core/lib/statistics/census_rpc_stats.h"
-#include "src/core/lib/statistics/census_tracing.h"
+#include "src/core/ext/census/census_rpc_stats.h"
+#include "src/core/ext/census/census_tracing.h"
 
 void census_init(void) {
   census_tracing_init();
diff --git a/src/core/lib/statistics/census_interface.h b/src/core/ext/census/census_interface.h
similarity index 94%
rename from src/core/lib/statistics/census_interface.h
rename to src/core/ext/census/census_interface.h
index 4dce81b0c755317c49d2267df469de18ccde16d5..57e75f56ee7f87a5d27b5cb9e5bf5e9ea2126fae 100644
--- a/src/core/lib/statistics/census_interface.h
+++ b/src/core/ext/census/census_interface.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_STATISTICS_CENSUS_INTERFACE_H
-#define GRPC_CORE_LIB_STATISTICS_CENSUS_INTERFACE_H
+#ifndef GRPC_CORE_EXT_CENSUS_CENSUS_INTERFACE_H
+#define GRPC_CORE_EXT_CENSUS_CENSUS_INTERFACE_H
 
 #include <grpc/support/port_platform.h>
 
@@ -73,4 +73,4 @@ census_op_id census_tracing_start_op(void);
 /* Ends tracing. Calling this function will invalidate the input op_id. */
 void census_tracing_end_op(census_op_id op_id);
 
-#endif /* GRPC_CORE_LIB_STATISTICS_CENSUS_INTERFACE_H */
+#endif /* GRPC_CORE_EXT_CENSUS_CENSUS_INTERFACE_H */
diff --git a/src/core/lib/statistics/census_log.c b/src/core/ext/census/census_log.c
similarity index 99%
rename from src/core/lib/statistics/census_log.c
rename to src/core/ext/census/census_log.c
index 782b34e3a16690a6319be7ac18309c163584c6c1..9a7331adc2f73935c48c37a91981f98170a1740c 100644
--- a/src/core/lib/statistics/census_log.c
+++ b/src/core/ext/census/census_log.c
@@ -89,7 +89,7 @@
    include the name of the structure, which will be passed as the first
    argument. E.g. cl_block_initialize() will initialize a cl_block.
 */
-#include "src/core/lib/statistics/census_log.h"
+#include "src/core/ext/census/census_log.h"
 #include <grpc/support/alloc.h>
 #include <grpc/support/atm.h>
 #include <grpc/support/cpu.h>
diff --git a/src/core/lib/statistics/census_log.h b/src/core/ext/census/census_log.h
similarity index 96%
rename from src/core/lib/statistics/census_log.h
rename to src/core/ext/census/census_log.h
index 6efcef49a464d3cf06fa92e20f105cd576c45557..534ecc5705a7d870bf63d9b8a90cbba129026de2 100644
--- a/src/core/lib/statistics/census_log.h
+++ b/src/core/ext/census/census_log.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_STATISTICS_CENSUS_LOG_H
-#define GRPC_CORE_LIB_STATISTICS_CENSUS_LOG_H
+#ifndef GRPC_CORE_EXT_CENSUS_CENSUS_LOG_H
+#define GRPC_CORE_EXT_CENSUS_CENSUS_LOG_H
 
 #include <stddef.h>
 
@@ -88,4 +88,4 @@ size_t census_log_remaining_space(void);
    out-of-space. */
 int census_log_out_of_space_count(void);
 
-#endif /* GRPC_CORE_LIB_STATISTICS_CENSUS_LOG_H */
+#endif /* GRPC_CORE_EXT_CENSUS_CENSUS_LOG_H */
diff --git a/src/core/lib/statistics/census_rpc_stats.c b/src/core/ext/census/census_rpc_stats.c
similarity index 97%
rename from src/core/lib/statistics/census_rpc_stats.c
rename to src/core/ext/census/census_rpc_stats.c
index 33522e0f40d7941403e9a0510dd8cfe17acaf56f..09ee12d54bf8f4f1f21edfd942761b89adfbb0ff 100644
--- a/src/core/lib/statistics/census_rpc_stats.c
+++ b/src/core/ext/census/census_rpc_stats.c
@@ -36,11 +36,11 @@
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 #include <grpc/support/sync.h>
-#include "src/core/lib/statistics/census_interface.h"
-#include "src/core/lib/statistics/census_rpc_stats.h"
-#include "src/core/lib/statistics/census_tracing.h"
-#include "src/core/lib/statistics/hash_table.h"
-#include "src/core/lib/statistics/window_stats.h"
+#include "src/core/ext/census/census_interface.h"
+#include "src/core/ext/census/census_rpc_stats.h"
+#include "src/core/ext/census/census_tracing.h"
+#include "src/core/ext/census/hash_table.h"
+#include "src/core/ext/census/window_stats.h"
 #include "src/core/lib/support/murmur_hash.h"
 #include "src/core/lib/support/string.h"
 
diff --git a/src/core/lib/statistics/census_rpc_stats.h b/src/core/ext/census/census_rpc_stats.h
similarity index 94%
rename from src/core/lib/statistics/census_rpc_stats.h
rename to src/core/ext/census/census_rpc_stats.h
index 385364236255632d909eec69417b0da28886c145..7e4d8d164074ce4d8142790e5438c0718f2cc120 100644
--- a/src/core/lib/statistics/census_rpc_stats.h
+++ b/src/core/ext/census/census_rpc_stats.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_STATISTICS_CENSUS_RPC_STATS_H
-#define GRPC_CORE_LIB_STATISTICS_CENSUS_RPC_STATS_H
+#ifndef GRPC_CORE_EXT_CENSUS_CENSUS_RPC_STATS_H
+#define GRPC_CORE_EXT_CENSUS_CENSUS_RPC_STATS_H
 
 #include <grpc/support/port_platform.h>
-#include "src/core/lib/statistics/census_interface.h"
+#include "src/core/ext/census/census_interface.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -98,4 +98,4 @@ void census_stats_store_shutdown(void);
 }
 #endif
 
-#endif /* GRPC_CORE_LIB_STATISTICS_CENSUS_RPC_STATS_H */
+#endif /* GRPC_CORE_EXT_CENSUS_CENSUS_RPC_STATS_H */
diff --git a/src/core/lib/statistics/census_tracing.c b/src/core/ext/census/census_tracing.c
similarity index 97%
rename from src/core/lib/statistics/census_tracing.c
rename to src/core/ext/census/census_tracing.c
index ff71e796adaa83e5aa7c086e9a6013a1d58db22a..f893dc98646cad619d1966cf1e5ff9eb3bdc891c 100644
--- a/src/core/lib/statistics/census_tracing.c
+++ b/src/core/ext/census/census_tracing.c
@@ -31,8 +31,8 @@
  *
  */
 
-#include "src/core/lib/statistics/census_tracing.h"
-#include "src/core/lib/statistics/census_interface.h"
+#include "src/core/ext/census/census_tracing.h"
+#include "src/core/ext/census/census_interface.h"
 
 #include <stdio.h>
 #include <string.h>
@@ -41,7 +41,7 @@
 #include <grpc/support/log.h>
 #include <grpc/support/port_platform.h>
 #include <grpc/support/sync.h>
-#include "src/core/lib/statistics/hash_table.h"
+#include "src/core/ext/census/hash_table.h"
 #include "src/core/lib/support/string.h"
 
 void census_trace_obj_destroy(census_trace_obj *obj) {
diff --git a/src/core/lib/statistics/census_tracing.h b/src/core/ext/census/census_tracing.h
similarity index 94%
rename from src/core/lib/statistics/census_tracing.h
rename to src/core/ext/census/census_tracing.h
index 7b2db1e008ba3bc7629539a7dfc29c9200714a75..42a0d7403ef5e696b0ee90194282475e03272e0e 100644
--- a/src/core/lib/statistics/census_tracing.h
+++ b/src/core/ext/census/census_tracing.h
@@ -31,11 +31,11 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_STATISTICS_CENSUS_TRACING_H
-#define GRPC_CORE_LIB_STATISTICS_CENSUS_TRACING_H
+#ifndef GRPC_CORE_EXT_CENSUS_CENSUS_TRACING_H
+#define GRPC_CORE_EXT_CENSUS_CENSUS_TRACING_H
 
 #include <grpc/support/time.h>
-#include "src/core/lib/statistics/census_rpc_stats.h"
+#include "src/core/ext/census/census_rpc_stats.h"
 
 /* WARNING: The data structures and APIs provided by this file are for GRPC
    library's internal use ONLY. They might be changed in backward-incompatible
@@ -93,4 +93,4 @@ census_trace_obj **census_get_active_ops(int *num_active_ops);
 }
 #endif
 
-#endif /* GRPC_CORE_LIB_STATISTICS_CENSUS_TRACING_H */
+#endif /* GRPC_CORE_EXT_CENSUS_CENSUS_TRACING_H */
diff --git a/src/core/lib/census/context.c b/src/core/ext/census/context.c
similarity index 100%
rename from src/core/lib/census/context.c
rename to src/core/ext/census/context.c
diff --git a/src/core/lib/census/grpc_context.c b/src/core/ext/census/grpc_context.c
similarity index 100%
rename from src/core/lib/census/grpc_context.c
rename to src/core/ext/census/grpc_context.c
diff --git a/src/core/lib/census/grpc_filter.c b/src/core/ext/census/grpc_filter.c
similarity index 97%
rename from src/core/lib/census/grpc_filter.c
rename to src/core/ext/census/grpc_filter.c
index 9bca2d434dd4ce5574208011cb858e39daebc0d1..abfb3bb5f0e16699efbc3a0253d0dda4798d12ed 100644
--- a/src/core/lib/census/grpc_filter.c
+++ b/src/core/ext/census/grpc_filter.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/census/grpc_filter.h"
+#include "src/core/ext/census/grpc_filter.h"
 
 #include <stdio.h>
 #include <string.h>
@@ -42,9 +42,9 @@
 #include <grpc/support/slice.h>
 #include <grpc/support/time.h>
 
+#include "src/core/ext/census/census_interface.h"
+#include "src/core/ext/census/census_rpc_stats.h"
 #include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/statistics/census_interface.h"
-#include "src/core/lib/statistics/census_rpc_stats.h"
 #include "src/core/lib/transport/static_metadata.h"
 
 typedef struct call_data {
diff --git a/src/core/lib/census/grpc_filter.h b/src/core/ext/census/grpc_filter.h
similarity index 93%
rename from src/core/lib/census/grpc_filter.h
rename to src/core/ext/census/grpc_filter.h
index e747fe6590f7e26dc4510c88a462be301b498731..a39bd82224893d7c1a423e098949dd55e4441591 100644
--- a/src/core/lib/census/grpc_filter.h
+++ b/src/core/ext/census/grpc_filter.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CENSUS_GRPC_FILTER_H
-#define GRPC_CORE_LIB_CENSUS_GRPC_FILTER_H
+#ifndef GRPC_CORE_EXT_CENSUS_GRPC_FILTER_H
+#define GRPC_CORE_EXT_CENSUS_GRPC_FILTER_H
 
 #include "src/core/lib/channel/channel_stack.h"
 
@@ -41,4 +41,4 @@
 extern const grpc_channel_filter grpc_client_census_filter;
 extern const grpc_channel_filter grpc_server_census_filter;
 
-#endif /* GRPC_CORE_LIB_CENSUS_GRPC_FILTER_H */
+#endif /* GRPC_CORE_EXT_CENSUS_GRPC_FILTER_H */
diff --git a/src/core/lib/census/grpc_plugin.c b/src/core/ext/census/grpc_plugin.c
similarity index 94%
rename from src/core/lib/census/grpc_plugin.c
rename to src/core/ext/census/grpc_plugin.c
index 7f6df11f0098a0c50b12526eed667d7080e32f70..0f15ecb2c22c56582c4f5bc080aa17247221c3e2 100644
--- a/src/core/lib/census/grpc_plugin.c
+++ b/src/core/ext/census/grpc_plugin.c
@@ -31,13 +31,11 @@
  *
  */
 
-#include "src/core/lib/census/grpc_plugin.h"
-
 #include <limits.h>
 
 #include <grpc/census.h>
 
-#include "src/core/lib/census/grpc_filter.h"
+#include "src/core/ext/census/grpc_filter.h"
 #include "src/core/lib/channel/channel_stack_builder.h"
 #include "src/core/lib/surface/channel_init.h"
 
@@ -67,4 +65,4 @@ void census_grpc_plugin_init(void) {
                                    maybe_add_census_filter, NULL);
 }
 
-void census_grpc_plugin_destroy(void) { census_shutdown(); }
+void census_grpc_plugin_shutdown(void) { census_shutdown(); }
diff --git a/src/core/lib/statistics/hash_table.c b/src/core/ext/census/hash_table.c
similarity index 99%
rename from src/core/lib/statistics/hash_table.c
rename to src/core/ext/census/hash_table.c
index 79481c3eb1dcbd491fa6bc8db8a05aec0559a457..ee6fdfc6e8621aec0e3102d014b6eba13395c55b 100644
--- a/src/core/lib/statistics/hash_table.c
+++ b/src/core/ext/census/hash_table.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/statistics/hash_table.h"
+#include "src/core/ext/census/hash_table.h"
 
 #include <stddef.h>
 #include <stdio.h>
diff --git a/src/core/lib/statistics/hash_table.h b/src/core/ext/census/hash_table.h
similarity index 97%
rename from src/core/lib/statistics/hash_table.h
rename to src/core/ext/census/hash_table.h
index 45984a1c41cd6208d70ec64f6a34758eb0fff704..30ea4264a294db0b5574302a0953f18f2c4c42bf 100644
--- a/src/core/lib/statistics/hash_table.h
+++ b/src/core/ext/census/hash_table.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_STATISTICS_HASH_TABLE_H
-#define GRPC_CORE_LIB_STATISTICS_HASH_TABLE_H
+#ifndef GRPC_CORE_EXT_CENSUS_HASH_TABLE_H
+#define GRPC_CORE_EXT_CENSUS_HASH_TABLE_H
 
 #include <stddef.h>
 
@@ -128,4 +128,4 @@ typedef void (*census_ht_itr_cb)(census_ht_key key, const void *val_ptr,
    should not invalidate data entries. */
 uint64_t census_ht_for_all(const census_ht *ht, census_ht_itr_cb);
 
-#endif /* GRPC_CORE_LIB_STATISTICS_HASH_TABLE_H */
+#endif /* GRPC_CORE_EXT_CENSUS_HASH_TABLE_H */
diff --git a/src/core/lib/census/initialize.c b/src/core/ext/census/initialize.c
similarity index 100%
rename from src/core/lib/census/initialize.c
rename to src/core/ext/census/initialize.c
diff --git a/src/core/lib/census/mlog.c b/src/core/ext/census/mlog.c
similarity index 99%
rename from src/core/lib/census/mlog.c
rename to src/core/ext/census/mlog.c
index ce060a2d852e39f50e53859e9ab14f63430a691c..698b7096ab6e6c70d82e13ff942e800f57eb09e9 100644
--- a/src/core/lib/census/mlog.c
+++ b/src/core/ext/census/mlog.c
@@ -88,7 +88,7 @@
 // include the name of the structure, which will be passed as the first
 // argument. E.g. cl_block_initialize() will initialize a cl_block.
 
-#include "src/core/lib/census/mlog.h"
+#include "src/core/ext/census/mlog.h"
 #include <grpc/support/alloc.h>
 #include <grpc/support/atm.h>
 #include <grpc/support/cpu.h>
diff --git a/src/core/lib/census/mlog.h b/src/core/ext/census/mlog.h
similarity index 97%
rename from src/core/lib/census/mlog.h
rename to src/core/ext/census/mlog.h
index dea43de7251e1ce58f86aaacdb29f0ab3a44bf3c..a256426f91b377ec16a8771f0355153968727203 100644
--- a/src/core/lib/census/mlog.h
+++ b/src/core/ext/census/mlog.h
@@ -33,8 +33,8 @@
 
 /* A very fast in-memory log, optimized for multiple writers. */
 
-#ifndef GRPC_CORE_LIB_CENSUS_MLOG_H
-#define GRPC_CORE_LIB_CENSUS_MLOG_H
+#ifndef GRPC_CORE_EXT_CENSUS_MLOG_H
+#define GRPC_CORE_EXT_CENSUS_MLOG_H
 
 #include <grpc/support/port_platform.h>
 #include <stddef.h>
@@ -92,4 +92,4 @@ size_t census_log_remaining_space(void);
    out-of-space. */
 int64_t census_log_out_of_space_count(void);
 
-#endif /* GRPC_CORE_LIB_CENSUS_MLOG_H */
+#endif /* GRPC_CORE_EXT_CENSUS_MLOG_H */
diff --git a/src/core/lib/census/operation.c b/src/core/ext/census/operation.c
similarity index 100%
rename from src/core/lib/census/operation.c
rename to src/core/ext/census/operation.c
diff --git a/src/core/lib/census/placeholders.c b/src/core/ext/census/placeholders.c
similarity index 100%
rename from src/core/lib/census/placeholders.c
rename to src/core/ext/census/placeholders.c
diff --git a/src/core/lib/census/rpc_metric_id.h b/src/core/ext/census/rpc_metric_id.h
similarity index 93%
rename from src/core/lib/census/rpc_metric_id.h
rename to src/core/ext/census/rpc_metric_id.h
index 0f05b7de8adf7d1b8eb0b42ada34386ad394c1dd..888ec500a731641dc4a5387ea91dc3ba89fd7476 100644
--- a/src/core/lib/census/rpc_metric_id.h
+++ b/src/core/ext/census/rpc_metric_id.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_CENSUS_RPC_METRIC_ID_H
-#define GRPC_CORE_LIB_CENSUS_RPC_METRIC_ID_H
+#ifndef GRPC_CORE_EXT_CENSUS_RPC_METRIC_ID_H
+#define GRPC_CORE_EXT_CENSUS_RPC_METRIC_ID_H
 
 /* Metric ID's used for RPC measurements. */
 /* Count of client requests sent. */
@@ -48,4 +48,4 @@
 /* Server side request latency. */
 #define CENSUS_METRIC_RPC_SERVER_LATENCY ((uint32_t)5)
 
-#endif /* GRPC_CORE_LIB_CENSUS_RPC_METRIC_ID_H */
+#endif /* GRPC_CORE_EXT_CENSUS_RPC_METRIC_ID_H */
diff --git a/src/core/lib/census/tracing.c b/src/core/ext/census/tracing.c
similarity index 100%
rename from src/core/lib/census/tracing.c
rename to src/core/ext/census/tracing.c
diff --git a/src/core/lib/statistics/window_stats.c b/src/core/ext/census/window_stats.c
similarity index 99%
rename from src/core/lib/statistics/window_stats.c
rename to src/core/ext/census/window_stats.c
index 9185e98d604dc01a9d6c714b03984111a6102d26..5f7bd9952e09bcb58b321d9cb2898e2bc493152c 100644
--- a/src/core/lib/statistics/window_stats.c
+++ b/src/core/ext/census/window_stats.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/statistics/window_stats.h"
+#include "src/core/ext/census/window_stats.h"
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
 #include <grpc/support/time.h>
diff --git a/src/core/lib/statistics/window_stats.h b/src/core/ext/census/window_stats.h
similarity index 98%
rename from src/core/lib/statistics/window_stats.h
rename to src/core/ext/census/window_stats.h
index 629c08b8d5154f2fe9acad58c4b2d0d365cecceb..25658c9ce0e82f57c3618aca8d7b85781529e296 100644
--- a/src/core/lib/statistics/window_stats.h
+++ b/src/core/ext/census/window_stats.h
@@ -31,8 +31,8 @@
  *
  */
 
-#ifndef GRPC_CORE_LIB_STATISTICS_WINDOW_STATS_H
-#define GRPC_CORE_LIB_STATISTICS_WINDOW_STATS_H
+#ifndef GRPC_CORE_EXT_CENSUS_WINDOW_STATS_H
+#define GRPC_CORE_EXT_CENSUS_WINDOW_STATS_H
 
 #include <grpc/support/time.h>
 
@@ -170,4 +170,4 @@ void census_window_stats_get_sums(const struct census_window_stats *wstats,
    assertion failure). This function is thread-compatible. */
 void census_window_stats_destroy(struct census_window_stats *wstats);
 
-#endif /* GRPC_CORE_LIB_STATISTICS_WINDOW_STATS_H */
+#endif /* GRPC_CORE_EXT_CENSUS_WINDOW_STATS_H */
diff --git a/src/core/ext/transport/chttp2/client/insecure/channel_create.c b/src/core/ext/transport/chttp2/client/insecure/channel_create.c
index a5f7c6cfbc97eb82357cbeae298bc28d9bc830bf..606fff5fb425ce8aafe56214febfae6d7ec58621 100644
--- a/src/core/ext/transport/chttp2/client/insecure/channel_create.c
+++ b/src/core/ext/transport/chttp2/client/insecure/channel_create.c
@@ -40,8 +40,8 @@
 #include <grpc/support/slice.h>
 #include <grpc/support/slice_buffer.h>
 
+#include "src/core/ext/census/grpc_filter.h"
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
-#include "src/core/lib/census/grpc_filter.h"
 #include "src/core/lib/channel/channel_args.h"
 #include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/compress_filter.h"
diff --git a/src/core/lib/census/grpc_plugin.h b/src/core/lib/census/grpc_plugin.h
deleted file mode 100644
index 4d642a65c7b604569e7185fd2aed5cfd093878a4..0000000000000000000000000000000000000000
--- a/src/core/lib/census/grpc_plugin.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *
- * Copyright 2015, Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
-
-#ifndef GRPC_CORE_LIB_CENSUS_GRPC_PLUGIN_H
-#define GRPC_CORE_LIB_CENSUS_GRPC_PLUGIN_H
-
-void census_grpc_plugin_init(void);
-void census_grpc_plugin_destroy(void);
-
-#endif /* GRPC_CORE_LIB_CENSUS_GRPC_PLUGIN_H */
diff --git a/src/core/lib/surface/init.c b/src/core/lib/surface/init.c
index 566b030912f75afa72915977db1b3ef91ba7a203..5ef9681180c85c3e8ff18876ef5328e2321e133a 100644
--- a/src/core/lib/surface/init.c
+++ b/src/core/lib/surface/init.c
@@ -39,9 +39,7 @@
 #include <grpc/grpc.h>
 #include <grpc/support/alloc.h>
 #include <grpc/support/time.h>
-/* TODO(ctiller): find another way? - better not to include census here */
 #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
-#include "src/core/lib/census/grpc_plugin.h"
 #include "src/core/lib/channel/channel_stack.h"
 #include "src/core/lib/channel/client_channel.h"
 #include "src/core/lib/channel/compress_filter.h"
@@ -85,8 +83,6 @@ static int g_initializations;
 static void do_basic_init(void) {
   gpr_mu_init(&g_init_mu);
   grpc_register_built_in_plugins();
-  /* TODO(ctiller): ideally remove this strict linkage */
-  grpc_register_plugin(census_grpc_plugin_init, census_grpc_plugin_destroy);
   g_initializations = 0;
 }
 
diff --git a/src/core/plugin_registry/grpc_plugin_registry.c b/src/core/plugin_registry/grpc_plugin_registry.c
index 3e3c214c2219f8ba86c02519acf4f6efd2acc17c..422d3c92b835b3b6c3f8e5e41877b7b4cc9e1969 100644
--- a/src/core/plugin_registry/grpc_plugin_registry.c
+++ b/src/core/plugin_registry/grpc_plugin_registry.c
@@ -37,10 +37,14 @@ extern void grpc_lb_policy_pick_first_init(void);
 extern void grpc_lb_policy_pick_first_shutdown(void);
 extern void grpc_lb_policy_round_robin_init(void);
 extern void grpc_lb_policy_round_robin_shutdown(void);
+extern void census_grpc_plugin_init(void);
+extern void census_grpc_plugin_shutdown(void);
 
 void grpc_register_built_in_plugins(void) {
   grpc_register_plugin(grpc_lb_policy_pick_first_init,
                        grpc_lb_policy_pick_first_shutdown);
   grpc_register_plugin(grpc_lb_policy_round_robin_init,
                        grpc_lb_policy_round_robin_shutdown);
+  grpc_register_plugin(census_grpc_plugin_init,
+                       census_grpc_plugin_shutdown);
 }
diff --git a/src/core/plugin_registry/grpc_unsecure_plugin_registry.c b/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
index 3e3c214c2219f8ba86c02519acf4f6efd2acc17c..422d3c92b835b3b6c3f8e5e41877b7b4cc9e1969 100644
--- a/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
+++ b/src/core/plugin_registry/grpc_unsecure_plugin_registry.c
@@ -37,10 +37,14 @@ extern void grpc_lb_policy_pick_first_init(void);
 extern void grpc_lb_policy_pick_first_shutdown(void);
 extern void grpc_lb_policy_round_robin_init(void);
 extern void grpc_lb_policy_round_robin_shutdown(void);
+extern void census_grpc_plugin_init(void);
+extern void census_grpc_plugin_shutdown(void);
 
 void grpc_register_built_in_plugins(void) {
   grpc_register_plugin(grpc_lb_policy_pick_first_init,
                        grpc_lb_policy_pick_first_shutdown);
   grpc_register_plugin(grpc_lb_policy_round_robin_init,
                        grpc_lb_policy_round_robin_shutdown);
+  grpc_register_plugin(census_grpc_plugin_init,
+                       census_grpc_plugin_shutdown);
 }
diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py
index d88921c963732be3fe1974e369b1a2b86e942809..084f5e10261b678d06dc2b7cf8bae89d27253af6 100644
--- a/src/python/grpcio/grpc_core_dependencies.py
+++ b/src/python/grpcio/grpc_core_dependencies.py
@@ -74,6 +74,15 @@ CORE_SOURCE_FILES = [
   'src/core/lib/support/tmpfile_posix.c',
   'src/core/lib/support/tmpfile_win32.c',
   'src/core/lib/support/wrap_memcpy.c',
+  'src/core/ext/census/context.c',
+  'src/core/ext/census/grpc_context.c',
+  'src/core/ext/census/grpc_filter.c',
+  'src/core/ext/census/grpc_plugin.c',
+  'src/core/ext/census/initialize.c',
+  'src/core/ext/census/mlog.c',
+  'src/core/ext/census/operation.c',
+  'src/core/ext/census/placeholders.c',
+  'src/core/ext/census/tracing.c',
   'src/core/ext/lb_policy/grpclb/load_balancer_api.c',
   'src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c',
   'src/core/ext/lb_policy/pick_first/pick_first.c',
@@ -103,15 +112,6 @@ CORE_SOURCE_FILES = [
   'src/core/ext/transport/chttp2/transport/timeout_encoding.c',
   'src/core/ext/transport/chttp2/transport/varint.c',
   'src/core/ext/transport/chttp2/transport/writing.c',
-  'src/core/lib/census/context.c',
-  'src/core/lib/census/grpc_context.c',
-  'src/core/lib/census/grpc_filter.c',
-  'src/core/lib/census/grpc_plugin.c',
-  'src/core/lib/census/initialize.c',
-  'src/core/lib/census/mlog.c',
-  'src/core/lib/census/operation.c',
-  'src/core/lib/census/placeholders.c',
-  'src/core/lib/census/tracing.c',
   'src/core/lib/channel/channel_args.c',
   'src/core/lib/channel/channel_stack.c',
   'src/core/lib/channel/channel_stack_builder.c',
diff --git a/test/core/census/mlog_test.c b/test/core/census/mlog_test.c
index 5951461436900d27b3daca5fbf018ba498a373b3..36e8a492fd5a8361541f7ee1edcc24f491d1db5c 100644
--- a/test/core/census/mlog_test.c
+++ b/test/core/census/mlog_test.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/census/mlog.h"
+#include "src/core/ext/census/mlog.h"
 #include <grpc/support/cpu.h>
 #include <grpc/support/log.h>
 #include <grpc/support/port_platform.h>
diff --git a/test/core/statistics/census_log_tests.c b/test/core/statistics/census_log_tests.c
index 92570d9af92c0a392a8cdf4baae44f7ea9342643..8646a2fdf1d64aababdc350a8399c8075588c7b8 100644
--- a/test/core/statistics/census_log_tests.c
+++ b/test/core/statistics/census_log_tests.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/statistics/census_log.h"
+#include "src/core/ext/census/census_log.h"
 #include <grpc/support/cpu.h>
 #include <grpc/support/log.h>
 #include <grpc/support/port_platform.h>
diff --git a/test/core/statistics/census_stub_test.c b/test/core/statistics/census_stub_test.c
index dbc7cf74b73236158dc41c7aa2cbf9bd44de5096..f9dddb65994548739299ccb5a9220a177610b49c 100644
--- a/test/core/statistics/census_stub_test.c
+++ b/test/core/statistics/census_stub_test.c
@@ -36,8 +36,8 @@
 
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
-#include "src/core/lib/statistics/census_interface.h"
-#include "src/core/lib/statistics/census_rpc_stats.h"
+#include "src/core/ext/census/census_interface.h"
+#include "src/core/ext/census/census_rpc_stats.h"
 #include "test/core/util/test_config.h"
 
 /* Tests census noop stubs in a simulated rpc flow */
diff --git a/test/core/statistics/hash_table_test.c b/test/core/statistics/hash_table_test.c
index 6fc2d6086df009be7b4685f97b5d797aa2e55230..f63c1a366ad15426686075763c8fa141481a84c9 100644
--- a/test/core/statistics/hash_table_test.c
+++ b/test/core/statistics/hash_table_test.c
@@ -35,7 +35,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "src/core/lib/statistics/hash_table.h"
+#include "src/core/ext/census/hash_table.h"
 
 #include <grpc/support/alloc.h>
 #include <grpc/support/log.h>
diff --git a/test/core/statistics/rpc_stats_test.c b/test/core/statistics/rpc_stats_test.c
index 715bd1393141356e5c78de207a4e7c9c12a45731..14def4bfe12323b643aee492beb167a57c6f0ffd 100644
--- a/test/core/statistics/rpc_stats_test.c
+++ b/test/core/statistics/rpc_stats_test.c
@@ -39,9 +39,9 @@
 #include <grpc/support/string.h>
 #include <grpc/support/thd.h>
 #include <grpc/support/time.h>
-#include "src/core/lib/statistics/census_interface.h"
-#include "src/core/lib/statistics/census_rpc_stats.h"
-#include "src/core/lib/statistics/census_tracing.h"
+#include "src/core/ext/census/census_interface.h"
+#include "src/core/ext/census/census_rpc_stats.h"
+#include "src/core/ext/census/census_tracing.h"
 #include "test/core/util/test_config.h"
 
 /* Ensure all possible state transitions are called without causing problem */
diff --git a/test/core/statistics/trace_test.c b/test/core/statistics/trace_test.c
index 8dab8b67386a64a4c406c50f3a79479a698a75ab..790507f2c696470d5db6770433c6e3a0f965da80 100644
--- a/test/core/statistics/trace_test.c
+++ b/test/core/statistics/trace_test.c
@@ -41,9 +41,9 @@
 #include <grpc/support/thd.h>
 #include <grpc/support/time.h>
 #include <grpc/support/useful.h>
-#include "src/core/lib/statistics/census_interface.h"
-#include "src/core/lib/statistics/census_tracing.h"
-#include "src/core/lib/statistics/census_tracing.h"
+#include "src/core/ext/census/census_interface.h"
+#include "src/core/ext/census/census_tracing.h"
+#include "src/core/ext/census/census_tracing.h"
 #include "test/core/util/test_config.h"
 
 /* Ensure all possible state transitions are called without causing problem */
diff --git a/test/core/statistics/window_stats_test.c b/test/core/statistics/window_stats_test.c
index 5192ca53c701fe0723787d7b7ca255784a726802..5d71ba613d9641d69a4751ba4ee9533a3a545e5f 100644
--- a/test/core/statistics/window_stats_test.c
+++ b/test/core/statistics/window_stats_test.c
@@ -31,7 +31,7 @@
  *
  */
 
-#include "src/core/lib/statistics/window_stats.h"
+#include "src/core/ext/census/window_stats.h"
 #include <grpc/support/log.h>
 #include <grpc/support/time.h>
 #include <stdlib.h>
diff --git a/tools/dockerfile/grpc_clang_format/clang_format_all_the_things.sh b/tools/dockerfile/grpc_clang_format/clang_format_all_the_things.sh
index 830d018304c87d6d1df18e0616bcfc4be0d015c6..6f4155944c3bc609f7fc1ceaf8c40c406f441f3f 100755
--- a/tools/dockerfile/grpc_clang_format/clang_format_all_the_things.sh
+++ b/tools/dockerfile/grpc_clang_format/clang_format_all_the_things.sh
@@ -31,7 +31,7 @@
 set -e
 
 # directories to run against
-DIRS="src/core src/cpp test/core test/cpp include"
+DIRS="src/core/lib src/core/ext src/cpp test/core test/cpp include"
 
 # file matching patterns to check
 GLOB="*.h *.c *.cc"
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index b94447c55507793f648470b52338816941560edf..9003ead0f3c75e01bc994ded8351770919c87bcf 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -773,6 +773,12 @@ include/grpc/impl/codegen/grpc_types.h \
 include/grpc/impl/codegen/propagation_bits.h \
 include/grpc/impl/codegen/status.h \
 include/grpc/status.h \
+src/core/ext/census/aggregation.h \
+src/core/ext/census/census_interface.h \
+src/core/ext/census/census_rpc_stats.h \
+src/core/ext/census/grpc_filter.h \
+src/core/ext/census/mlog.h \
+src/core/ext/census/rpc_metric_id.h \
 src/core/ext/lb_policy/grpclb/load_balancer_api.h \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h \
 src/core/ext/transport/chttp2/transport/alpn.h \
@@ -796,11 +802,6 @@ src/core/ext/transport/chttp2/transport/status_conversion.h \
 src/core/ext/transport/chttp2/transport/stream_map.h \
 src/core/ext/transport/chttp2/transport/timeout_encoding.h \
 src/core/ext/transport/chttp2/transport/varint.h \
-src/core/lib/census/aggregation.h \
-src/core/lib/census/grpc_filter.h \
-src/core/lib/census/grpc_plugin.h \
-src/core/lib/census/mlog.h \
-src/core/lib/census/rpc_metric_id.h \
 src/core/lib/channel/channel_args.h \
 src/core/lib/channel/channel_stack.h \
 src/core/lib/channel/channel_stack_builder.h \
@@ -882,8 +883,6 @@ src/core/lib/security/jwt_verifier.h \
 src/core/lib/security/secure_endpoint.h \
 src/core/lib/security/security_connector.h \
 src/core/lib/security/security_context.h \
-src/core/lib/statistics/census_interface.h \
-src/core/lib/statistics/census_rpc_stats.h \
 src/core/lib/surface/api_trace.h \
 src/core/lib/surface/call.h \
 src/core/lib/surface/call_test_only.h \
@@ -912,6 +911,15 @@ third_party/nanopb/pb.h \
 third_party/nanopb/pb_common.h \
 third_party/nanopb/pb_decode.h \
 third_party/nanopb/pb_encode.h \
+src/core/ext/census/context.c \
+src/core/ext/census/grpc_context.c \
+src/core/ext/census/grpc_filter.c \
+src/core/ext/census/grpc_plugin.c \
+src/core/ext/census/initialize.c \
+src/core/ext/census/mlog.c \
+src/core/ext/census/operation.c \
+src/core/ext/census/placeholders.c \
+src/core/ext/census/tracing.c \
 src/core/ext/lb_policy/grpclb/load_balancer_api.c \
 src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c \
 src/core/ext/lb_policy/pick_first/pick_first.c \
@@ -941,15 +949,6 @@ src/core/ext/transport/chttp2/transport/stream_map.c \
 src/core/ext/transport/chttp2/transport/timeout_encoding.c \
 src/core/ext/transport/chttp2/transport/varint.c \
 src/core/ext/transport/chttp2/transport/writing.c \
-src/core/lib/census/context.c \
-src/core/lib/census/grpc_context.c \
-src/core/lib/census/grpc_filter.c \
-src/core/lib/census/grpc_plugin.c \
-src/core/lib/census/initialize.c \
-src/core/lib/census/mlog.c \
-src/core/lib/census/operation.c \
-src/core/lib/census/placeholders.c \
-src/core/lib/census/tracing.c \
 src/core/lib/channel/channel_args.c \
 src/core/lib/channel/channel_stack.c \
 src/core/lib/channel/channel_stack_builder.c \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index f011235f55ccf751c873d417a35d5052f12261b0..ecbc42bbb7ccc2fe22705bd71ec9aed1a3b00f93 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -4120,6 +4120,12 @@
       "include/grpc/impl/codegen/propagation_bits.h", 
       "include/grpc/impl/codegen/status.h", 
       "include/grpc/status.h", 
+      "src/core/ext/census/aggregation.h", 
+      "src/core/ext/census/census_interface.h", 
+      "src/core/ext/census/census_rpc_stats.h", 
+      "src/core/ext/census/grpc_filter.h", 
+      "src/core/ext/census/mlog.h", 
+      "src/core/ext/census/rpc_metric_id.h", 
       "src/core/ext/lb_policy/grpclb/load_balancer_api.h", 
       "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", 
       "src/core/ext/transport/chttp2/transport/alpn.h", 
@@ -4143,11 +4149,6 @@
       "src/core/ext/transport/chttp2/transport/stream_map.h", 
       "src/core/ext/transport/chttp2/transport/timeout_encoding.h", 
       "src/core/ext/transport/chttp2/transport/varint.h", 
-      "src/core/lib/census/aggregation.h", 
-      "src/core/lib/census/grpc_filter.h", 
-      "src/core/lib/census/grpc_plugin.h", 
-      "src/core/lib/census/mlog.h", 
-      "src/core/lib/census/rpc_metric_id.h", 
       "src/core/lib/channel/channel_args.h", 
       "src/core/lib/channel/channel_stack.h", 
       "src/core/lib/channel/channel_stack_builder.h", 
@@ -4229,8 +4230,6 @@
       "src/core/lib/security/secure_endpoint.h", 
       "src/core/lib/security/security_connector.h", 
       "src/core/lib/security/security_context.h", 
-      "src/core/lib/statistics/census_interface.h", 
-      "src/core/lib/statistics/census_rpc_stats.h", 
       "src/core/lib/surface/api_trace.h", 
       "src/core/lib/surface/call.h", 
       "src/core/lib/surface/call_test_only.h", 
@@ -4276,6 +4275,21 @@
       "include/grpc/impl/codegen/propagation_bits.h", 
       "include/grpc/impl/codegen/status.h", 
       "include/grpc/status.h", 
+      "src/core/ext/census/aggregation.h", 
+      "src/core/ext/census/census_interface.h", 
+      "src/core/ext/census/census_rpc_stats.h", 
+      "src/core/ext/census/context.c", 
+      "src/core/ext/census/grpc_context.c", 
+      "src/core/ext/census/grpc_filter.c", 
+      "src/core/ext/census/grpc_filter.h", 
+      "src/core/ext/census/grpc_plugin.c", 
+      "src/core/ext/census/initialize.c", 
+      "src/core/ext/census/mlog.c", 
+      "src/core/ext/census/mlog.h", 
+      "src/core/ext/census/operation.c", 
+      "src/core/ext/census/placeholders.c", 
+      "src/core/ext/census/rpc_metric_id.h", 
+      "src/core/ext/census/tracing.c", 
       "src/core/ext/lb_policy/grpclb/load_balancer_api.c", 
       "src/core/ext/lb_policy/grpclb/load_balancer_api.h", 
       "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", 
@@ -4328,20 +4342,6 @@
       "src/core/ext/transport/chttp2/transport/varint.c", 
       "src/core/ext/transport/chttp2/transport/varint.h", 
       "src/core/ext/transport/chttp2/transport/writing.c", 
-      "src/core/lib/census/aggregation.h", 
-      "src/core/lib/census/context.c", 
-      "src/core/lib/census/grpc_context.c", 
-      "src/core/lib/census/grpc_filter.c", 
-      "src/core/lib/census/grpc_filter.h", 
-      "src/core/lib/census/grpc_plugin.c", 
-      "src/core/lib/census/grpc_plugin.h", 
-      "src/core/lib/census/initialize.c", 
-      "src/core/lib/census/mlog.c", 
-      "src/core/lib/census/mlog.h", 
-      "src/core/lib/census/operation.c", 
-      "src/core/lib/census/placeholders.c", 
-      "src/core/lib/census/rpc_metric_id.h", 
-      "src/core/lib/census/tracing.c", 
       "src/core/lib/channel/channel_args.c", 
       "src/core/lib/channel/channel_args.h", 
       "src/core/lib/channel/channel_stack.c", 
@@ -4515,8 +4515,6 @@
       "src/core/lib/security/security_context.c", 
       "src/core/lib/security/security_context.h", 
       "src/core/lib/security/server_auth_filter.c", 
-      "src/core/lib/statistics/census_interface.h", 
-      "src/core/lib/statistics/census_rpc_stats.h", 
       "src/core/lib/surface/alarm.c", 
       "src/core/lib/surface/api_trace.c", 
       "src/core/lib/surface/api_trace.h", 
@@ -4745,6 +4743,12 @@
       "include/grpc/impl/codegen/propagation_bits.h", 
       "include/grpc/impl/codegen/status.h", 
       "include/grpc/status.h", 
+      "src/core/ext/census/aggregation.h", 
+      "src/core/ext/census/census_interface.h", 
+      "src/core/ext/census/census_rpc_stats.h", 
+      "src/core/ext/census/grpc_filter.h", 
+      "src/core/ext/census/mlog.h", 
+      "src/core/ext/census/rpc_metric_id.h", 
       "src/core/ext/lb_policy/grpclb/load_balancer_api.h", 
       "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h", 
       "src/core/ext/transport/chttp2/transport/alpn.h", 
@@ -4768,11 +4772,6 @@
       "src/core/ext/transport/chttp2/transport/stream_map.h", 
       "src/core/ext/transport/chttp2/transport/timeout_encoding.h", 
       "src/core/ext/transport/chttp2/transport/varint.h", 
-      "src/core/lib/census/aggregation.h", 
-      "src/core/lib/census/grpc_filter.h", 
-      "src/core/lib/census/grpc_plugin.h", 
-      "src/core/lib/census/mlog.h", 
-      "src/core/lib/census/rpc_metric_id.h", 
       "src/core/lib/channel/channel_args.h", 
       "src/core/lib/channel/channel_stack.h", 
       "src/core/lib/channel/channel_stack_builder.h", 
@@ -4845,8 +4844,6 @@
       "src/core/lib/json/json_common.h", 
       "src/core/lib/json/json_reader.h", 
       "src/core/lib/json/json_writer.h", 
-      "src/core/lib/statistics/census_interface.h", 
-      "src/core/lib/statistics/census_rpc_stats.h", 
       "src/core/lib/surface/api_trace.h", 
       "src/core/lib/surface/call.h", 
       "src/core/lib/surface/call_test_only.h", 
@@ -4886,6 +4883,21 @@
       "include/grpc/impl/codegen/propagation_bits.h", 
       "include/grpc/impl/codegen/status.h", 
       "include/grpc/status.h", 
+      "src/core/ext/census/aggregation.h", 
+      "src/core/ext/census/census_interface.h", 
+      "src/core/ext/census/census_rpc_stats.h", 
+      "src/core/ext/census/context.c", 
+      "src/core/ext/census/grpc_context.c", 
+      "src/core/ext/census/grpc_filter.c", 
+      "src/core/ext/census/grpc_filter.h", 
+      "src/core/ext/census/grpc_plugin.c", 
+      "src/core/ext/census/initialize.c", 
+      "src/core/ext/census/mlog.c", 
+      "src/core/ext/census/mlog.h", 
+      "src/core/ext/census/operation.c", 
+      "src/core/ext/census/placeholders.c", 
+      "src/core/ext/census/rpc_metric_id.h", 
+      "src/core/ext/census/tracing.c", 
       "src/core/ext/lb_policy/grpclb/load_balancer_api.c", 
       "src/core/ext/lb_policy/grpclb/load_balancer_api.h", 
       "src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.c", 
@@ -4936,20 +4948,6 @@
       "src/core/ext/transport/chttp2/transport/varint.c", 
       "src/core/ext/transport/chttp2/transport/varint.h", 
       "src/core/ext/transport/chttp2/transport/writing.c", 
-      "src/core/lib/census/aggregation.h", 
-      "src/core/lib/census/context.c", 
-      "src/core/lib/census/grpc_context.c", 
-      "src/core/lib/census/grpc_filter.c", 
-      "src/core/lib/census/grpc_filter.h", 
-      "src/core/lib/census/grpc_plugin.c", 
-      "src/core/lib/census/grpc_plugin.h", 
-      "src/core/lib/census/initialize.c", 
-      "src/core/lib/census/mlog.c", 
-      "src/core/lib/census/mlog.h", 
-      "src/core/lib/census/operation.c", 
-      "src/core/lib/census/placeholders.c", 
-      "src/core/lib/census/rpc_metric_id.h", 
-      "src/core/lib/census/tracing.c", 
       "src/core/lib/channel/channel_args.c", 
       "src/core/lib/channel/channel_args.h", 
       "src/core/lib/channel/channel_stack.c", 
@@ -5099,8 +5097,6 @@
       "src/core/lib/json/json_string.c", 
       "src/core/lib/json/json_writer.c", 
       "src/core/lib/json/json_writer.h", 
-      "src/core/lib/statistics/census_interface.h", 
-      "src/core/lib/statistics/census_rpc_stats.h", 
       "src/core/lib/surface/alarm.c", 
       "src/core/lib/surface/api_trace.c", 
       "src/core/lib/surface/api_trace.h", 
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj b/vsprojects/vcxproj/grpc/grpc.vcxproj
index 93d5a9b02fa4483ed5c156784b592676c120bd2a..2d6db0490a89041881cce587217a41118306fca8 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj
@@ -282,6 +282,12 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\aggregation.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\census_interface.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\census_rpc_stats.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\grpc_filter.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\mlog.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\rpc_metric_id.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\alpn.h" />
@@ -305,11 +311,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\stream_map.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\timeout_encoding.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\varint.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\aggregation.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\grpc_filter.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\grpc_plugin.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\mlog.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\rpc_metric_id.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_args.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack_builder.h" />
@@ -391,8 +392,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\security\secure_endpoint.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\security\security_connector.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\security\security_context.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\statistics\census_interface.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\statistics\census_rpc_stats.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\api_trace.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\call.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\call_test_only.h" />
@@ -423,6 +422,24 @@
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb_encode.h" />
   </ItemGroup>
   <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\context.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\grpc_context.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\grpc_filter.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\grpc_plugin.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\initialize.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\mlog.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\operation.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\placeholders.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\tracing.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.c">
@@ -481,24 +498,6 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\writing.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\context.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\grpc_context.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\grpc_filter.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\grpc_plugin.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\initialize.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\mlog.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\operation.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\placeholders.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\tracing.c">
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\channel_args.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack.c">
diff --git a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
index 3e5032db0e12fcba4d4e4d6c88a7d29bee5c9b2a..6cd62d09b86733bec180c090913d3f28f3dde0e1 100644
--- a/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc/grpc.vcxproj.filters
@@ -1,6 +1,33 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\context.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\grpc_context.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\grpc_filter.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\grpc_plugin.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\initialize.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\mlog.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\operation.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\placeholders.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\tracing.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClCompile>
@@ -88,33 +115,6 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\writing.c">
       <Filter>src\core\ext\transport\chttp2\transport</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\context.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\grpc_context.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\grpc_filter.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\grpc_plugin.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\initialize.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\mlog.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\operation.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\placeholders.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\tracing.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\channel_args.c">
       <Filter>src\core\lib\channel</Filter>
     </ClCompile>
@@ -539,6 +539,24 @@
     </ClInclude>
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\aggregation.h">
+      <Filter>src\core\ext\census</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\census_interface.h">
+      <Filter>src\core\ext\census</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\census_rpc_stats.h">
+      <Filter>src\core\ext\census</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\grpc_filter.h">
+      <Filter>src\core\ext\census</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\mlog.h">
+      <Filter>src\core\ext\census</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\rpc_metric_id.h">
+      <Filter>src\core\ext\census</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClInclude>
@@ -608,21 +626,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\varint.h">
       <Filter>src\core\ext\transport\chttp2\transport</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\aggregation.h">
-      <Filter>src\core\lib\census</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\grpc_filter.h">
-      <Filter>src\core\lib\census</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\grpc_plugin.h">
-      <Filter>src\core\lib\census</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\mlog.h">
-      <Filter>src\core\lib\census</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\rpc_metric_id.h">
-      <Filter>src\core\lib\census</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_args.h">
       <Filter>src\core\lib\channel</Filter>
     </ClInclude>
@@ -866,12 +869,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\security\security_context.h">
       <Filter>src\core\lib\security</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\statistics\census_interface.h">
-      <Filter>src\core\lib\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\statistics\census_rpc_stats.h">
-      <Filter>src\core\lib\statistics</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\api_trace.h">
       <Filter>src\core\lib\surface</Filter>
     </ClInclude>
@@ -980,6 +977,9 @@
     <Filter Include="src\core\ext">
       <UniqueIdentifier>{3f32a58f-394f-5f13-06aa-6cc52cc2daaf}</UniqueIdentifier>
     </Filter>
+    <Filter Include="src\core\ext\census">
+      <UniqueIdentifier>{9bf70bd2-f553-11b2-c237-abd148971eea}</UniqueIdentifier>
+    </Filter>
     <Filter Include="src\core\ext\lb_policy">
       <UniqueIdentifier>{030f00ff-6c54-76c8-12df-37e3008335d1}</UniqueIdentifier>
     </Filter>
@@ -1034,9 +1034,6 @@
     <Filter Include="src\core\lib">
       <UniqueIdentifier>{5b2ded3f-84a5-f6b4-2060-286c7d1dc945}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\core\lib\census">
-      <UniqueIdentifier>{f4108884-98c3-ac2e-c669-83cd41343975}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src\core\lib\channel">
       <UniqueIdentifier>{1931b044-90f3-cd68-b5f8-23be77ca8efc}</UniqueIdentifier>
     </Filter>
@@ -1064,9 +1061,6 @@
     <Filter Include="src\core\lib\security">
       <UniqueIdentifier>{c4661d64-349f-01c1-1ba8-0602f9047595}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\core\lib\statistics">
-      <UniqueIdentifier>{4dc3c48b-e931-ed47-ffa2-b4ea3a7956ec}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src\core\lib\surface">
       <UniqueIdentifier>{a21971fb-304f-da08-b1b2-7bd8df8ac373}</UniqueIdentifier>
     </Filter>
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
index 98a6bee1704f1ff46ea20be1c449623e161afc16..01d3f3fa641b091115e707aed0a7fc4b99dd3b18 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
@@ -272,6 +272,12 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\aggregation.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\census_interface.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\census_rpc_stats.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\grpc_filter.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\mlog.h" />
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\rpc_metric_id.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\alpn.h" />
@@ -295,11 +301,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\stream_map.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\timeout_encoding.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\varint.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\aggregation.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\grpc_filter.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\grpc_plugin.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\mlog.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\rpc_metric_id.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_args.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack_builder.h" />
@@ -372,8 +373,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\json\json_common.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\json\json_reader.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\json\json_writer.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\statistics\census_interface.h" />
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\statistics\census_rpc_stats.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\api_trace.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\call.h" />
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\call_test_only.h" />
@@ -399,6 +398,24 @@
     <ClInclude Include="$(SolutionDir)\..\third_party\nanopb\pb_encode.h" />
   </ItemGroup>
   <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\context.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\grpc_context.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\grpc_filter.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\grpc_plugin.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\initialize.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\mlog.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\operation.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\placeholders.c">
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\tracing.c">
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\proto\grpc\lb\v0\load_balancer.pb.c">
@@ -453,24 +470,6 @@
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\writing.c">
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\context.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\grpc_context.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\grpc_filter.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\grpc_plugin.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\initialize.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\mlog.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\operation.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\placeholders.c">
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\tracing.c">
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\channel_args.c">
     </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\channel_stack.c">
diff --git a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
index 81c8a874fc9fd929db31788656f7aeb00e118346..5365cc293304604c6f06f66a1adcd88af8e3ea0c 100644
--- a/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
@@ -1,6 +1,33 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\context.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\grpc_context.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\grpc_filter.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\grpc_plugin.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\initialize.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\mlog.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\operation.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\placeholders.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
+    <ClCompile Include="$(SolutionDir)\..\src\core\ext\census\tracing.c">
+      <Filter>src\core\ext\census</Filter>
+    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.c">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClCompile>
@@ -82,33 +109,6 @@
     <ClCompile Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\writing.c">
       <Filter>src\core\ext\transport\chttp2\transport</Filter>
     </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\context.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\grpc_context.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\grpc_filter.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\grpc_plugin.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\initialize.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\mlog.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\operation.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\placeholders.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
-    <ClCompile Include="$(SolutionDir)\..\src\core\lib\census\tracing.c">
-      <Filter>src\core\lib\census</Filter>
-    </ClCompile>
     <ClCompile Include="$(SolutionDir)\..\src\core\lib\channel\channel_args.c">
       <Filter>src\core\lib\channel</Filter>
     </ClCompile>
@@ -476,6 +476,24 @@
     </ClInclude>
   </ItemGroup>
   <ItemGroup>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\aggregation.h">
+      <Filter>src\core\ext\census</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\census_interface.h">
+      <Filter>src\core\ext\census</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\census_rpc_stats.h">
+      <Filter>src\core\ext\census</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\grpc_filter.h">
+      <Filter>src\core\ext\census</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\mlog.h">
+      <Filter>src\core\ext\census</Filter>
+    </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\src\core\ext\census\rpc_metric_id.h">
+      <Filter>src\core\ext\census</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\lb_policy\grpclb\load_balancer_api.h">
       <Filter>src\core\ext\lb_policy\grpclb</Filter>
     </ClInclude>
@@ -545,21 +563,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\ext\transport\chttp2\transport\varint.h">
       <Filter>src\core\ext\transport\chttp2\transport</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\aggregation.h">
-      <Filter>src\core\lib\census</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\grpc_filter.h">
-      <Filter>src\core\lib\census</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\grpc_plugin.h">
-      <Filter>src\core\lib\census</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\mlog.h">
-      <Filter>src\core\lib\census</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\census\rpc_metric_id.h">
-      <Filter>src\core\lib\census</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\channel\channel_args.h">
       <Filter>src\core\lib\channel</Filter>
     </ClInclude>
@@ -776,12 +779,6 @@
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\json\json_writer.h">
       <Filter>src\core\lib\json</Filter>
     </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\statistics\census_interface.h">
-      <Filter>src\core\lib\statistics</Filter>
-    </ClInclude>
-    <ClInclude Include="$(SolutionDir)\..\src\core\lib\statistics\census_rpc_stats.h">
-      <Filter>src\core\lib\statistics</Filter>
-    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\src\core\lib\surface\api_trace.h">
       <Filter>src\core\lib\surface</Filter>
     </ClInclude>
@@ -875,6 +872,9 @@
     <Filter Include="src\core\ext">
       <UniqueIdentifier>{82f86e8c-00a4-f566-d235-670fc629798d}</UniqueIdentifier>
     </Filter>
+    <Filter Include="src\core\ext\census">
+      <UniqueIdentifier>{3f21cd12-b8b9-18f8-8780-e21bbe2285d0}</UniqueIdentifier>
+    </Filter>
     <Filter Include="src\core\ext\lb_policy">
       <UniqueIdentifier>{a23781d2-27e4-7cb0-12cd-59782ecb21ce}</UniqueIdentifier>
     </Filter>
@@ -923,9 +923,6 @@
     <Filter Include="src\core\lib">
       <UniqueIdentifier>{8bd5b461-bff8-6aa8-b5a6-85da2834eb8a}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\core\lib\census">
-      <UniqueIdentifier>{19582d5a-dab7-9dc1-c7e9-cc147fd52e5f}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src\core\lib\channel">
       <UniqueIdentifier>{fb964f3d-a59c-a7ba-fee5-6072dbb94a7b}</UniqueIdentifier>
     </Filter>
@@ -950,9 +947,6 @@
     <Filter Include="src\core\lib\json">
       <UniqueIdentifier>{681cdaeb-c47f-8853-d985-bf13c2873947}</UniqueIdentifier>
     </Filter>
-    <Filter Include="src\core\lib\statistics">
-      <UniqueIdentifier>{d0ab6d54-ae25-fc49-3656-91d9db57366a}</UniqueIdentifier>
-    </Filter>
     <Filter Include="src\core\lib\surface">
       <UniqueIdentifier>{506dc3b3-d884-2b59-0dfa-57ed6affa2d3}</UniqueIdentifier>
     </Filter>