added HistogramSummary to C API and removed C++ Histogram Summary. All tests pass
diff --git a/tensorflow/c/kernels/BUILD b/tensorflow/c/kernels/BUILD
index 45102ad..ee283d0 100644
--- a/tensorflow/c/kernels/BUILD
+++ b/tensorflow/c/kernels/BUILD
@@ -54,11 +54,8 @@
     deps = [
         "//tensorflow/c:kernels",
         "//tensorflow/c:ops",
-        "//tensorflow/c:tf_datatype",
-        "//tensorflow/c:tf_status",
         "//tensorflow/c:tf_tensor",
         "//tensorflow/core:framework",
-        "//tensorflow/core:lib",
     ],
 )
 
@@ -66,13 +63,21 @@
     op_lib_names = ["histogram"],
     deps = [
         "//tensorflow/c:ops",
-        "//tensorflow/c:tf_datatype",
-        "//tensorflow/c:tf_status",
-        "//tensorflow/c:tf_tensor",
         "//tensorflow/core:lib",
     ],
 )
 
+tf_cc_test(
+    name = "histogram_summary_op_test",
+    srcs = ["histogram_summary_op_test.cc"],
+    deps = [
+        ":histogram_op_lib",
+        ":histogram_summary_op",
+        "//tensorflow/core:test_main",
+        "//tensorflow/core:testlib"
+    ],
+)
+
 # Changes to the Android srcs here should be replicated in
 # tensorflow/contrib/makefile/tf_op_files.txt.
 #
diff --git a/tensorflow/core/kernels/BUILD b/tensorflow/core/kernels/BUILD
index 0dee2a4..415d448 100644
--- a/tensorflow/core/kernels/BUILD
+++ b/tensorflow/core/kernels/BUILD
@@ -3887,7 +3887,11 @@
 tf_kernel_library(
     name = "summary_op",
     prefix = "summary_op",
-    deps = LOGGING_DEPS,
+    deps = LOGGING_DEPS + 
+           [
+            "//tensorflow/c/kernels:histogram_summary_op",
+            "//tensorflow/c/kernels:histogram_op_lib", 
+           ],
 )
 
 tf_kernel_library(
diff --git a/tensorflow/core/kernels/summary_op.cc b/tensorflow/core/kernels/summary_op.cc
index f4c91fc..b35759c 100644
--- a/tensorflow/core/kernels/summary_op.cc
+++ b/tensorflow/core/kernels/summary_op.cc
@@ -72,54 +72,54 @@
   }
 };
 
-template <typename T>
-class SummaryHistoOp : public OpKernel {
- public:
-  // SummaryHistoOp could be extended to take a list of custom bucket
-  // boundaries as an option.
-  explicit SummaryHistoOp(OpKernelConstruction* context) : OpKernel(context) {}
+// template <typename T>
+// class SummaryHistoOp : public OpKernel {
+//  public:
+//   // SummaryHistoOp could be extended to take a list of custom bucket
+//   // boundaries as an option.
+//   explicit SummaryHistoOp(OpKernelConstruction* context) : OpKernel(context) {}
 
-  void Compute(OpKernelContext* c) override {
-    const Tensor& tags = c->input(0);
-    const Tensor& values = c->input(1);
-    const auto flat = values.flat<T>();
-    OP_REQUIRES(c, TensorShapeUtils::IsScalar(tags.shape()),
-                errors::InvalidArgument("tags must be scalar"));
-    // Build histogram of values in "values" tensor
-    histogram::Histogram histo;
-    for (int64 i = 0; i < flat.size(); i++) {
-      const double double_val = static_cast<double>(flat(i));
-      if (Eigen::numext::isnan(double_val)) {
-        c->SetStatus(
-            errors::InvalidArgument("Nan in summary histogram for: ", name()));
-        break;
-      } else if (Eigen::numext::isinf(double_val)) {
-        c->SetStatus(errors::InvalidArgument(
-            "Infinity in summary histogram for: ", name()));
-        break;
-      }
-      histo.Add(double_val);
-    }
+//   void Compute(OpKernelContext* c) override {
+//     const Tensor& tags = c->input(0);
+//     const Tensor& values = c->input(1);
+//     const auto flat = values.flat<T>();
+//     OP_REQUIRES(c, TensorShapeUtils::IsScalar(tags.shape()),
+//                 errors::InvalidArgument("tags must be scalar"));
+//     // Build histogram of values in "values" tensor
+//     histogram::Histogram histo;
+//     for (int64 i = 0; i < flat.size(); i++) {
+//       const double double_val = static_cast<double>(flat(i));
+//       if (Eigen::numext::isnan(double_val)) {
+//         c->SetStatus(
+//             errors::InvalidArgument("Nan in summary histogram for: ", name()));
+//         break;
+//       } else if (Eigen::numext::isinf(double_val)) {
+//         c->SetStatus(errors::InvalidArgument(
+//             "Infinity in summary histogram for: ", name()));
+//         break;
+//       }
+//       histo.Add(double_val);
+//     }
 
-    Summary s;
-    Summary::Value* v = s.add_value();
-    const tstring& tags0 = tags.scalar<tstring>()();
-    v->set_tag(tags0.data(), tags0.size());
-    histo.EncodeToProto(v->mutable_histo(), false /* Drop zero buckets */);
+//     Summary s;
+//     Summary::Value* v = s.add_value();
+//     const tstring& tags0 = tags.scalar<tstring>()();
+//     v->set_tag(tags0.data(), tags0.size());
+//     histo.EncodeToProto(v->mutable_histo(), false /* Drop zero buckets */);
 
-    Tensor* summary_tensor = nullptr;
-    OP_REQUIRES_OK(c, c->allocate_output(0, TensorShape({}), &summary_tensor));
-    CHECK(SerializeToTString(s, &summary_tensor->scalar<tstring>()()));
-  }
-};
+//     Tensor* summary_tensor = nullptr;
+//     OP_REQUIRES_OK(c, c->allocate_output(0, TensorShape({}), &summary_tensor));
+//     CHECK(SerializeToTString(s, &summary_tensor->scalar<tstring>()()));
+//   }
+// };
 
 #define REGISTER(T)                                                       \
   REGISTER_KERNEL_BUILDER(                                                \
       Name("ScalarSummary").Device(DEVICE_CPU).TypeConstraint<T>("T"),    \
-      SummaryScalarOp<T>);                                                \
-  REGISTER_KERNEL_BUILDER(                                                \
-      Name("HistogramSummary").Device(DEVICE_CPU).TypeConstraint<T>("T"), \
-      SummaryHistoOp<T>);
+      SummaryScalarOp<T>);                                                
+  // REGISTER_KERNEL_BUILDER(                                                \
+  //     Name("HistogramSummary").Device(DEVICE_CPU).TypeConstraint<T>("T"), \
+  //     SummaryHistoOp<T>);
 TF_CALL_REAL_NUMBER_TYPES(REGISTER)
 #undef REGISTER
 
diff --git a/tensorflow/core/ops/logging_ops.cc b/tensorflow/core/ops/logging_ops.cc
index 6489074..e620da8 100644
--- a/tensorflow/core/ops/logging_ops.cc
+++ b/tensorflow/core/ops/logging_ops.cc
@@ -94,12 +94,12 @@
     .Attr("T: realnumbertype")
     .SetShapeFn(shape_inference::ScalarShape);
 
-REGISTER_OP("HistogramSummary")
-    .Input("tag: string")
-    .Input("values: T")
-    .Output("summary: string")
-    .Attr("T: realnumbertype = DT_FLOAT")
-    .SetShapeFn(shape_inference::ScalarShape);
+// REGISTER_OP("HistogramSummary")
+//     .Input("tag: string")
+//     .Input("values: T")
+//     .Output("summary: string")
+//     .Attr("T: realnumbertype = DT_FLOAT")
+//     .SetShapeFn(shape_inference::ScalarShape);
 
 REGISTER_OP("ImageSummary")
     .Input("tag: string")