diff --git a/include/core/processor/processor_tracker_feature_dummy.h b/include/core/processor/processor_tracker_feature_dummy.h
index f16aa35f9ab1475ba5c2cc807de3fbb81dffc683..a68bac64af0ed2670cf37e6587fcaa5d7f945eb8 100644
--- a/include/core/processor/processor_tracker_feature_dummy.h
+++ b/include/core/processor/processor_tracker_feature_dummy.h
@@ -15,6 +15,21 @@
 namespace wolf
 {
     
+WOLF_STRUCT_PTR_TYPEDEFS(ProcessorParamsTrackerFeatureDummy);
+
+struct ProcessorParamsTrackerFeatureDummy : public ProcessorParamsTrackerFeature
+{
+    unsigned int loss_track_ratio; ///< ratio of loosing tracks one of each n
+
+    ProcessorParamsTrackerFeatureDummy() = default;
+    ProcessorParamsTrackerFeatureDummy(std::string _unique_name, const wolf::paramsServer & _server):
+        ProcessorParamsTrackerFeature(_unique_name, _server)
+    {
+        loss_track_ratio = _server.getParam<unsigned int>(_unique_name + "/loss_track_ratio", "10");
+    }
+};
+
+
 WOLF_PTR_TYPEDEFS(ProcessorTrackerFeatureDummy);
     
 //Class
@@ -22,13 +37,14 @@ class ProcessorTrackerFeatureDummy : public ProcessorTrackerFeature
 {
 
     public:
-        ProcessorTrackerFeatureDummy(ProcessorParamsTrackerFeaturePtr _params_tracker_feature);
+        ProcessorTrackerFeatureDummy(ProcessorParamsTrackerFeatureDummyPtr _params_tracker_feature);
         virtual ~ProcessorTrackerFeatureDummy();
         virtual void configure(SensorBasePtr _sensor) { };
 
     protected:
 
         static unsigned int count_;
+        ProcessorParamsTrackerFeatureDummyPtr params_tracker_feature_dummy_;
         unsigned int n_feature_;
 
         /** \brief Track provided features from \b last to \b incoming
@@ -69,10 +85,17 @@ class ProcessorTrackerFeatureDummy : public ProcessorTrackerFeature
 
         virtual FactorBasePtr createFactor(FeatureBasePtr _feature_ptr, FeatureBasePtr _feature_other_ptr);
 
+    public:
+
+        static ProcessorBasePtr create(const std::string& _unique_name,
+                                       const ProcessorParamsBasePtr _params,
+                                       const SensorBasePtr sensor_ptr = nullptr);
+
 };
 
-inline ProcessorTrackerFeatureDummy::ProcessorTrackerFeatureDummy(ProcessorParamsTrackerFeaturePtr _params_tracker_feature) :
-        ProcessorTrackerFeature("TRACKER FEATURE DUMMY", _params_tracker_feature),
+inline ProcessorTrackerFeatureDummy::ProcessorTrackerFeatureDummy(ProcessorParamsTrackerFeatureDummyPtr _params_tracker_feature_dummy) :
+        ProcessorTrackerFeature("TRACKER FEATURE DUMMY", _params_tracker_feature_dummy),
+        params_tracker_feature_dummy_(_params_tracker_feature_dummy),
         n_feature_(0)
 {
     //
diff --git a/src/processor/processor_tracker_feature_dummy.cpp b/src/processor/processor_tracker_feature_dummy.cpp
index c6776995796c55b82a70acd396ea0dca63237190..f213aed65206aac4d8cbb2cdff39262a955fa959 100644
--- a/src/processor/processor_tracker_feature_dummy.cpp
+++ b/src/processor/processor_tracker_feature_dummy.cpp
@@ -21,7 +21,7 @@ unsigned int ProcessorTrackerFeatureDummy::trackFeatures(const FeatureBasePtrLis
 
     for (auto feat_in : _features_last_in)
     {
-        if (++count_ % 3 == 2) // lose one every 3 tracks
+        if (++count_ % params_tracker_feature_dummy_->loss_track_ratio == 0) // lose one every loss_track_ratio tracks
         {
             WOLF_INFO("track: " , feat_in->trackId() , " feature: " , feat_in->id() , " lost!");
         }
@@ -64,7 +64,7 @@ unsigned int ProcessorTrackerFeatureDummy::detectNewFeatures(const int& _max_fea
     for (unsigned int i = 0; i < max_features; i++)
     {
         n_feature_++;
-        FeatureBasePtr ftr(std::make_shared<FeatureBase>("POINT IMAGE",
+        FeatureBasePtr ftr(std::make_shared<FeatureBase>("DUMMY FEATURE",
                                                          n_feature_* Eigen::Vector1s::Ones(),
                                                          Eigen::MatrixXs::Ones(1, 1)));
         _features_incoming_out.push_back(ftr);
@@ -78,14 +78,36 @@ unsigned int ProcessorTrackerFeatureDummy::detectNewFeatures(const int& _max_fea
 }
 
 FactorBasePtr ProcessorTrackerFeatureDummy::createFactor(FeatureBasePtr _feature_ptr,
-                                                                 FeatureBasePtr _feature_other_ptr)
+                                                         FeatureBasePtr _feature_other_ptr)
 {
     WOLF_INFO( "creating factor: track " , _feature_other_ptr->trackId() , " last feature " , _feature_ptr->id()
                , " with origin feature " , _feature_other_ptr->id() );
 
-    auto ctr = std::make_shared<FactorFeatureDummy>(_feature_ptr, _feature_other_ptr, shared_from_this());
+    auto fac = std::make_shared<FactorFeatureDummy>(_feature_ptr, _feature_other_ptr, shared_from_this());
 
-    return ctr;
+    return fac;
 }
 
+ProcessorBasePtr ProcessorTrackerFeatureDummy::create(const std::string& _unique_name,
+                                                      const ProcessorParamsBasePtr _params,
+                                                      const SensorBasePtr)
+{
+    ProcessorParamsTrackerFeatureDummyPtr params = std::static_pointer_cast<ProcessorParamsTrackerFeatureDummy>(_params);
+
+    // if cast failed use default value
+    if (params == nullptr)
+        params = std::make_shared<ProcessorParamsTrackerFeatureDummy>();
+
+    ProcessorTrackerFeatureDummyPtr prc_ptr = std::make_shared<ProcessorTrackerFeatureDummy>(params);
+    prc_ptr->setName(_unique_name);
+
+    return prc_ptr;
+}
+
+} // namespace wolf
+
+// Register in the ProcessorFactory
+#include "core/processor/processor_factory.h"
+namespace wolf {
+WOLF_REGISTER_PROCESSOR("TRACKER FEATURE DUMMY", ProcessorTrackerFeatureDummy)
 } // namespace wolf
diff --git a/test/gtest_problem.cpp b/test/gtest_problem.cpp
index 44fac86d12c9134180c83896d6906ee954a65abf..d36a14461c139e60be272f5f54c883e77ff35999 100644
--- a/test/gtest_problem.cpp
+++ b/test/gtest_problem.cpp
@@ -114,13 +114,7 @@ TEST(Problem, Installers)
     SensorBasePtr    S = P->installSensor   ("ODOM 3D", "odometer",        xs,         wolf_root + "/test/yaml/sensor_odom_3D.yaml");
 
     // install processor tracker (dummy installation under an Odometry sensor -- it's OK for this test)
-    ProcessorParamsTrackerFeaturePtr params = std::make_shared<ProcessorParamsTrackerFeature>();
-    params->time_tolerance = 0.1;
-    params->max_new_features = 5;
-    params->min_features_for_keyframe = 10;
-    // ProcessorBasePtr pt = std::make_shared<ProcessorTrackerFeatureDummy>(ProcessorTrackerFeatureDummy(params));
-    auto pt = ProcessorBase::emplace<ProcessorTrackerFeatureDummy>(S, ProcessorTrackerFeatureDummy(params));
-    // S->addProcessor(pt);
+    auto pt = P->installProcessor("TRACKER FEATURE DUMMY", "dummy", "odometer");
 
     // check motion processor IS NOT set
     ASSERT_FALSE(P->getProcessorMotion());
@@ -250,13 +244,8 @@ TEST(Problem, StateBlocks)
     SensorBasePtr    St = P->installSensor   ("ODOM 2D", "other odometer", xs2d, "");
     ASSERT_EQ(P->getStateBlockNotificationMapSize(), (SizeStd) (2 + 2));
 
-    ProcessorParamsTrackerFeaturePtr params = std::make_shared<ProcessorParamsTrackerFeature>();
-    params->time_tolerance            = 0.1;
-    params->max_new_features          = 5;
-    params->min_features_for_keyframe = 10;
-    
-    auto pt = ProcessorBase::emplace<ProcessorTrackerFeatureDummy>(St, ProcessorTrackerFeatureDummy(params));
-    ProcessorBasePtr pm = P->installProcessor("ODOM 3D",            "odom integrator",      "odometer", wolf_root + "/test/yaml/processor_odom_3D.yaml");
+    auto pt = P->installProcessor("TRACKER FEATURE DUMMY",  "dummy",            "odometer");
+    auto pm = P->installProcessor("ODOM 3D",                "odom integrator",  "other odometer", wolf_root + "/test/yaml/processor_odom_3D.yaml");
 
     // 2 state blocks, estimated
     auto KF = P->emplaceFrame("PO", 3, KEY, xs3d, 0);
@@ -309,11 +298,9 @@ TEST(Problem, Covariances)
     params->time_tolerance            = 0.1;
     params->max_new_features          = 5;
     params->min_features_for_keyframe = 10;
-    // ProcessorBasePtr pt = std::make_shared<ProcessorTrackerFeatureDummy>(ProcessorTrackerFeatureDummy(params));
-    auto pt = ProcessorBase::emplace<ProcessorTrackerFeatureDummy>(St, ProcessorTrackerFeatureDummy(params));
 
-    // St->addProcessor(pt);
-    ProcessorBasePtr pm = P->installProcessor("ODOM 3D",            "odom integrator",      "odometer", wolf_root + "/test/yaml/processor_odom_3D.yaml");
+    auto pt = P->installProcessor("TRACKER FEATURE DUMMY",  "dummy",            "odometer");
+    auto pm = P->installProcessor("ODOM 3D",                "odom integrator",  "other odometer", wolf_root + "/test/yaml/processor_odom_3D.yaml");
 
     // 4 state blocks, estimated
     St->unfixExtrinsics();
diff --git a/test/gtest_processor_base.cpp b/test/gtest_processor_base.cpp
index cff4bc083e1fa349e7986df8d6e4af1bb56b15f6..05ce862fddbdfb76937205e65d49471b0f324795 100644
--- a/test/gtest_processor_base.cpp
+++ b/test/gtest_processor_base.cpp
@@ -38,28 +38,18 @@ TEST(ProcessorBase, KeyFrameCallback)
     ProblemPtr problem = Problem::create("PO", 2);
 
     // Install tracker (sensor and processor)
-    // SensorBasePtr sens_trk = make_shared<SensorBase>("FEATURE", std::make_shared<StateBlock>(Eigen::VectorXs::Zero(2)),
-    //                                                  std::make_shared<StateBlock>(Eigen::VectorXs::Zero(1)),
-    //                                                  std::make_shared<StateBlock>(Eigen::VectorXs::Zero(2)), 2);
-
-    auto sens_trk = SensorBase::emplace<SensorBase>(problem->getHardware(), "FEATURE", std::make_shared<StateBlock>(Eigen::VectorXs::Zero(2)),
+    auto sens_trk = SensorBase::emplace<SensorBase>(problem->getHardware(),
+                                                    "SENSOR BASE",
+                                                    std::make_shared<StateBlock>(Eigen::VectorXs::Zero(2)),
                                                     std::make_shared<StateBlock>(Eigen::VectorXs::Zero(1)),
                                                     std::make_shared<StateBlock>(Eigen::VectorXs::Zero(2)), 2);
-    ProcessorParamsTrackerFeaturePtr params = std::make_shared<ProcessorParamsTrackerFeature>();
-    params->time_tolerance            = dt/2;
-    params->max_new_features          = 5;
-    params->min_features_for_keyframe = 5;
-    // shared_ptr<ProcessorTrackerFeatureDummy> proc_trk = make_shared<ProcessorTrackerFeatureDummy>(params);
-    auto proc_trk = ProcessorBase::emplace<ProcessorTrackerFeatureDummy>(sens_trk, params);
-
-    // problem->addSensor(sens_trk);
-    // sens_trk->addProcessor(proc_trk);
+    auto proc_trk = problem->installProcessor("TRACKER FEATURE DUMMY",  "dummy", sens_trk);
 
     // Install odometer (sensor and processor)
     SensorBasePtr sens_odo = problem->installSensor("ODOM 2D", "odometer", Vector3s(0,0,0), "");
     ProcessorParamsOdom2DPtr proc_odo_params = make_shared<ProcessorParamsOdom2D>();
     proc_odo_params->time_tolerance = dt/2;
-    ProcessorBasePtr proc_odo = problem->installProcessor("ODOM 2D", "odometer", sens_odo, proc_odo_params);
+    ProcessorBasePtr proc_odo = problem->installProcessor("ODOM 2D", "odom processor", sens_odo, proc_odo_params);
 
     std::cout << "sensor & processor created and added to wolf problem" << std::endl;