diff --git a/include/core/processor/motion_provider.h b/include/core/processor/motion_provider.h
index 4b2ddb5f28fb255194bc887a87570afc5b90e2e7..3a2eb71de4eaeae9228c0e40b86fc045a5fd5314 100644
--- a/include/core/processor/motion_provider.h
+++ b/include/core/processor/motion_provider.h
@@ -45,7 +45,7 @@ class MotionProvider
     VectorComposite getOdometry() const;
     void            setOdometry(const VectorComposite&);
 
-    bool isStateGetter() const;
+    bool isStateProvider() const;
     int  getOrder() const;
     void setOrder(int);
 
@@ -66,7 +66,8 @@ class MotionProvider
 
   protected:
     TypeComposite state_types_;
-    YAML::Node    params_motion_provider_;
+    bool          is_state_provider_;
+    double        state_provider_order_;
 
   private:
     VectorComposite    odometry_;
@@ -74,7 +75,9 @@ class MotionProvider
 };
 
 inline MotionProvider::MotionProvider(const TypeComposite& _state_types, const YAML::Node& _params)
-    : state_types_(_state_types), params_motion_provider_(Clone(_params))
+    : state_types_(_state_types),
+      is_state_provider_(_params["state_provider"].as<bool>()),
+      state_provider_order_(_params["state_provider_order"].as<double>())
 {
     checkTypeComposite(_state_types);
 }
@@ -86,23 +89,23 @@ namespace wolf
 {
 inline MotionProvider::~MotionProvider() {}
 
-inline bool MotionProvider::isStateGetter() const
+inline bool MotionProvider::isStateProvider() const
 {
-    return params_motion_provider_["state_provider"].as<bool>();
+    return is_state_provider_;
 }
 
 inline int MotionProvider::getOrder() const
 {
-    if (not isStateGetter())
-        throw std::runtime_error("MotionProvider::getOrder: motion provider not state getter, doesn't have order");
-    return params_motion_provider_["state_provider_order"].as<int>();
+    if (not isStateProvider())
+        throw std::runtime_error("MotionProvider::getOrder: not a motion provider, doesn't have order");
+    return state_provider_order_;
 }
 
 inline void MotionProvider::setOrder(int _order)
 {
-    if (not isStateGetter())
-        throw std::runtime_error("MotionProvider::getOrder: motion provider not state getter, cannot have order");
-    params_motion_provider_["state_provider_order"] = _order;
+    if (not isStateProvider())
+        throw std::runtime_error("MotionProvider::getOrder: not a motion provider, cannot have order");
+    state_provider_order_ = _order;
 }
 
 } /* namespace wolf */
diff --git a/src/problem/problem.cpp b/src/problem/problem.cpp
index 6d4bbe71278ce55c6b7110a635a0fa85835c3d10..6dd69ff8e66ef9166f152513750f79c65391faa1 100644
--- a/src/problem/problem.cpp
+++ b/src/problem/problem.cpp
@@ -163,17 +163,18 @@ ProblemPtr Problem::autoSetup(YAML::Node               _param_node,
     }
 
     // SENSORS ===============================================================================
-    // load plugin if sensor is not registered
     WOLF_DEBUG("Installing sensors...");
     for (auto sensor_n : _param_node["sensors"]) problem->installSensor(sensor_n);
 
     // PROCESSORS ===============================================================================
-    // load plugin if processor is not registered
     WOLF_DEBUG("Installing processors...");
-    for (auto processor_n : _param_node["processors"]) problem->installProcessor(processor_n);
+    for (auto processor_n : _param_node["processors"])
+    {
+        WOLF_DEBUG("Installing processor with the following YAML::Node:\n", processor_n);
+        problem->installProcessor(processor_n);
+    }
 
     // MAP (optional) ===============================================================================
-    // Default MapBase
     WOLF_DEBUG("Creating map...");
     // load plugin if map is not registered
     if (not FactoryMapNode::isCreatorRegistered(_param_node["map"]["type"].as<std::string>()))
@@ -313,16 +314,21 @@ ProcessorBasePtr Problem::installProcessor(const YAML::Node& _processor_node, st
     }
     // Create processor (with derived class validation)
     ProcessorBasePtr prc_ptr = FactoryProcessorNode::create(processor_type, _processor_node, _schema_folders);
+    WOLF_DEBUG("Processor created: ", prc_ptr->getName());
 
     if (not prc_ptr) throw std::runtime_error("Processor could not be created.");
 
     // Dimension check
+    WOLF_DEBUG("Checking dimension compatible: ", prc_ptr->getName());
     if (prc_ptr->getDimCompatible() != 0 and prc_ptr->getDimCompatible() != this->getDim())
         throw std::runtime_error("Processor not compatible with the Problem dimension.");
 
     // Link
+    WOLF_DEBUG("Configuring: ", prc_ptr->getName());
     prc_ptr->configure(sen_ptr);
+    WOLF_DEBUG("linking: ", prc_ptr->getName(), " with ", sen_ptr->getName());
     prc_ptr->link(sen_ptr);
+    WOLF_DEBUG("Processor installed correctly - ", prc_ptr->getName());
 
     return prc_ptr;
 }
@@ -374,6 +380,7 @@ ProcessorBasePtr Problem::installProcessor(SensorBasePtr            _sensor_corr
     prc_ptr->configure(_sensor_corresponding);
     prc_ptr->link(_sensor_corresponding);
 
+    WOLF_DEBUG("Processor installed: ", prc_ptr->getName());
     return prc_ptr;
 }
 
@@ -771,8 +778,9 @@ void Problem::setTreeManager(TreeManagerBasePtr _gm)
 
 void Problem::addMotionProvider(MotionProviderPtr _motion_provider_ptr)
 {
+    WOLF_DEBUG("Adding MotionProvider processor with priority = ", _motion_provider_ptr->getOrder());
     // Check if is state getter
-    if (not _motion_provider_ptr->isStateGetter())
+    if (not _motion_provider_ptr->isStateProvider())
     {
         WOLF_WARN("adding a MotionProvider processor with state_provider=false. Not adding this processor");
         return;
diff --git a/src/processor/motion_provider.cpp b/src/processor/motion_provider.cpp
index c943858c9276eb1da7e8d7b8065ace59a6c5dd1c..4a11336ee5f775393bd827c6d3d96f1514a44253 100644
--- a/src/processor/motion_provider.cpp
+++ b/src/processor/motion_provider.cpp
@@ -25,9 +25,9 @@ using namespace wolf;
 
 void MotionProvider::addToProblem(ProblemPtr _prb_ptr, MotionProviderPtr _motion_ptr)
 {
-    WOLF_DEBUG_COND(not isStateGetter(),
+    WOLF_DEBUG_COND(not isStateProvider(),
                     "MotionProvider processor with 'state_provider'=false. Not adding this processor");
-    if (isStateGetter())
+    if (isStateProvider())
     {
         _prb_ptr->addMotionProvider(_motion_ptr);
     }
diff --git a/src/processor/processor_base.cpp b/src/processor/processor_base.cpp
index 10b3e1a5897bd38d087048d0e7a2ae68df603bf0..b519c7f61d47b6bf938fb01620f2b59877044092 100644
--- a/src/processor/processor_base.cpp
+++ b/src/processor/processor_base.cpp
@@ -146,14 +146,19 @@ void ProcessorBase::link(SensorBasePtr _sen_ptr)
 
     if (_sen_ptr)
     {
+        WOLF_DEBUG("adding processor to sensor");
         _sen_ptr->addProcessor(shared_from_this());
+        WOLF_DEBUG("set sensor to processor");
         this->setSensor(_sen_ptr);
+        WOLF_DEBUG("set problem to processor");
         this->setProblem(_sen_ptr->getProblem());
+        WOLF_DEBUG("done!");
     }
     else
     {
         WOLF_WARN("Linking Processor ", id(), " to a nullptr");
     }
+    WOLF_DEBUG("done!!");
 }
 
 void ProcessorBase::setProblem(ProblemPtr _problem)
diff --git a/test/gtest_motion_provider.cpp b/test/gtest_motion_provider.cpp
index cc6aa536174811598d0c08022830ec7e8d06ed51..abf74cb9f7c2bb23f75684fabd7df5d510ad4dd9 100644
--- a/test/gtest_motion_provider.cpp
+++ b/test/gtest_motion_provider.cpp
@@ -93,9 +93,9 @@ TEST_F(MotionProviderTest, install)
     ASSERT_TRUE(mp3 != nullptr);
 
     // well configured
-    ASSERT_FALSE(mp1->isStateGetter());
-    ASSERT_TRUE(mp2->isStateGetter());
-    ASSERT_TRUE(mp3->isStateGetter());
+    ASSERT_FALSE(mp1->isStateProvider());
+    ASSERT_TRUE(mp2->isStateProvider());
+    ASSERT_TRUE(mp3->isStateProvider());
     ASSERT_EQ(mp2->getOrder(), 1);
     ASSERT_EQ(mp3->getOrder(), 2);  // If duplicated priority, 2nd is changed to +1 priority. A WARN should be raised.
     ASSERT_TRUE(mp1->getStateTypes().has('P'));