diff --git a/include/core/processor/processor_base.h b/include/core/processor/processor_base.h
index c940dbf5ffdeed1995138be4e015304b52bc6ec1..da7089c17e3d854b31014cdda3b318dea47037f2 100644
--- a/include/core/processor/processor_base.h
+++ b/include/core/processor/processor_base.h
@@ -20,7 +20,7 @@ class SensorBase;
 namespace wolf {
 
 /*
- * Macro for defining Autoconf processor creator.
+ * Macro for defining Autoconf processor creator for WOLF's high level API.
  *
  * Place a call to this macro inside your class declaration (in the processor_class.h file),
  * preferably just after the constructors.
diff --git a/include/core/processor/processor_diff_drive.h b/include/core/processor/processor_diff_drive.h
index 98e7bfaa308e1a9c9d53efb19f3c047e62952ba8..297ce7a38c139387aac80a987137ee61bb18202f 100644
--- a/include/core/processor/processor_diff_drive.h
+++ b/include/core/processor/processor_diff_drive.h
@@ -34,12 +34,16 @@ class ProcessorDiffDrive : public ProcessorOdom2D
 {
     public:
         ProcessorDiffDrive(ProcessorParamsDiffDrivePtr _params_motion);
-        WOLF_CREATE_PROCESSOR_AUTO(ProcessorDiffDrive, ProcessorParamsDiffDrive);
-        static ProcessorBasePtr create(const std::string& _unique_name, const ProcessorParamsBasePtr _params);
         virtual ~ProcessorDiffDrive();
+        virtual void configure(SensorBasePtr _sensor) override;
+
+        // Factory method for high level API
+        static ProcessorBasePtr create(const std::string& _unique_name,
+                                       const ProcessorParamsBasePtr _params);
+        WOLF_CREATE_PROCESSOR_AUTO(ProcessorDiffDrive, ProcessorParamsDiffDrive);
 
     protected:
-        virtual void configure(SensorBasePtr _sensor) override;
+        // Motion integration
         virtual void computeCurrentDelta(const Eigen::VectorXs& _data,
                                          const Eigen::MatrixXs& _data_cov,
                                          const Eigen::VectorXs& _calib,
diff --git a/include/core/processor/processor_odom_2D.h b/include/core/processor/processor_odom_2D.h
index e62f7a19bd8428fab07a3686f7d08de590af7b27..9d9c8096a6c5af7b641e7885d6a41d28175e123b 100644
--- a/include/core/processor/processor_odom_2D.h
+++ b/include/core/processor/processor_odom_2D.h
@@ -41,10 +41,14 @@ class ProcessorOdom2D : public ProcessorMotion
 {
     public:
         ProcessorOdom2D(ProcessorParamsOdom2DPtr _params);
-        WOLF_CREATE_PROCESSOR_AUTO(ProcessorOdom2D, ProcessorParamsOdom2D);
         virtual ~ProcessorOdom2D();
         virtual void configure(SensorBasePtr _sensor) override { };
 
+        // Factory method for high level API
+        static ProcessorBasePtr create(const std::string& _unique_name,
+                                       const ProcessorParamsBasePtr _params);
+        WOLF_CREATE_PROCESSOR_AUTO(ProcessorOdom2D, ProcessorParamsOdom2D);
+
         virtual bool voteForKeyFrame() override;
 
     protected:
@@ -93,9 +97,6 @@ class ProcessorOdom2D : public ProcessorMotion
     protected:
         ProcessorParamsOdom2DPtr params_odom_2D_;
 
-        // Factory method
-    public:
-        static ProcessorBasePtr create(const std::string& _unique_name, const ProcessorParamsBasePtr _params);
 };
 
 inline Eigen::VectorXs ProcessorOdom2D::deltaZero() const
diff --git a/include/core/processor/processor_odom_3D.h b/include/core/processor/processor_odom_3D.h
index 98bd95e4aec489c1d22ade5ec94689e0614f2762..ce97160321f22053f926c959089fa2444d300000 100644
--- a/include/core/processor/processor_odom_3D.h
+++ b/include/core/processor/processor_odom_3D.h
@@ -61,11 +61,16 @@ class ProcessorOdom3D : public ProcessorMotion
 {
     public:
         ProcessorOdom3D(ProcessorParamsOdom3DPtr _params);
-        WOLF_CREATE_PROCESSOR_AUTO(ProcessorOdom3D, ProcessorParamsOdom3D);
         virtual ~ProcessorOdom3D();
         virtual void configure(SensorBasePtr _sensor) override;
 
+        // Factory method for high level API
+        static ProcessorBasePtr create(const std::string& _unique_name,
+                                       const ProcessorParamsBasePtr _params);
+        WOLF_CREATE_PROCESSOR_AUTO(ProcessorOdom3D, ProcessorParamsOdom3D);
+
     public:
+        // Motion integration
         virtual void computeCurrentDelta(const Eigen::VectorXs& _data,
                                          const Eigen::MatrixXs& _data_cov,
                                          const Eigen::VectorXs& _calib,
@@ -127,10 +132,6 @@ class ProcessorOdom3D : public ProcessorMotion
         Eigen::Map<Eigen::Quaternions> q_out_;
         void remap(const Eigen::VectorXs& _x1, const Eigen::VectorXs& _x2, Eigen::VectorXs& _x_out);
 
-    // Factory method
-    public:
-        static ProcessorBasePtr create(const std::string& _unique_name,
-                                       const ProcessorParamsBasePtr _params);
 };
 
 inline Eigen::VectorXs ProcessorOdom3D::deltaZero() const