diff --git a/demos/hello_wolf/processor_range_bearing.cpp b/demos/hello_wolf/processor_range_bearing.cpp
index fb51ed537d59dca40a69d473c76d53dd5761c712..9510807d443da2458299fe3522fa8c5f49cf0bf5 100644
--- a/demos/hello_wolf/processor_range_bearing.cpp
+++ b/demos/hello_wolf/processor_range_bearing.cpp
@@ -163,7 +163,7 @@ bool ProcessorRangeBearing::storeCapture(CaptureBasePtr _cap_ptr)
 #include "core/processor/factory_processor.h"
 namespace wolf
 {
-WOLF_REGISTER_PROCESSOR("ProcessorRangeBearing", ProcessorRangeBearing)
-WOLF_REGISTER_PROCESSOR_AUTO("ProcessorRangeBearing", ProcessorRangeBearing)
+WOLF_REGISTER_PROCESSOR(ProcessorRangeBearing)
+WOLF_REGISTER_PROCESSOR_AUTO(ProcessorRangeBearing)
 } // namespace wolf
 
diff --git a/demos/hello_wolf/sensor_range_bearing.cpp b/demos/hello_wolf/sensor_range_bearing.cpp
index 4bf5db0509face0d097172ec56855df9b26898ae..54507f9ac53771523b9db8716089113686bc1ca0 100644
--- a/demos/hello_wolf/sensor_range_bearing.cpp
+++ b/demos/hello_wolf/sensor_range_bearing.cpp
@@ -41,6 +41,6 @@ SensorRangeBearing::~SensorRangeBearing()
 #include "core/sensor/factory_sensor.h"
 namespace wolf
 {
-WOLF_REGISTER_SENSOR("SensorRangeBearing", SensorRangeBearing)
-WOLF_REGISTER_SENSOR_AUTO("SensorRangeBearing", SensorRangeBearing)
+WOLF_REGISTER_SENSOR(SensorRangeBearing)
+WOLF_REGISTER_SENSOR_AUTO(SensorRangeBearing)
 } // namespace wolf
diff --git a/include/core/processor/factory_processor.h b/include/core/processor/factory_processor.h
index e744f5325a740ceb1bf3e89a2d374a112925af74..738d3558a41124377dffa39731ed1c859d09f873 100644
--- a/include/core/processor/factory_processor.h
+++ b/include/core/processor/factory_processor.h
@@ -185,9 +185,9 @@ inline std::string FactoryProcessor::getClass()
   return "FactoryProcessor";
 }
 
-#define WOLF_REGISTER_PROCESSOR(ProcessorType, ProcessorName)                                   \
-  namespace{ const bool WOLF_UNUSED ProcessorName##Registered =                                 \
-    wolf::FactoryProcessor::get().registerCreator(ProcessorType, ProcessorName::create); }      \
+#define WOLF_REGISTER_PROCESSOR(ProcessorType)                                   \
+  namespace{ const bool WOLF_UNUSED ProcessorType##Registered =                                 \
+    wolf::FactoryProcessor::get().registerCreator(#ProcessorType, ProcessorType::create); }      \
 
 typedef Factory<ProcessorBase,
         const std::string&,
@@ -199,9 +199,9 @@ inline std::string AutoConfFactoryProcessor::getClass()
 }
 
 
-#define WOLF_REGISTER_PROCESSOR_AUTO(ProcessorType, ProcessorName)                                  \
-  namespace{ const bool WOLF_UNUSED ProcessorName##AutoConfRegistered =                             \
-    wolf::AutoConfFactoryProcessor::get().registerCreator(ProcessorType, ProcessorName::create); }  \
+#define WOLF_REGISTER_PROCESSOR_AUTO(ProcessorType)                                  \
+  namespace{ const bool WOLF_UNUSED ProcessorType##AutoConfRegistered =                             \
+    wolf::AutoConfFactoryProcessor::get().registerCreator(#ProcessorType, ProcessorType::create); }  \
 
 } /* namespace wolf */
 
diff --git a/include/core/processor/processor_tracker_feature.h b/include/core/processor/processor_tracker_feature.h
index b16f2b6c18c03084f1808c2a6a2df275e98fd60b..4cb706c5c3de26da86f3653ef6234251bafb3f7c 100644
--- a/include/core/processor/processor_tracker_feature.h
+++ b/include/core/processor/processor_tracker_feature.h
@@ -111,7 +111,7 @@ class ProcessorTrackerFeature : public ProcessorTracker
          *   - Create the factors, of the correct type, derived from FactorBase
          *     (through FactorAnalytic or FactorSparse).
          */
-        virtual unsigned int processKnown();
+        virtual unsigned int processKnown() override;
 
         /** \brief Track provided features in \b _capture
          * \param _features_in input list of features in \b last to track
@@ -147,7 +147,7 @@ class ProcessorTrackerFeature : public ProcessorTracker
          *
          * WARNING! This function only votes! It does not create KeyFrames!
          */
-        virtual bool voteForKeyFrame() const = 0;
+        virtual bool voteForKeyFrame() const override = 0;
 
         // We overload the advance and reset functions to update the lists of matches
         virtual void advanceDerived() override;
@@ -156,7 +156,7 @@ class ProcessorTrackerFeature : public ProcessorTracker
         /**\brief Process new Features
          *
          */
-        virtual unsigned int processNew(const int& _max_features);
+        virtual unsigned int processNew(const int& _max_features) override;
 
         /** \brief Detect new Features
          * \param _max_features maximum number of features detected (-1: unlimited. 0: none)
@@ -190,7 +190,7 @@ class ProcessorTrackerFeature : public ProcessorTracker
 
         /** \brief Emplaces a new factor for each correspondence between a feature in Capture \b last and a feature in Capture \b origin
          */
-        virtual void establishFactors();
+        virtual void establishFactors() override;
 };
 
 } // namespace wolf
diff --git a/include/core/sensor/factory_sensor.h b/include/core/sensor/factory_sensor.h
index cae320bba5d2e0d380afbca67984e294ac667984..67ef5f597108f7ddc3bc264fb1c0cbc218bdba0a 100644
--- a/include/core/sensor/factory_sensor.h
+++ b/include/core/sensor/factory_sensor.h
@@ -230,9 +230,9 @@ inline std::string FactorySensor::getClass()
   return "FactorySensor";
 }
 
-#define WOLF_REGISTER_SENSOR(SensorType, SensorName)                            \
-  namespace{ const bool WOLF_UNUSED SensorName##Registered =                    \
-    FactorySensor::get().registerCreator(SensorType, SensorName::create); }     \
+#define WOLF_REGISTER_SENSOR(SensorType)                            \
+  namespace{ const bool WOLF_UNUSED SensorType##Registered =                    \
+    FactorySensor::get().registerCreator(#SensorType, SensorType::create); }     \
 
 
 typedef Factory<SensorBase,
@@ -245,9 +245,9 @@ inline std::string AutoConfFactorySensor::getClass()
   return "AutoConfFactorySensor";
 }
 
-#define WOLF_REGISTER_SENSOR_AUTO(SensorType, SensorName)                               \
-  namespace{ const bool WOLF_UNUSED SensorName##AutoConfRegistered =                    \
-     AutoConfFactorySensor::get().registerCreator(SensorType, SensorName::create); }    \
+#define WOLF_REGISTER_SENSOR_AUTO(SensorType)                               \
+  namespace{ const bool WOLF_UNUSED SensorType##AutoConfRegistered =                    \
+     AutoConfFactorySensor::get().registerCreator(#SensorType, SensorType::create); }    \
 
 
 } /* namespace wolf */
diff --git a/include/core/solver/factory_solver.h b/include/core/solver/factory_solver.h
index 4c9971d90a86a57b8254b21a4fc0cad6775b9ee1..b055217828d887169f8e732138b43a4f2067c62a 100644
--- a/include/core/solver/factory_solver.h
+++ b/include/core/solver/factory_solver.h
@@ -219,9 +219,9 @@ inline std::string FactorySolver::getClass()
   return "FactorySolver";
 }
 
-#define WOLF_REGISTER_SOLVER(SolverType, SolverName) \
-  namespace{ const bool WOLF_UNUSED SolverName##Registered = \
-     wolf::FactorySolver::get().registerCreator(SolverType, SolverName::create); } \
+#define WOLF_REGISTER_SOLVER(SolverType) \
+  namespace{ const bool WOLF_UNUSED SolverType##Registered = \
+     wolf::FactorySolver::get().registerCreator(#SolverType, SolverType::create); } \
 
 } /* namespace wolf */
 
diff --git a/include/core/tree_manager/factory_tree_manager.h b/include/core/tree_manager/factory_tree_manager.h
index 7b421461c4c636a5a87ccc35b87fc83213d5b4d0..91f2b9531d91bdad952760a0670ceece4240e86a 100644
--- a/include/core/tree_manager/factory_tree_manager.h
+++ b/include/core/tree_manager/factory_tree_manager.h
@@ -38,9 +38,9 @@ inline std::string FactoryTreeManager::getClass()
   return "FactoryTreeManager";
 }
 
-#define WOLF_REGISTER_TREE_MANAGER(TreeManagerType, TreeManagerName)                                   \
-  namespace{ const bool WOLF_UNUSED TreeManagerName##Registered =                                 \
-    wolf::FactoryTreeManager::get().registerCreator(TreeManagerType, TreeManagerName::create); }      \
+#define WOLF_REGISTER_TREE_MANAGER(TreeManagerType)                     \
+  namespace{ const bool WOLF_UNUSED TreeManagerType##Registered =                                 \
+    wolf::FactoryTreeManager::get().registerCreator(#TreeManagerType, TreeManagerType::create); }      \
 
 typedef Factory<TreeManagerBase,
         const std::string&,
@@ -52,9 +52,9 @@ inline std::string AutoConfFactoryTreeManager::getClass()
 }
 
 
-#define WOLF_REGISTER_TREE_MANAGER_AUTO(TreeManagerType, TreeManagerName)                                  \
-  namespace{ const bool WOLF_UNUSED TreeManagerName##AutoConfRegistered =                             \
-    wolf::AutoConfFactoryTreeManager::get().registerCreator(TreeManagerType, TreeManagerName::create); }  \
+#define WOLF_REGISTER_TREE_MANAGER_AUTO(TreeManagerType)                                  \
+  namespace{ const bool WOLF_UNUSED TreeManagerType##AutoConfRegistered =                             \
+    wolf::AutoConfFactoryTreeManager::get().registerCreator(#TreeManagerType, TreeManagerType::create); }  \
 
 } /* namespace wolf */
 
diff --git a/src/ceres_wrapper/ceres_manager.cpp b/src/ceres_wrapper/ceres_manager.cpp
index c358c072f87b6f9de97b74c689a45e811b25cdee..0d0c6537fedfc21dec63760d877fb56386885adf 100644
--- a/src/ceres_wrapper/ceres_manager.cpp
+++ b/src/ceres_wrapper/ceres_manager.cpp
@@ -517,6 +517,6 @@ const Eigen::SparseMatrixd CeresManager::computeHessian() const
 } // namespace wolf
 #include "core/solver/factory_solver.h"
 namespace wolf {
-    WOLF_REGISTER_SOLVER("CERES", CeresManager)
+    WOLF_REGISTER_SOLVER(CeresManager)
 } // namespace wolf
 
diff --git a/src/processor/processor_diff_drive.cpp b/src/processor/processor_diff_drive.cpp
index f0af0c5e33fcb88a97fe39cb8255122fe66059f9..1bd0ca0ef6cacb1c90d0a7cdf843593bb38ac5ab 100644
--- a/src/processor/processor_diff_drive.cpp
+++ b/src/processor/processor_diff_drive.cpp
@@ -176,7 +176,7 @@ FactorBasePtr ProcessorDiffDrive::emplaceFactor(FeatureBasePtr _feature,
 // Register in the FactoryProcessor
 #include "core/processor/factory_processor.h"
 namespace wolf {
-WOLF_REGISTER_PROCESSOR("ProcessorDiffDrive", ProcessorDiffDrive);
-WOLF_REGISTER_PROCESSOR_AUTO("ProcessorDiffDrive", ProcessorDiffDrive);
+WOLF_REGISTER_PROCESSOR(ProcessorDiffDrive);
+WOLF_REGISTER_PROCESSOR_AUTO(ProcessorDiffDrive);
 } // namespace wolf
 
diff --git a/src/processor/processor_odom_2d.cpp b/src/processor/processor_odom_2d.cpp
index e66cf3d81b224eabd4590e5de62ea95fde5eac04..4a126d901eb291a9d5fc8537b5429b294bfdc025 100644
--- a/src/processor/processor_odom_2d.cpp
+++ b/src/processor/processor_odom_2d.cpp
@@ -173,6 +173,6 @@ FeatureBasePtr ProcessorOdom2d::emplaceFeature(CaptureMotionPtr _capture_motion)
 // Register in the FactoryProcessor
 #include "core/processor/factory_processor.h"
 namespace wolf {
-WOLF_REGISTER_PROCESSOR("ProcessorOdom2d", ProcessorOdom2d);
-WOLF_REGISTER_PROCESSOR_AUTO("ProcessorOdom2d", ProcessorOdom2d);
+WOLF_REGISTER_PROCESSOR(ProcessorOdom2d);
+WOLF_REGISTER_PROCESSOR_AUTO(ProcessorOdom2d);
 } // namespace wolf
diff --git a/src/processor/processor_odom_3d.cpp b/src/processor/processor_odom_3d.cpp
index 95582a657129aa5c4aa4168745671bd6c033ed22..71c77e1e16f9cc3b5b5b76885b64cd67b891bb7b 100644
--- a/src/processor/processor_odom_3d.cpp
+++ b/src/processor/processor_odom_3d.cpp
@@ -249,6 +249,6 @@ FactorBasePtr ProcessorOdom3d::emplaceFactor(FeatureBasePtr _feature_motion, Cap
 // Register in the FactorySensor
 #include "core/processor/factory_processor.h"
 namespace wolf {
-WOLF_REGISTER_PROCESSOR("ProcessorOdom3d", ProcessorOdom3d);
-WOLF_REGISTER_PROCESSOR_AUTO("ProcessorOdom3d", ProcessorOdom3d);
+WOLF_REGISTER_PROCESSOR(ProcessorOdom3d);
+WOLF_REGISTER_PROCESSOR_AUTO(ProcessorOdom3d);
 } // namespace wolf
diff --git a/src/sensor/sensor_diff_drive.cpp b/src/sensor/sensor_diff_drive.cpp
index 8f61afa405a0e316c9b3f60fc59392ae741b3068..03634eb0938d9ae7c6a20b5d5a5d11a201989101 100644
--- a/src/sensor/sensor_diff_drive.cpp
+++ b/src/sensor/sensor_diff_drive.cpp
@@ -50,7 +50,7 @@ SensorDiffDrive::~SensorDiffDrive()
 // Register in the FactorySensor
 #include "core/sensor/factory_sensor.h"
 namespace wolf {
-WOLF_REGISTER_SENSOR("SensorDiffDrive", SensorDiffDrive);
-WOLF_REGISTER_SENSOR_AUTO("SensorDiffDrive", SensorDiffDrive);
+WOLF_REGISTER_SENSOR(SensorDiffDrive);
+WOLF_REGISTER_SENSOR_AUTO(SensorDiffDrive);
 } // namespace wolf
 
diff --git a/src/sensor/sensor_odom_2d.cpp b/src/sensor/sensor_odom_2d.cpp
index f63b0d3c111d292ba965e484d34d569f54bfc9e9..ec7a3b54d3f8163f44276bf8120cb482a3a2fdd7 100644
--- a/src/sensor/sensor_odom_2d.cpp
+++ b/src/sensor/sensor_odom_2d.cpp
@@ -39,6 +39,6 @@ double SensorOdom2d::getRotVarToRotNoiseFactor() const
 // Register in the FactorySensor
 #include "core/sensor/factory_sensor.h"
 namespace wolf {
-WOLF_REGISTER_SENSOR("SensorOdom2d", SensorOdom2d);
-WOLF_REGISTER_SENSOR_AUTO("SensorOdom2d", SensorOdom2d);
+WOLF_REGISTER_SENSOR(SensorOdom2d);
+WOLF_REGISTER_SENSOR_AUTO(SensorOdom2d);
 } // namespace wolf
diff --git a/src/sensor/sensor_odom_3d.cpp b/src/sensor/sensor_odom_3d.cpp
index 2ffa6328950e374ac828b045049ebcc93ec3ea58..58b9b62ee9e111ce84887ba16e728a3494e40b7a 100644
--- a/src/sensor/sensor_odom_3d.cpp
+++ b/src/sensor/sensor_odom_3d.cpp
@@ -42,6 +42,6 @@ SensorOdom3d::~SensorOdom3d()
 // Register in the FactorySensor
 #include "core/sensor/factory_sensor.h"
 namespace wolf {
-WOLF_REGISTER_SENSOR("SensorOdom3d", SensorOdom3d);
-WOLF_REGISTER_SENSOR_AUTO("SensorOdom3d", SensorOdom3d);
+WOLF_REGISTER_SENSOR(SensorOdom3d);
+WOLF_REGISTER_SENSOR_AUTO(SensorOdom3d);
 }
diff --git a/src/tree_manager/tree_manager_sliding_window.cpp b/src/tree_manager/tree_manager_sliding_window.cpp
index 7e59cd114f691e24ea04c1a7dc218501c65d31ca..5816567557bdd2ca5779615834a3f48a418bbabe 100644
--- a/src/tree_manager/tree_manager_sliding_window.cpp
+++ b/src/tree_manager/tree_manager_sliding_window.cpp
@@ -37,7 +37,7 @@ void TreeManagerSlidingWindow::keyFrameCallback(FrameBasePtr _key_frame)
 // Register in the FactoryTreeManager
 #include "core/tree_manager/factory_tree_manager.h"
 namespace wolf {
-WOLF_REGISTER_TREE_MANAGER("TreeManagerSlidingWindow", TreeManagerSlidingWindow);
-WOLF_REGISTER_TREE_MANAGER_AUTO("TreeManagerSlidingWindow", TreeManagerSlidingWindow);
+WOLF_REGISTER_TREE_MANAGER(TreeManagerSlidingWindow);
+WOLF_REGISTER_TREE_MANAGER_AUTO(TreeManagerSlidingWindow);
 } // namespace wolf
 
diff --git a/test/dummy/processor_tracker_feature_dummy.cpp b/test/dummy/processor_tracker_feature_dummy.cpp
index f8ff2b35b86e17cb4e5065cdf77c1a7e71cbc70d..8485d267034febde4f08911108c0773fd67ab892 100644
--- a/test/dummy/processor_tracker_feature_dummy.cpp
+++ b/test/dummy/processor_tracker_feature_dummy.cpp
@@ -98,6 +98,6 @@ FactorBasePtr ProcessorTrackerFeatureDummy::emplaceFactor(FeatureBasePtr _featur
 // Register in the FactoryProcessor
 #include "core/processor/factory_processor.h"
 namespace wolf {
-WOLF_REGISTER_PROCESSOR("ProcessorTrackerFeatureDummy", ProcessorTrackerFeatureDummy)
-WOLF_REGISTER_PROCESSOR_AUTO("ProcessorTrackerFeatureDummy", ProcessorTrackerFeatureDummy)
+WOLF_REGISTER_PROCESSOR(ProcessorTrackerFeatureDummy)
+WOLF_REGISTER_PROCESSOR_AUTO(ProcessorTrackerFeatureDummy)
 } // namespace wolf
diff --git a/test/dummy/processor_tracker_landmark_dummy.cpp b/test/dummy/processor_tracker_landmark_dummy.cpp
index dafb4e6226ab72d818a6e244aec251681c707785..472b21ab150a7945987d0d64d5cd171bdf9975eb 100644
--- a/test/dummy/processor_tracker_landmark_dummy.cpp
+++ b/test/dummy/processor_tracker_landmark_dummy.cpp
@@ -117,7 +117,7 @@ FactorBasePtr ProcessorTrackerLandmarkDummy::emplaceFactor(FeatureBasePtr _featu
 // Register in the FactoryProcessor
 #include "core/processor/factory_processor.h"
 namespace wolf {
-WOLF_REGISTER_PROCESSOR("ProcessorTrackerLandmarkDummy", ProcessorTrackerLandmarkDummy)
-WOLF_REGISTER_PROCESSOR_AUTO("ProcessorTrackerLandmarkDummy", ProcessorTrackerLandmarkDummy)
+WOLF_REGISTER_PROCESSOR(ProcessorTrackerLandmarkDummy)
+WOLF_REGISTER_PROCESSOR_AUTO(ProcessorTrackerLandmarkDummy)
 } // namespace wolf
 
diff --git a/test/dummy/tree_manager_dummy.h b/test/dummy/tree_manager_dummy.h
index 379fdd23902daaa5e3ba9d29a3f6a445f9e21373..ce8e6379ece21e6a5422445b183f0576a88cc720 100644
--- a/test/dummy/tree_manager_dummy.h
+++ b/test/dummy/tree_manager_dummy.h
@@ -53,8 +53,8 @@ class TreeManagerDummy : public TreeManagerBase
 // Register in the FactoryTreeManager
 #include "core/tree_manager/factory_tree_manager.h"
 namespace wolf {
-WOLF_REGISTER_TREE_MANAGER("TreeManagerDummy", TreeManagerDummy)
-WOLF_REGISTER_TREE_MANAGER_AUTO("TreeManagerDummy", TreeManagerDummy)
+WOLF_REGISTER_TREE_MANAGER(TreeManagerDummy)
+WOLF_REGISTER_TREE_MANAGER_AUTO(TreeManagerDummy)
 
 } /* namespace wolf */
 
diff --git a/test/gtest_factor_autodiff.cpp b/test/gtest_factor_autodiff.cpp
index 0ca75836e54c0661be560a623f484bee0e5c592a..b2b28b32d89412e3afbd2f3466946bed6cc1932b 100644
--- a/test/gtest_factor_autodiff.cpp
+++ b/test/gtest_factor_autodiff.cpp
@@ -19,26 +19,6 @@
 using namespace wolf;
 using namespace Eigen;
 
-template <int First, int Last>
-struct static_for
-{
-    template <typename Lambda>
-    static inline constexpr void apply(Lambda const& f)
-    {
-        if (First < Last)
-        {
-            f(std::integral_constant<int, First>{});
-            static_for<First + 1, Last>::apply(f);
-        }
-    }
-};
-template <int N>
-struct static_for<N, N>
-{
-    template <typename Lambda>
-    static inline constexpr void apply(Lambda const& f) {}
-};
-
 
 TEST(FactorAutodiff, AutodiffDummy1)
 {
diff --git a/test/gtest_problem.cpp b/test/gtest_problem.cpp
index 840ea093df7953f25025d1afc2d02197cea1978a..5049df30524900e9a998f961f55d9d9efc5d4275 100644
--- a/test/gtest_problem.cpp
+++ b/test/gtest_problem.cpp
@@ -33,9 +33,6 @@ using namespace Eigen;
 
 // Register in the FactoryProcessor
 #include "core/processor/factory_processor.h"
-namespace wolf {
-WOLF_REGISTER_PROCESSOR("TRACKER FEATURE DUMMY", ProcessorTrackerFeatureDummy)
-} // namespace wolf
 
 
 WOLF_PTR_TYPEDEFS(DummySolverManager);