diff --git a/caffe2/operators/normalize_op.cc b/caffe2/operators/normalize_op.cc
index 5c7d3c7..ec0600c 100644
--- a/caffe2/operators/normalize_op.cc
+++ b/caffe2/operators/normalize_op.cc
@@ -1,34 +1,10 @@
 #include "caffe2/operators/normalize_op.h"
 
 #include "caffe2/core/tensor.h"
-#include "caffe2/utils/eigen_utils.h"
 
 namespace caffe2 {
 
 template <typename T, class Context>
-void NormalizeOp<T, Context>::DoNormalize(
-    const T* xData,
-    T* yData,
-    const int m,
-    const int n,
-    const int sf) {
-  using InnerStride = Eigen::InnerStride<Eigen::Dynamic>;
-  using StridedVec =
-      Eigen::Map<Eigen::Matrix<T, 1, Eigen::Dynamic>, 0, InnerStride>;
-  using ConstStridedVec =
-      Eigen::Map<const Eigen::Matrix<T, 1, Eigen::Dynamic>, 0, InnerStride>;
-
-  for (int i = 0; i < n; ++i) {
-    auto base = (i / sf) * sf * m + (i % sf);
-    ConstStridedVec xVec(xData + base, 1, m, InnerStride(sf));
-    auto norm = xVec.template lpNorm<2>();
-    norm = std::max(norm, kEps_);
-    StridedVec yVec(yData + base, 1, m, InnerStride(sf));
-    yVec = xVec / norm;
-  }
-};
-
-template <typename T, class Context>
 void NormalizeGradientOp<T, Context>::DoNormalize(
     const T* xData,
     const T* gOutData,
diff --git a/caffe2/operators/normalize_op.h b/caffe2/operators/normalize_op.h
index 065484d..57c42e6 100644
--- a/caffe2/operators/normalize_op.h
+++ b/caffe2/operators/normalize_op.h
@@ -3,6 +3,7 @@
 
 #include "caffe2/core/context.h"
 #include "caffe2/core/operator.h"
+#include "caffe2/utils/eigen_utils.h"
 #include "caffe2/utils/math.h"
 
 #define KEPS 1e-12f
@@ -35,8 +36,27 @@
 
  private:
   const T kEps_ = KEPS;
-  void
-  DoNormalize(const T* xData, T* yData, const int m, const int n, const int sf);
+  void DoNormalize(
+      const T* xData,
+      T* yData,
+      const int m,
+      const int n,
+      const int sf) {
+    using InnerStride = Eigen::InnerStride<Eigen::Dynamic>;
+    using StridedVec =
+        Eigen::Map<Eigen::Matrix<T, 1, Eigen::Dynamic>, 0, InnerStride>;
+    using ConstStridedVec =
+        Eigen::Map<const Eigen::Matrix<T, 1, Eigen::Dynamic>, 0, InnerStride>;
+
+    for (int i = 0; i < n; ++i) {
+      auto base = (i / sf) * sf * m + (i % sf);
+      ConstStridedVec xVec(xData + base, 1, m, InnerStride(sf));
+      auto norm = xVec.template lpNorm<2>();
+      norm = std::max(norm, kEps_);
+      StridedVec yVec(yData + base, 1, m, InnerStride(sf));
+      yVec = xVec / norm;
+    }
+  }
 };
 
 template <typename T, class Context>
