diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index ec74555172a9b008ae7de3ad30cd81126f93e7e7..178832312a623555bedd4ed90e682c6bb1d8247a 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -436,6 +436,9 @@ ENDIF(OpenCV_FOUND)
 # Add the capture sub-directory
 ADD_SUBDIRECTORY(captures)
 
+# Add the features sub-directory
+ADD_SUBDIRECTORY(features)
+
 # Add the processor sub-directory
 ADD_SUBDIRECTORY(processors)
 
@@ -483,6 +486,7 @@ ADD_LIBRARY(${PROJECT_NAME}
             ${SRCS_BASE} 
             ${SRCS}
             ${SRCS_CAPTURE}
+            ${SRCS_FEATURE}
             ${SRCS_SENSOR}
             ${SRCS_PROCESSOR}
             #${SRCS_DTASSC} 
@@ -536,6 +540,8 @@ INSTALL(FILES ${HDRS}
 #    DESTINATION include/iri-algorithms/wolf/data_association)
 INSTALL(FILES ${HDRS_CAPTURE}
     DESTINATION include/iri-algorithms/wolf/captures)
+INSTALL(FILES ${HDRS_FEATURE}
+    DESTINATION include/iri-algorithms/wolf/features)
 INSTALL(FILES ${HDRS_SENSOR}
     DESTINATION include/iri-algorithms/wolf/sensors)
 INSTALL(FILES ${HDRS_PROCESSOR}
diff --git a/src/features/CMakeLists.txt b/src/features/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..d3cecc7f4d912bde79675ec88409bca8646939ec
--- /dev/null
+++ b/src/features/CMakeLists.txt
@@ -0,0 +1,9 @@
+INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
+
+# Forward var to parent scope
+
+SET(HDRS_FEATURE ${HDRS_FEATURE}
+                 ${CMAKE_CURRENT_SOURCE_DIR}/feature_diff_drive.h PARENT_SCOPE)
+
+SET(SRCS_FEATURE ${SRCS_FEATURE}
+                 ${CMAKE_CURRENT_SOURCE_DIR}/feature_diff_drive.cpp PARENT_SCOPE)
diff --git a/src/features/feature_diff_drive.cpp b/src/features/feature_diff_drive.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ae1f8a2b3a3298824ffd6703786d901b272a88c6
--- /dev/null
+++ b/src/features/feature_diff_drive.cpp
@@ -0,0 +1,21 @@
+#include "feature_diff_drive.h"
+
+namespace wolf {
+
+FeatureDiffDrive::FeatureDiffDrive(const Eigen::VectorXs& _delta_preintegrated,
+                                   const Eigen::MatrixXs& _delta_preintegrated_covariance,
+                                   const Eigen::VectorXs& _diff_drive_factors,
+                                   const Eigen::MatrixXs& _jacobian_diff_drive_factors) :
+  FeatureBase("DIFF DRIVE", _delta_preintegrated, _delta_preintegrated_covariance),
+  diff_drive_factors_(_diff_drive_factors),
+  jacobian_diff_drive_factors_(_jacobian_diff_drive_factors)
+{
+  //
+}
+
+const Eigen::VectorXs& FeatureDiffDrive::getJacobianFactor() const
+{
+  return jacobian_diff_drive_factors_;
+}
+
+} /* namespace wolf */
diff --git a/src/features/feature_diff_drive.h b/src/features/feature_diff_drive.h
new file mode 100644
index 0000000000000000000000000000000000000000..ac13c490717c66b54c652d9f93e49387672a1d1c
--- /dev/null
+++ b/src/features/feature_diff_drive.h
@@ -0,0 +1,39 @@
+/**
+ * \file feature_diff_drive.h
+ *
+ *  Created on: Oct 27, 2016
+ *  \author: Jeremie Deray
+ */
+
+#ifndef _WOLF_FEATURE_DIFF_DRIVE_H_
+#define _WOLF_FEATURE_DIFF_DRIVE_H_
+
+//Wolf includes
+#include "../feature_base.h"
+
+namespace wolf {
+
+WOLF_PTR_TYPEDEFS(FeatureDiffDrive)
+
+class FeatureDiffDrive : public FeatureBase
+{
+public:
+
+  FeatureDiffDrive(const Eigen::VectorXs& _delta_preintegrated,
+                   const Eigen::MatrixXs& _delta_preintegrated_covariance,
+                   const Eigen::VectorXs& _diff_drive_factors,
+                   const Eigen::MatrixXs& _jacobian_diff_drive_factors);
+
+  virtual ~FeatureDiffDrive() = default;
+
+  const Eigen::VectorXs& getJacobianFactor() const;
+
+protected:
+
+  Eigen::VectorXs diff_drive_factors_;
+  Eigen::VectorXs jacobian_diff_drive_factors_;
+};
+
+} /* namespace wolf */
+
+#endif /* _WOLF_FEATURE_DIFF_DRIVE_H_ */