view and aggregation API
diff --git a/BUILD b/BUILD
index 25b26b7..3072195 100644
--- a/BUILD
+++ b/BUILD
@@ -246,7 +246,7 @@
     "src/core/transport/transport.h",
     "src/core/transport/transport_impl.h",
     "src/core/census/context.h",
-    "src/core/census/rpc_stat_id.h",
+    "src/core/census/rpc_metric_id.h",
     "src/core/httpcli/httpcli_security_connector.c",
     "src/core/security/base64.c",
     "src/core/security/client_auth_filter.c",
@@ -386,7 +386,6 @@
     "src/core/transport/transport_op_string.c",
     "src/core/census/context.c",
     "src/core/census/initialize.c",
-    "src/core/census/record_stat.c",
   ],
   hdrs = [
     "include/grpc/grpc_security.h",
@@ -515,7 +514,7 @@
     "src/core/transport/transport.h",
     "src/core/transport/transport_impl.h",
     "src/core/census/context.h",
-    "src/core/census/rpc_stat_id.h",
+    "src/core/census/rpc_metric_id.h",
     "src/core/surface/init_unsecure.c",
     "src/core/census/grpc_context.c",
     "src/core/census/grpc_filter.c",
@@ -635,7 +634,6 @@
     "src/core/transport/transport_op_string.c",
     "src/core/census/context.c",
     "src/core/census/initialize.c",
-    "src/core/census/record_stat.c",
   ],
   hdrs = [
     "include/grpc/byte_buffer.h",
@@ -1144,7 +1142,6 @@
     "src/core/transport/transport_op_string.c",
     "src/core/census/context.c",
     "src/core/census/initialize.c",
-    "src/core/census/record_stat.c",
   ],
   hdrs = [
     "include/grpc/grpc_security.h",
@@ -1270,7 +1267,7 @@
     "src/core/transport/transport.h",
     "src/core/transport/transport_impl.h",
     "src/core/census/context.h",
-    "src/core/census/rpc_stat_id.h",
+    "src/core/census/rpc_metric_id.h",
   ],
   includes = [
     "include",
diff --git a/Makefile b/Makefile
index 48ecea9..620508c 100644
--- a/Makefile
+++ b/Makefile
@@ -4196,7 +4196,6 @@
     src/core/transport/transport_op_string.c \
     src/core/census/context.c \
     src/core/census/initialize.c \
-    src/core/census/record_stat.c \
 
 PUBLIC_HEADERS_C += \
     include/grpc/grpc_security.h \
@@ -4470,7 +4469,6 @@
     src/core/transport/transport_op_string.c \
     src/core/census/context.c \
     src/core/census/initialize.c \
-    src/core/census/record_stat.c \
 
 PUBLIC_HEADERS_C += \
     include/grpc/byte_buffer.h \
diff --git a/build.json b/build.json
index 54cae41..02cee31 100644
--- a/build.json
+++ b/build.json
@@ -19,12 +19,11 @@
       ],
       "headers": [
         "src/core/census/context.h",
-        "src/core/census/rpc_stat_id.h"
+        "src/core/census/rpc_metric_id.h"
       ],
       "src": [
         "src/core/census/context.c",
-        "src/core/census/initialize.c",
-        "src/core/census/record_stat.c"
+        "src/core/census/initialize.c"
       ]
     },
     {
diff --git a/gRPC.podspec b/gRPC.podspec
index f6d09db..28a4ad4 100644
--- a/gRPC.podspec
+++ b/gRPC.podspec
@@ -248,7 +248,7 @@
                       'src/core/transport/transport.h',
                       'src/core/transport/transport_impl.h',
                       'src/core/census/context.h',
-                      'src/core/census/rpc_stat_id.h',
+                      'src/core/census/rpc_metric_id.h',
                       'grpc/grpc_security.h',
                       'grpc/byte_buffer.h',
                       'grpc/byte_buffer_reader.h',
@@ -394,8 +394,7 @@
                       'src/core/transport/transport.c',
                       'src/core/transport/transport_op_string.c',
                       'src/core/census/context.c',
-                      'src/core/census/initialize.c',
-                      'src/core/census/record_stat.c'
+                      'src/core/census/initialize.c'
 
     ss.private_header_files = 'src/core/support/env.h',
                               'src/core/support/file.h',
@@ -520,7 +519,7 @@
                               'src/core/transport/transport.h',
                               'src/core/transport/transport_impl.h',
                               'src/core/census/context.h',
-                              'src/core/census/rpc_stat_id.h'
+                              'src/core/census/rpc_metric_id.h'
 
     ss.header_mappings_dir = '.'
 
diff --git a/include/grpc/census.h b/include/grpc/census.h
index db3e896..968f582 100644
--- a/include/grpc/census.h
+++ b/include/grpc/census.h
@@ -159,114 +159,154 @@
    invalidated, and should not be used once close is called. */
 void census_tag_set_close(census_tag_set_iterator *it);
 
-/* A census statistic to be recorded comprises two parts: an ID for the
- * particular statistic and the value to be recorded against it. */
+/* Core stats collection API's. There following concepts are used:
+   * Aggregation: A collection of values. Census supports the following
+       aggregation types:
+         Scalar - a single scalar value. Typically used for keeping (e.g.)
+           counts of events.
+         Distribution - statistical distribution information, used for
+           recording average, standard deviation etc.
+         Histogram - a histogram of measurements falling in defined bucket
+           boundaries.
+         Window - a count of events that happen in reolling time window.
+     New aggregation types can be added by the user, if desired (see
+     census_register_aggregation()).
+   * Metric: Each measurement is for a single metric. Examples include RPC
+     latency, CPU seconds consumed, and bytes transmitted.
+   * View: A view is a tag set, in which the tag values are regular expressions,
+     combined with an arbitrary number of aggregations and their initialization
+     parameters.
+
+   Each metric can have an arbitrary number of views by which it will be
+   broken down. For every measurement recorded, they are broken down by
+   unique tag combinations, and recorded in each matvhing view/aggregation.
+*/
+
+/* A single value to be recorded comprises two parts: an ID for the particular
+ * metric and the value to be recorded against it. */
 typedef struct {
-  int id;
+  gpr_int32 metric_id;
   double value;
-} census_stat;
+} census_value;
 
-/* Record new stats against the given context. */
-void census_record_stat(census_context *context, census_stat *stats,
-                        size_t nstats);
+/* Record new usage values against the given context. */
+void census_record_usage(census_context *context, census_value *values,
+                         size_t nvalues);
 
-/* Stats Configuration - Census clients can use these functions and structures
-   to extend and define what stats get recorded for what measurements. */
+/** Structure used to describe an aggregation type. */
+typedef struct {
+  /* Create a new aggregation. The pointer returned can be used in future calls
+     to free(), record(), data() and reset(). */
+  void *(*create)(const void *create_arg);
+  /* Destroy an aggregation created by create() */
+  void (*free)(void *aggregation);
+  /* Record a new value against aggregation. */
+  void (*record)(void *aggregation, double value);
+  /* Return current aggregation data. The caller must cast this object into
+     the correct type for the aggregation result. The object returned can be
+     freed by using free_data(). */
+  const void *(*data)(const void *aggregation);
+  /* destroy an aggregation result eturned from get_aggregation(). */
+  void (*free_data)(const void *data);
+  /* Reset an aggregation to default (zero) values. */
+  void (*reset)(void *aggregation);
+} census_aggregation_descriptor;
 
-/** Stats types supported by census. */
-typedef enum {
-  CENSUS_STAT_SCALAR = 0,       /* Simple scalar */
-  CENSUS_STAT_DISTRIBUTION = 1, /* count, average, variance */
-  CENSUS_STAT_HISTOGRAM = 2,    /* Histogram. */
-  CENSUS_STAT_WINDOW = 3,       /* Count over a time window. */
-  CENSUS_STAT_NSTATS = 4        /* Total number of stats types. */
-} census_stat_type;
+/** Register a new aggregation type.
+  @param descriptor Describes aggregation
+  @return An identifier that can be used to identify the aggregation in other
+  census functions. */
+gpr_int32 census_register_aggregation(
+    const census_aggregation_descriptor *descriptor);
 
-/*
-  Each stats type differs in how it is initialized, how it is represented, and
-  the results it provides. The following structures allow us to use a generic
-  type for each of those.
+/* Aggregation Identifiers for built-in census aggregations. */
+#define CENSUS_AGGREGATION_ID_SCALAR ((gpr_int32)0)
+#define CENSUS_AGGREGATION_ID_DISTRIBUTION ((gpr_int32)1)
+#define CENSUS_AGGREGATION_ID_HISTOGRAM ((gpr_int32)2)
+#define CENSUS_AGGREGATION_ID_WINDOW ((gpr_int32)3)
 
-  Types referenced (one for each stat type in census_stat_type, by creation
-  arguments, output blob, and object representation. */
+/** Information needed to instantiate a new aggregation. Used in view
+    construction via census_define_view(). */
+typedef struct {
+  gpr_int32 id; /* aggregation ID */
+  const void
+      *create_arg; /* Argument to be used for aggregation initialization. */
+} census_aggregation;
 
-typedef struct census_stat_scalar_create_arg census_stat_scalar_create_arg;
-typedef struct census_stat_distribution_create_arg
-    census_stat_distribution_create_arg;
-typedef struct census_stat_histogram_create_arg
-    census_stat_histogram_create_arg;
-typedef struct census_stat_window_create_arg census_stat_window_create_arg;
+/** Type representing a single view. */
+typedef struct census_view census_view;
 
-/**
-  Type for representing information to construct a new instance of a given
-  stats type (e.g. histogram bucket boundaries).
+/** Create a new view.
+  @param tags tags that define the view
+  @param aggregations aggregations to associate with the view
+  @param naggregations number of aggregations
+
+  @return A new census view
 */
-typedef struct {
-  census_stat_type stat_type; /* The "real" type of the stat. */
-  union {
-    const census_stat_scalar_create_arg *scalar_arg;
-    const census_stat_distribution_create_arg *distribution_arg;
-    const census_stat_histogram_create_arg *histogram_arg;
-    const census_stat_window_create_arg *window_arg;
-  }
-} census_stat_create_arg;
+const census_view *census_define_view(const census_tag_set *tags,
+                                      const census_aggregation *aggregations,
+                                      size_t naggregations);
 
-/**
-  Type for representing a single stats result. */
-typedef struct {
-  const census_tag_set *view; /* Unique tags associated with this result. */
-  census_stat_type stat_type;
-  union {
-    const census_stat_scalar_result *scalar_result;
-    const census_stat_distribution_result *distribution_result;
-    const census_stat_histogram_result *histogram_result;
-    const census_stat_window_result *window_result;
-  }
-} census_stat_result;
+/** Number of aggregations associated with view. */
+size_t census_view_naggregations(const census_view *view);
 
-/**
-  Generic type for representing a stat "object".
+/** Get tags associated with view. */
+const census_tag_set *census_view_tags(const census_view *view);
+
+/** Get aggregations associated with a view. */
+const census_aggregation *census_view_aggregrations(const census_view *view);
+
+/** Associate a given view with a metric. Every metric can have many different
+    views.
+  @param metric_id Identifier of metric with which to attah the view
+  @param view View to attach to the metric
+  @return A view identifier: can be used to retrieve aggregation data from
+    the view using census_view_data().
 */
-typdef struct {
-  census_stat_type stat_type;
-  union {
-    census_stat_scalar *scalar;
-    census_stat_distribution *distribution;
-    census_stat_histogram *histogram;
-    census_stat_window *window;
-  }
-} census_stat;
+gpr_int64 census_attach_view(gpr_int32 metric_id, const census_view *view);
 
-/**
-  Structure holding function pointers and associated information needed to
-  manipulate a statstics "object". Every stats type must provide an instance
-  of this structure. */
+/** Holds aggregation data, as it applies to a particular view. This structure
+  is used as one component of the data returned from census_get_view_data(). */
 typedef struct {
-  /* Create a new statistic. The pointer returned can be used in future calls
-     to clone_stat(), destroy_stat(), record_stat() and get_stats(). */
-  (census_stat *) (*create_stat)(const census_stat_create_arg *create_arg);
-  /* Create a new statistic, using an existing one as base. */
-  (census_stat *) (*clone_stat)(const census_stat *stat);
-  /* destroy a stats object created by {create,clone}_stat(). */
-  (void) (*destroy_stat)(census_stat *stat);
-  /* Record a new value against a given statistics object instance. */
-  (void) (*record_stat)(census_stat *stat, double value);
-  /* Return current state of a stat. The object returned can be freed by
-     using destroy_stats_result(). */
-  (const census_stat_result *) (*get_stat)(const census_stat *stat);
-  /* destroy a stats result object, as returned from get_stat(). */
-  (void) (*destroy_stats_result)(census_stat_result *result);
-  /* Reset a stats values. */
-  (void) (*reset_stat)(census_stat *stat);
-} census_stat;
+  /** Aggregation index in original view. Use as (e.g.)
+    census_view_aggregations(view)[index] to get the original
+    census_aggregation structure. */
+  size_t index;
+  /** Data as returned from the data() function for the relevant
+    aggregation descriptor. It is the user responsibility to cast this to the
+    correct type for the aggregation. */
+  void *data;
+} census_aggregation_data;
 
-gpr_int32 census_define_view(const census_tag_set *view);
+/** Holds all the aggregation data for a particular view instantiation. Forms
+  part of the data returned by census_get_view_data(). */
+typedef struct {
+  const census_tag_set *tags;          /* Tags for this set of aggregations */
+  size_t naggregations;                /* Number of aggregations in data. */
+  const census_aggregation_data *data; /* Aggregation data */
+} census_view_aggregation_data;
 
-gpr_int32 census_define_stat(gpr_int32 metric_id, gpr_int32 view_id,
-                             const census_stat *stat,
-                             const census_stat_create_arg *create_arg);
+/** Census view data as returned by census_get_view_data(). */
+typedef struct {
+  const census_view *view; /* Original view */
+  size_t n_tag_sets;       /* Number of unique tag sets that matched view. */
+  const census_view_aggregation_data *data; /* n_tag_sets entries */
+} census_view_data;
 
-census_stat_result *census_get_stat(gpr_int32 stat_id, gpr_int32 *nstats);
+/** Get data from aggregations associated with a view.
+  @param view_id View identifier returned from census_attach_view
+  @param aggregation_indices Indexes of aggregations (relative to original view)
+         for which to return current data. This parameter is ignored if
+         nindices == 0.
+  @param nindices. Number of entries in aggregation_indices. If this is set to
+         0, then all aggregations for the current view are returned.
+*/
+const census_view_data *census_get_view_data(gpr_int64 view_id,
+                                             size_t *aggregation_indices,
+                                             size_t nindices);
+
+/** Reset all view data to zero for the specified view id. */
+void census_reset_view_data(gpr_int64 view_id);
 
 #ifdef __cplusplus
 }
diff --git a/src/core/census/grpc_filter.c b/src/core/census/grpc_filter.c
index fbedb35..45b5656 100644
--- a/src/core/census/grpc_filter.c
+++ b/src/core/census/grpc_filter.c
@@ -37,7 +37,6 @@
 #include <string.h>
 
 #include "include/grpc/census.h"
-#include "src/core/census/rpc_stat_id.h"
 #include "src/core/channel/channel_stack.h"
 #include "src/core/channel/noop_filter.h"
 #include "src/core/statistics/census_interface.h"
@@ -173,25 +172,15 @@
 }
 
 const grpc_channel_filter grpc_client_census_filter = {
-    client_start_transport_op,
-    grpc_channel_next_op,
-    sizeof(call_data),
-    client_init_call_elem,
-    client_destroy_call_elem,
-    sizeof(channel_data),
-    init_channel_elem,
-    destroy_channel_elem,
-    grpc_call_next_get_peer,
-    "census-client"};
+    client_start_transport_op, grpc_channel_next_op,
+    sizeof(call_data),         client_init_call_elem,
+    client_destroy_call_elem,  sizeof(channel_data),
+    init_channel_elem,         destroy_channel_elem,
+    grpc_call_next_get_peer,   "census-client"};
 
 const grpc_channel_filter grpc_server_census_filter = {
-    server_start_transport_op,
-    grpc_channel_next_op,
-    sizeof(call_data),
-    server_init_call_elem,
-    server_destroy_call_elem,
-    sizeof(channel_data),
-    init_channel_elem,
-    destroy_channel_elem,
-    grpc_call_next_get_peer,
-    "census-server"};
+    server_start_transport_op, grpc_channel_next_op,
+    sizeof(call_data),         server_init_call_elem,
+    server_destroy_call_elem,  sizeof(channel_data),
+    init_channel_elem,         destroy_channel_elem,
+    grpc_call_next_get_peer,   "census-server"};
diff --git a/src/core/census/record_stat.c b/src/core/census/rpc_metric_id.h
similarity index 69%
rename from src/core/census/record_stat.c
rename to src/core/census/rpc_metric_id.h
index 3dd9186..2cd30c2 100644
--- a/src/core/census/record_stat.c
+++ b/src/core/census/rpc_metric_id.h
@@ -31,8 +31,21 @@
  *
  */
 
-#include <grpc/census.h>
-#include "src/core/census/rpc_stat_id.h"
+#ifndef CENSUS_RPC_METRIC_ID_H
+#define CENSUS_RPC_METRIC_ID_H
 
-void census_record_stat(census_context *context, census_stat *stats,
-                        size_t nstats) {}
+/* Metric ID's used for RPC measurements. */
+/* Count of client requests sent. */
+#define CENSUS_METRIC_RPC_CLIENT_REQUESTS ((gpr_int32)0)
+/* Count of server requests sent. */
+#define CENSUS_METRIC_RPC_SERVER_REQUESTS ((gpr_int32)1)
+/* Client error counts. */
+#define CENSUS_METRIC_RPC_CLIENT_ERRORS ((gpr_int32)2)
+/* Server error counts. */
+#define CENSUS_METRIC_RPC_SERVER_ERRORS ((gpr_int32)3)
+/* Client side request latency. */
+#define CENSUS_METRIC_RPC_CLIENT_LATENCY ((gpr_int32)4)
+/* Server side request latency. */
+#define CENSUS_METRIC_RPC_SERVER_LATENCY ((gpr_int32)5)
+
+#endif /* CENSUS_RPC_METRIC_ID_H */
diff --git a/src/core/census/rpc_stat_id.h b/src/core/census/rpc_stat_id.h
deleted file mode 100644
index fc0aa6f..0000000
--- a/src/core/census/rpc_stat_id.h
+++ /dev/null
@@ -1,46 +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 CENSUS_RPC_STAT_ID_H
-#define CENSUS_RPC_STAT_ID_H
-
-/* Stats ID's used for RPC measurements. */
-#define CENSUS_INVALID_STAT_ID 0     /* ID 0 is always invalid */
-#define CENSUS_RPC_CLIENT_REQUESTS 1 /* Count of client requests sent. */
-#define CENSUS_RPC_SERVER_REQUESTS 2 /* Count of server requests sent. */
-#define CENSUS_RPC_CLIENT_ERRORS 3   /* Client error counts. */
-#define CENSUS_RPC_SERVER_ERRORS 4   /* Server error counts. */
-#define CENSUS_RPC_CLIENT_LATENCY 5  /* Client side request latency. */
-#define CENSUS_RPC_SERVER_LATENCY 6  /* Server side request latency. */
-
-#endif /* CENSUS_RPC_STAT_ID_H */
diff --git a/third_party/openssl b/third_party/openssl
index 33dd083..3df69d3 160000
--- a/third_party/openssl
+++ b/third_party/openssl
@@ -1 +1 @@
-Subproject commit 33dd08320648ac71d7d9d732be774ed3818dccc5
+Subproject commit 3df69d3aefde7671053d4e3c242b228e5d79c83f
diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal
index 06f0f4e..1fe43ef 100644
--- a/tools/doxygen/Doxyfile.core.internal
+++ b/tools/doxygen/Doxyfile.core.internal
@@ -883,7 +883,7 @@
 src/core/transport/transport.h \
 src/core/transport/transport_impl.h \
 src/core/census/context.h \
-src/core/census/rpc_stat_id.h \
+src/core/census/rpc_metric_id.h \
 src/core/httpcli/httpcli_security_connector.c \
 src/core/security/base64.c \
 src/core/security/client_auth_filter.c \
@@ -1023,7 +1023,6 @@
 src/core/transport/transport_op_string.c \
 src/core/census/context.c \
 src/core/census/initialize.c \
-src/core/census/record_stat.c \
 include/grpc/support/alloc.h \
 include/grpc/support/atm.h \
 include/grpc/support/atm_gcc_atomic.h \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index c7df23a..e8cd3ef 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -12265,7 +12265,7 @@
       "include/grpc/status.h", 
       "src/core/census/context.h", 
       "src/core/census/grpc_filter.h", 
-      "src/core/census/rpc_stat_id.h", 
+      "src/core/census/rpc_metric_id.h", 
       "src/core/channel/channel_args.h", 
       "src/core/channel/channel_stack.h", 
       "src/core/channel/client_channel.h", 
@@ -12397,8 +12397,7 @@
       "src/core/census/grpc_filter.c", 
       "src/core/census/grpc_filter.h", 
       "src/core/census/initialize.c", 
-      "src/core/census/record_stat.c", 
-      "src/core/census/rpc_stat_id.h", 
+      "src/core/census/rpc_metric_id.h", 
       "src/core/channel/channel_args.c", 
       "src/core/channel/channel_args.h", 
       "src/core/channel/channel_stack.c", 
@@ -12744,7 +12743,7 @@
       "include/grpc/status.h", 
       "src/core/census/context.h", 
       "src/core/census/grpc_filter.h", 
-      "src/core/census/rpc_stat_id.h", 
+      "src/core/census/rpc_metric_id.h", 
       "src/core/channel/channel_args.h", 
       "src/core/channel/channel_stack.h", 
       "src/core/channel/client_channel.h", 
@@ -12862,8 +12861,7 @@
       "src/core/census/grpc_filter.c", 
       "src/core/census/grpc_filter.h", 
       "src/core/census/initialize.c", 
-      "src/core/census/record_stat.c", 
-      "src/core/census/rpc_stat_id.h", 
+      "src/core/census/rpc_metric_id.h", 
       "src/core/channel/channel_args.c", 
       "src/core/channel/channel_args.h", 
       "src/core/channel/channel_stack.c", 
diff --git a/vsprojects/grpc/grpc.vcxproj b/vsprojects/grpc/grpc.vcxproj
index b17eea9..fdb637b 100644
--- a/vsprojects/grpc/grpc.vcxproj
+++ b/vsprojects/grpc/grpc.vcxproj
@@ -345,7 +345,7 @@
     <ClInclude Include="..\..\src\core\transport\transport.h" />
     <ClInclude Include="..\..\src\core\transport\transport_impl.h" />
     <ClInclude Include="..\..\src\core\census\context.h" />
-    <ClInclude Include="..\..\src\core\census\rpc_stat_id.h" />
+    <ClInclude Include="..\..\src\core\census\rpc_metric_id.h" />
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\core\httpcli\httpcli_security_connector.c">
@@ -626,8 +626,6 @@
     </ClCompile>
     <ClCompile Include="..\..\src\core\census\initialize.c">
     </ClCompile>
-    <ClCompile Include="..\..\src\core\census\record_stat.c">
-    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\gpr\gpr.vcxproj">
diff --git a/vsprojects/grpc/grpc.vcxproj.filters b/vsprojects/grpc/grpc.vcxproj.filters
index a955e9e..10ec6e6 100644
--- a/vsprojects/grpc/grpc.vcxproj.filters
+++ b/vsprojects/grpc/grpc.vcxproj.filters
@@ -418,9 +418,6 @@
     <ClCompile Include="..\..\src\core\census\initialize.c">
       <Filter>src\core\census</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\src\core\census\record_stat.c">
-      <Filter>src\core\census</Filter>
-    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\include\grpc\grpc_security.h">
@@ -794,7 +791,7 @@
     <ClInclude Include="..\..\src\core\census\context.h">
       <Filter>src\core\census</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\src\core\census\rpc_stat_id.h">
+    <ClInclude Include="..\..\src\core\census\rpc_metric_id.h">
       <Filter>src\core\census</Filter>
     </ClInclude>
   </ItemGroup>
diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj
index a692c48..93e1e0f 100644
--- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj
+++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj
@@ -328,7 +328,7 @@
     <ClInclude Include="..\..\src\core\transport\transport.h" />
     <ClInclude Include="..\..\src\core\transport\transport_impl.h" />
     <ClInclude Include="..\..\src\core\census\context.h" />
-    <ClInclude Include="..\..\src\core\census\rpc_stat_id.h" />
+    <ClInclude Include="..\..\src\core\census\rpc_metric_id.h" />
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\core\surface\init_unsecure.c">
@@ -569,8 +569,6 @@
     </ClCompile>
     <ClCompile Include="..\..\src\core\census\initialize.c">
     </ClCompile>
-    <ClCompile Include="..\..\src\core\census\record_stat.c">
-    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\gpr\gpr.vcxproj">
diff --git a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters
index 1c4036d..ed0896c 100644
--- a/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters
+++ b/vsprojects/grpc_unsecure/grpc_unsecure.vcxproj.filters
@@ -358,9 +358,6 @@
     <ClCompile Include="..\..\src\core\census\initialize.c">
       <Filter>src\core\census</Filter>
     </ClCompile>
-    <ClCompile Include="..\..\src\core\census\record_stat.c">
-      <Filter>src\core\census</Filter>
-    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\include\grpc\byte_buffer.h">
@@ -692,7 +689,7 @@
     <ClInclude Include="..\..\src\core\census\context.h">
       <Filter>src\core\census</Filter>
     </ClInclude>
-    <ClInclude Include="..\..\src\core\census\rpc_stat_id.h">
+    <ClInclude Include="..\..\src\core\census\rpc_metric_id.h">
       <Filter>src\core\census</Filter>
     </ClInclude>
   </ItemGroup>