diff --git a/src/examples/test_diff_drive.cpp b/src/examples/test_diff_drive.cpp
index acd78de25e0973f134c0cfca0458332748a24ce2..07d272178f3f622745ff8def9848d2512523a426 100644
--- a/src/examples/test_diff_drive.cpp
+++ b/src/examples/test_diff_drive.cpp
@@ -219,6 +219,7 @@ int main(int argc, char** argv)
   t.set(stamp_secs);
   auto processor_diff_drive_ptr =
       std::static_pointer_cast<ProcessorDiffDrive>(wolf_problem_ptr_->getProcessorMotionPtr());
+  processor_diff_drive_ptr->setTimeTolerance(period_secs/2); // overwrite time tolerance based on new evidence
 
   // Set the origin
   // Create one capture to store the Odometry data.
diff --git a/src/examples/test_imuPlateform_Offline.cpp b/src/examples/test_imuPlateform_Offline.cpp
index 487fac3754c1960e6979cc19fdc87a209fea5e6f..7ea086fa410d2a18219da118edb3a85be0d8c959 100644
--- a/src/examples/test_imuPlateform_Offline.cpp
+++ b/src/examples/test_imuPlateform_Offline.cpp
@@ -83,7 +83,7 @@ int main(int argc, char** argv)
 
     // SENSOR + PROCESSOR IMU
     SensorBasePtr sen0_ptr = wolf_problem_ptr_->installSensor("IMU", "Main IMU", (Vector7s()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_imu.yaml");
-    ProcessorIMUParamsPtr prc_imu_params = std::make_shared<ProcessorIMUParams>();
+    ProcessorIMUParamsPtr prc_imu_params = std::make_shared<ProcessorParamsIMU>();
     prc_imu_params->max_time_span = 10;
     prc_imu_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass
     prc_imu_params->dist_traveled = 1000000000;
@@ -96,7 +96,7 @@ int main(int argc, char** argv)
 
     // SENSOR + PROCESSOR ODOM 3D
     SensorBasePtr sen1_ptr = wolf_problem_ptr_->installSensor("ODOM 3D", "odom", (Vector7s()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_odom_3D.yaml");
-    ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorOdom3DParams>();
+    ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorParamsOdom3D>();
     prc_odom3D_params->max_time_span = 1.9999;
     prc_odom3D_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass
     prc_odom3D_params->dist_traveled = 1000000000;
diff --git a/src/examples/test_imu_constrained0.cpp b/src/examples/test_imu_constrained0.cpp
index 185406733ff2d9f5f13520d3a7de08e4c2539952..914f0ee78f74e0e084ee560f8b5e0128be4a89b1 100644
--- a/src/examples/test_imu_constrained0.cpp
+++ b/src/examples/test_imu_constrained0.cpp
@@ -105,7 +105,7 @@ int main(int argc, char** argv)
 
     // SENSOR + PROCESSOR IMU
     SensorBasePtr sen0_ptr = wolf_problem_ptr_->installSensor("IMU", "Main IMU", (Vector7s()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_imu.yaml");
-    ProcessorIMUParamsPtr prc_imu_params = std::make_shared<ProcessorIMUParams>();
+    ProcessorIMUParamsPtr prc_imu_params = std::make_shared<ProcessorParamsIMU>();
     prc_imu_params->max_time_span = 10;
     prc_imu_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass
     prc_imu_params->dist_traveled = 1000000000;
@@ -118,7 +118,7 @@ int main(int argc, char** argv)
 
     // SENSOR + PROCESSOR ODOM 3D
     SensorBasePtr sen1_ptr = wolf_problem_ptr_->installSensor("ODOM 3D", "odom", (Vector7s()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_odom_3D_HQ.yaml");
-    ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorOdom3DParams>();
+    ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorParamsOdom3D>();
     prc_odom3D_params->max_time_span = 20.9999;
     prc_odom3D_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass
     prc_odom3D_params->dist_traveled = 1000000000;
diff --git a/src/processor_IMU.cpp b/src/processor_IMU.cpp
index c31c0533e4a779820d3aebe2fa09f2c7813f8072..06b1522286268331335fdc8bbdedcf3eda87e4d8 100644
--- a/src/processor_IMU.cpp
+++ b/src/processor_IMU.cpp
@@ -3,13 +3,13 @@
 
 namespace wolf {
 
-ProcessorIMU::ProcessorIMU(ProcessorIMUParamsPtr _params) :
-        ProcessorMotion("IMU", 10, 10, 9, 6, 6, 0.01),
-        max_time_span_  (_params ? _params    ->max_time_span   : 1.0  ),
-        max_buff_length_(_params ? _params    ->max_buff_length : 10000   ),
-        dist_traveled_  (_params ? _params    ->dist_traveled   : 1.0  ),
-        angle_turned_   (_params ? _params    ->angle_turned    : 0.2  ),
-        voting_active_  (_params ? _params    ->voting_active    : false  )
+ProcessorIMU::ProcessorIMU(const ProcessorParamsIMU& _params) :
+        ProcessorMotion("IMU", 10, 10, 9, 6, 6, _params.time_tolerance),
+        max_time_span_  (_params.max_time_span   ),
+        max_buff_length_(_params.max_buff_length ),
+        dist_traveled_  (_params.dist_traveled   ),
+        angle_turned_   (_params.angle_turned    ),
+        voting_active_  (_params.voting_active   )
 {
     // Set constant parts of Jacobians
     jacobian_delta_preint_.setIdentity(9,9);                                    // dDp'/dDp, dDv'/dDv, all zeros
@@ -24,12 +24,22 @@ ProcessorIMU::~ProcessorIMU()
 
 ProcessorBasePtr ProcessorIMU::create(const std::string& _unique_name, const ProcessorParamsBasePtr _params, const SensorBasePtr _sen_ptr)
 {
-    // cast inputs to the correct type
-    std::shared_ptr<ProcessorIMUParams> prc_imu_params = std::static_pointer_cast<ProcessorIMUParams>(_params);
+    if (_params)
+    {
+        // cast inputs to the correct type
+        std::shared_ptr<ProcessorParamsIMU> prc_imu_params = std::static_pointer_cast<ProcessorParamsIMU>(_params);
 
-    ProcessorIMUPtr prc_ptr = std::make_shared<ProcessorIMU>(prc_imu_params);
-    prc_ptr->setName(_unique_name);
-    return prc_ptr;
+        ProcessorIMUPtr prc_ptr = std::make_shared<ProcessorIMU>(*prc_imu_params);
+        prc_ptr->setName(_unique_name);
+        return prc_ptr;
+    }
+    else
+    {
+        ProcessorIMUPtr prc_ptr = std::make_shared<ProcessorIMU>();
+
+        prc_ptr->setName(_unique_name);
+        return prc_ptr;
+    }
 }
 
 bool ProcessorIMU::voteForKeyFrame()
diff --git a/src/processor_IMU.h b/src/processor_IMU.h
index b0c77d6b903ee6399caef17f9d0897859ce44f4e..911d50f8cb26f230f1ba8e7e9802bfb1ec820a99 100644
--- a/src/processor_IMU.h
+++ b/src/processor_IMU.h
@@ -8,27 +8,15 @@
 
 
 namespace wolf {
-WOLF_STRUCT_PTR_TYPEDEFS(ProcessorIMUParams);
+WOLF_STRUCT_PTR_TYPEDEFS(ProcessorParamsIMU);
 
-struct ProcessorIMUParams : public ProcessorParamsBase
+struct ProcessorParamsIMU : public ProcessorParamsBase
 {
-        Scalar max_time_span;
-        Size   max_buff_length;
-        Scalar dist_traveled;
-        Scalar angle_turned;
-        bool voting_active; //IMU will not vote for key Frames to be created
-
-
-        ProcessorIMUParams() :
-            max_time_span(0.5),
-            max_buff_length(10),
-            dist_traveled(5),
-            angle_turned(.5),
-            voting_active(false)
-        {
-            type = "IMU";
-            name = "";
-        }
+        Scalar max_time_span    = 0.5;
+        Size   max_buff_length  = 10;
+        Scalar dist_traveled    = 5;
+        Scalar angle_turned     = 0.5;
+        bool voting_active      = false; //IMU will not vote for key Frames to be created
 };
 
 WOLF_PTR_TYPEDEFS(ProcessorIMU);
@@ -36,7 +24,7 @@ WOLF_PTR_TYPEDEFS(ProcessorIMU);
 //class
 class ProcessorIMU : public ProcessorMotion{
     public:
-        ProcessorIMU(ProcessorIMUParamsPtr _params = nullptr);
+        ProcessorIMU(const ProcessorParamsIMU& _params = ProcessorParamsIMU());
         virtual ~ProcessorIMU();
 
     protected:
diff --git a/src/processor_base.h b/src/processor_base.h
index 87ba0f2f73c77b4daf1f2eb0a643b15bcdf8754e..7d7fe4226957be55b61cb601f57bc9cf08e7e416 100644
--- a/src/processor_base.h
+++ b/src/processor_base.h
@@ -110,7 +110,7 @@ struct ProcessorParamsBase
 {
     std::string type;
     std::string name;
-    Scalar time_tolerance;
+    Scalar time_tolerance; ///< maximum time difference between a Keyframe time stamp and a particular Capture of this processor to allow assigning this Capture to the Keyframe.
 };
 
 //class ProcessorBase
diff --git a/src/processor_loopclosure_base.h b/src/processor_loopclosure_base.h
index fa3af48e3496b8aa697edf8012f5e0bc1a9db3a1..1dd3becb335af5c26227465f605bec95e466949e 100644
--- a/src/processor_loopclosure_base.h
+++ b/src/processor_loopclosure_base.h
@@ -8,7 +8,7 @@ namespace wolf{
 
 struct ProcessorParamsLoopClosure : public ProcessorParamsBase
 {
-  virtual ~ProcessorParamsLoopClosure() = default;
+//  virtual ~ProcessorParamsLoopClosure() = default;
 
   // add neccesery parameters for loop closure initialisation here and initialize
   // them in constructor
diff --git a/src/processor_odom_2D.cpp b/src/processor_odom_2D.cpp
index c95bda8bcf458252e69fec35144a49e105855620..38c37f5c15c42cb38fe978e835b949d910c7aaaf 100644
--- a/src/processor_odom_2D.cpp
+++ b/src/processor_odom_2D.cpp
@@ -2,19 +2,14 @@
 namespace wolf
 {
 
-ProcessorOdom2D::ProcessorOdom2D(const Scalar& _dist_traveled_th,
-                                 const Scalar& _theta_traveled_th,
-                                 const Scalar& _cov_det_th,
-                                 const Scalar& _elapsed_time_th,
-                                 const Scalar& _unmeasured_perturbation_std,
-                                 const Scalar& _time_tolerance) :
-        ProcessorMotion("ODOM 2D", 3, 3, 3, 2, 0, _time_tolerance),
-        dist_traveled_th_(_dist_traveled_th),
-        theta_traveled_th_(_theta_traveled_th),
-        cov_det_th_(_cov_det_th),
-        elapsed_time_th_(_elapsed_time_th)
+ProcessorOdom2D::ProcessorOdom2D(const ProcessorParamsOdom2D& _params) :
+                ProcessorMotion("ODOM 2D", 3, 3, 3, 2, 0, _params.time_tolerance),
+                dist_traveled_th_(_params.dist_traveled_th_),
+                theta_traveled_th_(_params.theta_traveled_th_),
+                cov_det_th_(_params.cov_det_th_),
+                elapsed_time_th_(_params.elapsed_time_th_)
 {
-    unmeasured_perturbation_cov_ = _unmeasured_perturbation_std * _unmeasured_perturbation_std * Matrix3s::Identity();
+    unmeasured_perturbation_cov_ = _params.unmeasured_perturbation_std_ * _params.unmeasured_perturbation_std_ * Matrix3s::Identity();
 }
 
 ProcessorOdom2D::~ProcessorOdom2D()
@@ -181,11 +176,7 @@ ProcessorBasePtr ProcessorOdom2D::create(const std::string& _unique_name, const
     {
         std::shared_ptr<ProcessorParamsOdom2D> params = std::static_pointer_cast<ProcessorParamsOdom2D>(_params);
 
-        prc_ptr = std::make_shared<ProcessorOdom2D>(params->dist_traveled_th_,
-                                                    params->theta_traveled_th_,
-                                                    params->cov_det_th_,
-                                                    params->elapsed_time_th_,
-                                                    params->unmeasured_perturbation_std_);
+        prc_ptr = std::make_shared<ProcessorOdom2D>(*params);
     }
     else
     {
diff --git a/src/processor_odom_2D.h b/src/processor_odom_2D.h
index 251533a254b5b1a3b08c1335fed48a8f2d37e4f3..4434b2a84f1a0d186c0ad9e6c7041a5cc2f73a08 100644
--- a/src/processor_odom_2D.h
+++ b/src/processor_odom_2D.h
@@ -21,23 +21,19 @@ WOLF_STRUCT_PTR_TYPEDEFS(ProcessorParamsOdom2D);
 
 struct ProcessorParamsOdom2D : public ProcessorParamsBase
 {
-    Scalar dist_traveled_th_            = 1.0;
-    Scalar theta_traveled_th_           = 0.17;
-    Scalar cov_det_th_                  = 1.0;
-    Scalar elapsed_time_th_             = 1.0;
-    Scalar unmeasured_perturbation_std_ = 0.001;
+    Scalar dist_traveled_th_            = 1.0;      // 1m
+    Scalar theta_traveled_th_           = 0.17;     // 90 degrees
+    Scalar cov_det_th_                  = 1.0;      // 1 rad^2
+    Scalar elapsed_time_th_             = 1.0;      // 1s
+    Scalar unmeasured_perturbation_std_ = 0.001;    // no particular dimension: the same for displacement and angle
 };
 
 class ProcessorOdom2D : public ProcessorMotion
 {
     public:
-        ProcessorOdom2D(const Scalar& _traveled_dist_th             = 1.0,
-                        const Scalar& _theta_traveled_th            = 0.17,
-                        const Scalar& _cov_det_th                   = 1.0,
-                        const Scalar& _elapsed_time_th              = 1.0,
-                        const Scalar& _unmeasured_perturbation_std  = 0.001,
-                        const Scalar& _time_tolerance               = 0.01);
+        ProcessorOdom2D(const ProcessorParamsOdom2D& _params = ProcessorParamsOdom2D());
         virtual ~ProcessorOdom2D();
+
         virtual bool voteForKeyFrame() override;
 
     protected:
diff --git a/src/processor_odom_3D.cpp b/src/processor_odom_3D.cpp
index d0eb4dc5f353af9cf84bf03bfd68c737bffd4237..b5e619163571bdf11ee888d8631ad5ef62826b18 100644
--- a/src/processor_odom_3D.cpp
+++ b/src/processor_odom_3D.cpp
@@ -2,12 +2,12 @@
 namespace wolf
 {
 
-ProcessorOdom3D::ProcessorOdom3D(ProcessorOdom3DParamsPtr _params, SensorOdom3DPtr _sensor_ptr) :
-                ProcessorMotion("ODOM 3D", 7, 7, 6, 6, 0, (_params ? _params->time_tolerance : 0.01) ),
-                max_time_span_  (_params ? _params    ->max_time_span   : 1.0  ),
-                max_buff_length_(_params ? _params    ->max_buff_length : 10   ),
-                dist_traveled_  (_params ? _params    ->dist_traveled   : 1.0  ),
-                angle_turned_   (_params ? _params    ->angle_turned    : 0.5  ),
+ProcessorOdom3D::ProcessorOdom3D(const ProcessorParamsOdom3D& _params, SensorOdom3DPtr _sensor_ptr) :
+                ProcessorMotion("ODOM 3D", 7, 7, 6, 6, 0, _params.time_tolerance ),
+                max_time_span_  ( _params.max_time_span   ),
+                max_buff_length_( _params.max_buff_length ),
+                dist_traveled_  ( _params.dist_traveled   ),
+                angle_turned_   ( _params.angle_turned    ),
                 p1_(nullptr), p2_(nullptr), p_out_(nullptr),
                 q1_(nullptr), q2_(nullptr), q_out_(nullptr)
         {
@@ -261,12 +261,12 @@ Motion ProcessorOdom3D::interpolate(const Motion& _motion_ref, Motion& _motion_s
 ProcessorBasePtr ProcessorOdom3D::create(const std::string& _unique_name, const ProcessorParamsBasePtr _params, const SensorBasePtr _sen_ptr)
 {
     // cast inputs to the correct type
-    std::shared_ptr<ProcessorOdom3DParams> prc_odo_params = std::static_pointer_cast<ProcessorOdom3DParams>(_params);
+    std::shared_ptr<ProcessorParamsOdom3D> prc_odo_params = std::static_pointer_cast<ProcessorParamsOdom3D>(_params);
 
     SensorOdom3DPtr sen_odo =std::static_pointer_cast<SensorOdom3D>(_sen_ptr);
 
     // construct processor
-    ProcessorOdom3DPtr prc_odo = std::make_shared<ProcessorOdom3D>(prc_odo_params, sen_odo);
+    ProcessorOdom3DPtr prc_odo = std::make_shared<ProcessorOdom3D>(*prc_odo_params, sen_odo);
 
     // setup processor
     prc_odo->setName(_unique_name);
diff --git a/src/processor_odom_3D.h b/src/processor_odom_3D.h
index 0827cd3bdd1b63f4910ab911310f355f52e359e7..1dbbf2ad3658c48cf5cf0bc257ade424d6e1f9b2 100644
--- a/src/processor_odom_3D.h
+++ b/src/processor_odom_3D.h
@@ -18,25 +18,14 @@
 
 namespace wolf {
     
-WOLF_STRUCT_PTR_TYPEDEFS(ProcessorOdom3DParams);
+WOLF_STRUCT_PTR_TYPEDEFS(ProcessorParamsOdom3D);
 
-struct ProcessorOdom3DParams : public ProcessorParamsBase
+struct ProcessorParamsOdom3D : public ProcessorParamsBase
 {
-        Scalar max_time_span;
-        Size   max_buff_length;
-        Scalar dist_traveled;
-        Scalar angle_turned;
-
-
-        ProcessorOdom3DParams() :
-            max_time_span(0),
-            max_buff_length(0),
-            dist_traveled(0),
-            angle_turned(0)
-        {
-            type = "ODOM 3D";
-            name = "";
-        }
+        Scalar max_time_span    = 1.0;
+        Size   max_buff_length  = 10;
+        Scalar dist_traveled    = 1.0;
+        Scalar angle_turned     = 0.5;
 };
 
 
@@ -67,7 +56,7 @@ WOLF_PTR_TYPEDEFS(ProcessorOdom3D);
 class ProcessorOdom3D : public ProcessorMotion
 {
     public:
-        ProcessorOdom3D(ProcessorOdom3DParamsPtr _params = nullptr, SensorOdom3DPtr _sensor_ptr = nullptr);
+        ProcessorOdom3D(const ProcessorParamsOdom3D& _params = ProcessorParamsOdom3D(), SensorOdom3DPtr _sensor_ptr = nullptr);
         virtual ~ProcessorOdom3D();
         void setup(SensorOdom3DPtr sen_ptr);
 
diff --git a/src/serialization/cereal/serialization_processor_odom3d_params.h b/src/serialization/cereal/serialization_processor_odom3d_params.h
index 06770f759cbcf96ca77faf3d83a2a16f0822db04..9b658a233d1832f914a2986d133ab61207e3ff52 100644
--- a/src/serialization/cereal/serialization_processor_odom3d_params.h
+++ b/src/serialization/cereal/serialization_processor_odom3d_params.h
@@ -8,7 +8,7 @@
 namespace cereal {
 
 template <class Archive>
-void serialize(Archive& ar, wolf::ProcessorOdom3DParams& o,
+void serialize(Archive& ar, wolf::ProcessorParamsOdom3D& o,
                std::uint32_t const /*version*/)
 {
   ar( cereal::make_nvp("ProcessorParamsBase",
@@ -22,6 +22,6 @@ void serialize(Archive& ar, wolf::ProcessorOdom3DParams& o,
 
 } // namespace cereal
 
-CEREAL_REGISTER_TYPE_WITH_NAME(wolf::ProcessorOdom3DParams, "ProcessorOdom3DParams")
+CEREAL_REGISTER_TYPE_WITH_NAME(wolf::ProcessorParamsOdom3D, "ProcessorOdom3DParams")
 
 #endif /* _WOLF_SERIALIZATION_CEREAL_PROCESSOR_ODOM3D_PARAMS_H_ */
diff --git a/src/test/gtest_constraint_IMU.cpp b/src/test/gtest_constraint_IMU.cpp
index 4c4c85369af796d32bcb6d9f0d207957a7006905..35c5155373f43765b6ad2fce8d95ab1ce19e826d 100644
--- a/src/test/gtest_constraint_IMU.cpp
+++ b/src/test/gtest_constraint_IMU.cpp
@@ -887,7 +887,7 @@ class ConstraintIMU_ODOM_biasTest_Move_NonNullBiasRot : public testing::Test
         WOLF_TRACE("IMU cov: ", sensor_imu->getNoiseCov().diagonal().transpose());
         WOLF_TRACE("ODO cov: ", sensor_odo->getNoiseCov().diagonal().transpose());
 
-        ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorOdom3DParams>();
+        ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorParamsOdom3D>();
         prc_odom3D_params->max_time_span    = 0.0099;
         prc_odom3D_params->max_buff_length  = 1000; //make it very high so that this condition will not pass
         prc_odom3D_params->dist_traveled    = 1000;
@@ -1064,7 +1064,7 @@ class ConstraintIMU_ODOM_biasTest_Move_NonNullBiasRotY : public testing::Test
 
         // SENSOR + PROCESSOR ODOM 3D
         SensorBasePtr sen1_ptr = wolf_problem_ptr_->installSensor("ODOM 3D", "odom", (Vector7s()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_odom_3D_HQ.yaml");
-        ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorOdom3DParams>();
+        ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorParamsOdom3D>();
         prc_odom3D_params->max_time_span = 0.9999;
         prc_odom3D_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass
         prc_odom3D_params->dist_traveled = 1000000000;
@@ -1205,7 +1205,7 @@ class ConstraintIMU_ODOM_biasTest_Move_NonNullBiasRotXY : public testing::Test
 
         // SENSOR + PROCESSOR ODOM 3D
         SensorBasePtr sen1_ptr = wolf_problem_ptr_->installSensor("ODOM 3D", "odom", (Vector7s()<<0,0,0,0,0,0,1).finished(), wolf_root + "/src/examples/sensor_odom_3D_HQ.yaml");
-        ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorOdom3DParams>();
+        ProcessorOdom3DParamsPtr prc_odom3D_params = std::make_shared<ProcessorParamsOdom3D>();
         prc_odom3D_params->max_time_span = 0.9999;
         prc_odom3D_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass
         prc_odom3D_params->dist_traveled = 1000000000;
diff --git a/src/test/gtest_feature_IMU.cpp b/src/test/gtest_feature_IMU.cpp
index 5178fb63deec0af50a7e9a5ded8707c0cf44ba30..9f7e9c444d28dbc28efa29d8a7c01806731a9f26 100644
--- a/src/test/gtest_feature_IMU.cpp
+++ b/src/test/gtest_feature_IMU.cpp
@@ -39,7 +39,7 @@ class FeatureIMU_test : public testing::Test
         IMU_extrinsics << 0,0,0, 0,0,0,1; // IMU pose in the robot
         IntrinsicsIMUPtr sen_imu_params = std::make_shared<IntrinsicsIMU>();
         SensorBasePtr sensor_ptr = problem->installSensor("IMU", "Main IMU", IMU_extrinsics, sen_imu_params);
-        ProcessorIMUParamsPtr prc_imu_params = std::make_shared<ProcessorIMUParams>();
+        ProcessorParamsIMUPtr prc_imu_params = std::make_shared<ProcessorParamsIMU>();
         processor_ptr_ = problem->installProcessor("IMU", "IMU pre-integrator", sensor_ptr, prc_imu_params);
 
     // Time and data variables
diff --git a/src/test/gtest_processor_IMU.cpp b/src/test/gtest_processor_IMU.cpp
index 7d8e3e549fa7a6e7d105184a6799f24608c0c10b..38552b3334d5e0798f29aed417355e11d4ce94f7 100644
--- a/src/test/gtest_processor_IMU.cpp
+++ b/src/test/gtest_processor_IMU.cpp
@@ -85,19 +85,20 @@ TEST(ProcessorIMU_constructors, ALL)
 
     //constructor without any argument
     ProcessorIMUPtr prc0 = std::make_shared<ProcessorIMU>();
-    ASSERT_EQ(prc0->getMaxTimeSpan(), 1.0);
-    ASSERT_EQ(prc0->getMaxBuffLength(), 10000);
-    ASSERT_EQ(prc0->getDistTraveled(), 1.0);
-    ASSERT_EQ(prc0->getAngleTurned(), 0.2);
+    ProcessorParamsIMU params_default;
+    ASSERT_EQ(prc0->getMaxTimeSpan(),   params_default.max_time_span);
+    ASSERT_EQ(prc0->getMaxBuffLength(), params_default.max_buff_length);
+    ASSERT_EQ(prc0->getDistTraveled(),  params_default.dist_traveled);
+    ASSERT_EQ(prc0->getAngleTurned(),   params_default.angle_turned);
 
     //constructor with ProcessorIMUParamsPtr argument only
-    ProcessorIMUParamsPtr param_ptr = std::make_shared<ProcessorIMUParams>();
-    param_ptr->max_time_span = 2.0;
+    ProcessorParamsIMUPtr param_ptr = std::make_shared<ProcessorParamsIMU>();
+    param_ptr->max_time_span =   2.0;
     param_ptr->max_buff_length = 20000;
-    param_ptr->dist_traveled = 2.0;
-    param_ptr->angle_turned = 2.0;
+    param_ptr->dist_traveled =   2.0;
+    param_ptr->angle_turned =    2.0;
 
-    ProcessorIMUPtr prc1 = std::make_shared<ProcessorIMU>(param_ptr);
+    ProcessorIMUPtr prc1 = std::make_shared<ProcessorIMU>(*param_ptr);
     ASSERT_EQ(prc1->getMaxTimeSpan(), param_ptr->max_time_span);
     ASSERT_EQ(prc1->getMaxBuffLength(), param_ptr->max_buff_length);
     ASSERT_EQ(prc1->getDistTraveled(), param_ptr->dist_traveled);
@@ -109,17 +110,17 @@ TEST(ProcessorIMU_constructors, ALL)
     Vector7s extrinsics = (Vector7s()<<1,0,0, 0,0,0,1).finished();
     SensorBasePtr sensor_ptr = problem->installSensor("IMU", "Main IMU", extrinsics, wolf_root + "/src/examples/sensor_imu.yaml");
     ProcessorBasePtr processor_ptr = problem->installProcessor("IMU", "IMU pre-integrator", "Main IMU", "");
-    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxTimeSpan(), 1.0);
-    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxBuffLength(), 10000);
-    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getDistTraveled(), 1.0);
-    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getAngleTurned(), 0.2);
+    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxTimeSpan(),   params_default.max_time_span);
+    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxBuffLength(), params_default.max_buff_length);
+    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getDistTraveled(),  params_default.dist_traveled);
+    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getAngleTurned(),   params_default.angle_turned);
 
     //Factory constructor with yaml
     processor_ptr = problem->installProcessor("IMU", "Sec IMU pre-integrator", "Main IMU", wolf_root + "/src/examples/processor_imu.yaml");
-    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxTimeSpan(), 2.0);
+    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxTimeSpan(),   2.0);
     ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getMaxBuffLength(), 20000);
-    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getDistTraveled(), 2.0);
-    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getAngleTurned(), 0.2);
+    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getDistTraveled(),  2.0);
+    ASSERT_EQ(std::static_pointer_cast<ProcessorIMU>(processor_ptr)->getAngleTurned(),   0.2);
 }
 
 TEST(ProcessorIMU, voteForKeyFrame)
@@ -137,7 +138,7 @@ TEST(ProcessorIMU, voteForKeyFrame)
     ProblemPtr problem = Problem::create("POV 3D");
     Vector7s extrinsics = (Vector7s()<<1,0,0, 0,0,0,1).finished();
     SensorBasePtr sensor_ptr = problem->installSensor("IMU", "Main IMU", extrinsics,  wolf_root + "/src/examples/sensor_imu.yaml");
-    ProcessorIMUParamsPtr prc_imu_params = std::make_shared<ProcessorIMUParams>();
+    ProcessorParamsIMUPtr prc_imu_params = std::make_shared<ProcessorParamsIMU>();
     prc_imu_params->max_time_span = 1;
     prc_imu_params->max_buff_length = 1000000000; //make it very high so that this condition will not pass
     prc_imu_params->dist_traveled = 1000000000;
diff --git a/src/test/serialization/cereal/gtest_serialization_processor_odom3d_params.cpp b/src/test/serialization/cereal/gtest_serialization_processor_odom3d_params.cpp
index ed2aaab3b9b257a708b680db2e38d7b6eb51d592..7a84ef3ffd56301409146ca855e313eef20d79f4 100644
--- a/src/test/serialization/cereal/gtest_serialization_processor_odom3d_params.cpp
+++ b/src/test/serialization/cereal/gtest_serialization_processor_odom3d_params.cpp
@@ -31,7 +31,7 @@ public:
 
   const std::string path_to_io = "/tmp/";
 
-  wolf::ProcessorOdom3DParams nb_;
+  wolf::ProcessorParamsOdom3D nb_;
 };
 
 TEST_F(WolfTestCerealSerializationProcessorOdom3DParams,
@@ -39,7 +39,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams,
 {
   const std::string filename(path_to_io + "params_odom3d_serialization.xml");
 
-  wolf::ProcessorOdom3DParams nb_save;
+  wolf::ProcessorParamsOdom3D nb_save;
   nb_save.name = "NAME2";
   //nb_.type = "ODOM 3D";
 
@@ -51,7 +51,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams,
   ASSERT_NO_THROW( wolf::save( filename, nb_, nb_save, 10 ) );
 
   {
-    wolf::ProcessorOdom3DParams nb_load;
+    wolf::ProcessorParamsOdom3D nb_load;
 
     ASSERT_NO_THROW( wolf::load( filename, nb_load ) );
 
@@ -62,7 +62,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams,
     ASSERT_EQ(nb_load.dist_traveled,   nb_.dist_traveled);
     ASSERT_EQ(nb_load.angle_turned,    nb_.angle_turned);
 
-    wolf::ProcessorOdom3DParams nb_load0, nb_load1;
+    wolf::ProcessorParamsOdom3D nb_load0, nb_load1;
     int myint;
     ASSERT_NO_THROW( wolf::load( filename, nb_load0, nb_load1, myint ) );
 
@@ -95,7 +95,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams,
 
   {
     wolf::ProcessorParamsBasePtr nb =
-        std::make_shared<wolf::ProcessorOdom3DParams>(nb_);
+        std::make_shared<wolf::ProcessorParamsOdom3D>(nb_);
 
     ASSERT_NO_THROW( wolf::save( filename, nb ) );
   }
@@ -106,7 +106,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams,
     ASSERT_NO_THROW( wolf::load( filename, nb ) );
 
     wolf::ProcessorOdom3DParamsPtr nb_cast =
-        std::dynamic_pointer_cast<wolf::ProcessorOdom3DParams>(nb);
+        std::dynamic_pointer_cast<wolf::ProcessorParamsOdom3D>(nb);
 
     ASSERT_TRUE(nb_cast != nullptr);
 
@@ -130,7 +130,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams,
 
   ASSERT_NO_THROW( wolf::save( filename, nb_ ) );
 
-  wolf::ProcessorOdom3DParams nb_load;
+  wolf::ProcessorParamsOdom3D nb_load;
 
   ASSERT_NO_THROW( wolf::load( filename, nb_load ) );
 
@@ -153,7 +153,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams,
 
   {
     wolf::ProcessorParamsBasePtr nb =
-        std::make_shared<wolf::ProcessorOdom3DParams>(nb_);
+        std::make_shared<wolf::ProcessorParamsOdom3D>(nb_);
 
     ASSERT_NO_THROW( wolf::save( filename, nb ) );
   }
@@ -164,7 +164,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams,
     ASSERT_NO_THROW( wolf::load( filename, nb ) );
 
     wolf::ProcessorOdom3DParamsPtr nb_cast =
-        std::dynamic_pointer_cast<wolf::ProcessorOdom3DParams>(nb);
+        std::dynamic_pointer_cast<wolf::ProcessorParamsOdom3D>(nb);
 
     ASSERT_TRUE(nb_cast != nullptr);
 
@@ -188,7 +188,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams,
 
   ASSERT_NO_THROW( wolf::save( filename, nb_ ) );
 
-  wolf::ProcessorOdom3DParams nb_load;
+  wolf::ProcessorParamsOdom3D nb_load;
 
   ASSERT_NO_THROW( wolf::load( filename, nb_load ) );
 
@@ -211,7 +211,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams,
 
   {
     wolf::ProcessorParamsBasePtr nb =
-        std::make_shared<wolf::ProcessorOdom3DParams>(nb_);
+        std::make_shared<wolf::ProcessorParamsOdom3D>(nb_);
 
     ASSERT_NO_THROW( wolf::save( filename, nb ) );
   }
@@ -222,7 +222,7 @@ TEST_F(WolfTestCerealSerializationProcessorOdom3DParams,
     ASSERT_NO_THROW( wolf::load( filename, nb ) );
 
     wolf::ProcessorOdom3DParamsPtr nb_cast =
-        std::dynamic_pointer_cast<wolf::ProcessorOdom3DParams>(nb);
+        std::dynamic_pointer_cast<wolf::ProcessorParamsOdom3D>(nb);
 
     ASSERT_TRUE(nb_cast != nullptr);
 
diff --git a/src/yaml/processor_IMU_yaml.cpp b/src/yaml/processor_IMU_yaml.cpp
index 4b04af6253f3852b889e031f7e2c1ded71bb1856..06b5f415c85a83407d676652dfbbcaeea3ffe836 100644
--- a/src/yaml/processor_IMU_yaml.cpp
+++ b/src/yaml/processor_IMU_yaml.cpp
@@ -34,7 +34,7 @@ static ProcessorParamsBasePtr createProcessorIMUParams(const std::string & _file
 
         YAML::Node kf_vote = config["keyframe vote"];
 
-        ProcessorIMUParamsPtr params = std::make_shared<ProcessorIMUParams>();
+        ProcessorParamsIMUPtr params = std::make_shared<ProcessorParamsIMU>();
 
         params->type                = processor_type;
         params->name                = processor_name;
diff --git a/src/yaml/processor_odom_3D_yaml.cpp b/src/yaml/processor_odom_3D_yaml.cpp
index a8fbce5997d01b90abc2340fddb2556f4bfc2f91..450fec00b84ee22c1013640c168260fa229c7c11 100644
--- a/src/yaml/processor_odom_3D_yaml.cpp
+++ b/src/yaml/processor_odom_3D_yaml.cpp
@@ -34,7 +34,7 @@ static ProcessorParamsBasePtr createProcessorOdom3DParams(const std::string & _f
 
         YAML::Node kf_vote = config["keyframe vote"];
 
-        ProcessorOdom3DParamsPtr params = std::make_shared<ProcessorOdom3DParams>();
+        ProcessorParamsOdom3DPtr params = std::make_shared<ProcessorParamsOdom3D>();
 
         params->type                = processor_type;
         params->name                = processor_name;