diff --git a/CMakeLists.txt b/CMakeLists.txt
index ce42f3a4b89ca2a94ff75ce0bb9ac8a6b56f155b..4a288d3fcdff6b78df77d38ba46025efcc4497e2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -164,6 +164,7 @@ SET(HDRS_FACTOR
   )
 SET(HDRS_FEATURE
   include/core/feature/feature_base.h
+  include/core/feature/feature_diff_drive.h
   include/core/feature/feature_match.h
   include/core/feature/feature_motion.h
   include/core/feature/feature_odom_2d.h
@@ -283,6 +284,7 @@ SET(SRCS_FACTOR
   )
 SET(SRCS_FEATURE
   src/feature/feature_base.cpp
+  src/feature/feature_diff_drive.cpp
   src/feature/feature_motion.cpp
   src/feature/feature_odom_2d.cpp
   src/feature/feature_pose.cpp
diff --git a/include/core/feature/feature_diff_drive.h b/include/core/feature/feature_diff_drive.h
index dd58371c517d0038a3387aa6e8d050d1b9866983..58703126a1a164ed3eeeebb79c76187cc6b1a057 100644
--- a/include/core/feature/feature_diff_drive.h
+++ b/include/core/feature/feature_diff_drive.h
@@ -38,16 +38,14 @@ WOLF_PTR_TYPEDEFS(FeatureDiffDrive)
 
 class FeatureDiffDrive : public FeatureMotion
 {
-public:
+    public:
 
-  FeatureDiffDrive(const Eigen::VectorXd& _delta_preintegrated,
-                   const Eigen::MatrixXd& _delta_preintegrated_covariance,
-                   const Eigen::VectorXd& _diff_drive_params,
-                   const Eigen::MatrixXd& _jacobian_diff_drive_params);
+        FeatureDiffDrive(const Eigen::VectorXd& _delta_preintegrated,
+                         const Eigen::MatrixXd& _delta_preintegrated_covariance,
+                         const Eigen::VectorXd& _diff_drive_params,
+                         const Eigen::MatrixXd& _jacobian_diff_drive_params);
 
-  virtual ~FeatureDiffDrive() = default;
-
-protected:
+        virtual ~FeatureDiffDrive() = default;
 
 };
 
diff --git a/src/processor/processor_diff_drive.cpp b/src/processor/processor_diff_drive.cpp
index d56e96fa7cd4cf7e2e77d6c769b5cf918df20f2e..6a433be7822f70f307d81b1f4868ba693d7b7237 100644
--- a/src/processor/processor_diff_drive.cpp
+++ b/src/processor/processor_diff_drive.cpp
@@ -29,7 +29,8 @@
 #include "core/processor/processor_diff_drive.h"
 
 #include "core/sensor/sensor_diff_drive.h"
-#include "core/feature/feature_motion.h"
+//#include "core/feature/feature_motion.h"
+#include "core/feature/feature_diff_drive.h"
 #include "core/factor/factor_diff_drive.h"
 
 #include "core/math/SE2.h"
@@ -167,8 +168,7 @@ CaptureMotionPtr ProcessorDiffDrive::emplaceCapture(const FrameBasePtr& _frame_o
 
 FeatureBasePtr ProcessorDiffDrive::emplaceFeature(CaptureMotionPtr _capture_motion)
 {
-    auto key_feature_ptr = FeatureBase::emplace<FeatureMotion>(_capture_motion,
-                                                               "ProcessorDiffDrive",
+    auto key_feature_ptr = FeatureBase::emplace<FeatureDiffDrive>(_capture_motion,
                                                                _capture_motion->getBuffer().back().delta_integr_,
                                                                _capture_motion->getBuffer().back().delta_integr_cov_,
                                                                _capture_motion->getCalibrationPreint(),