diff --git a/include/laser/processor/processor_odom_icp.h b/include/laser/processor/processor_odom_icp.h
index 5c6c16e25c2db253a23a52b07184997df8ca94a1..221160f8fe2f3a9543f5d7eac75ed5a9186f3deb 100644
--- a/include/laser/processor/processor_odom_icp.h
+++ b/include/laser/processor/processor_odom_icp.h
@@ -88,9 +88,8 @@ class ProcessorOdomICP : public ProcessorTracker
 
     public:
         ProcessorOdomICP(ProcessorParamsOdomICPPtr _params);
+        WOLF_PROCESSOR_CREATE(ProcessorOdomICP, ProcessorParamsOdomICP);
         virtual ~ProcessorOdomICP();
-        static ProcessorBasePtr create(const std::string& _unique_name, const ProcessorParamsBasePtr _params, const SensorBasePtr);
-        static ProcessorBasePtr createAutoConf(const std::string& _unique_name, const ParamsServer& _server, const SensorBasePtr sensor_ptr);
         virtual void configure(SensorBasePtr _sensor) override;
 
     protected:
diff --git a/include/laser/processor/processor_tracker_feature_polyline_2D.h b/include/laser/processor/processor_tracker_feature_polyline_2D.h
index 90eb72e10483ae5d2f2f7447885f7870019e94f7..f50d33fd87074be6dd234990a63ba2cc50787a33 100644
--- a/include/laser/processor/processor_tracker_feature_polyline_2D.h
+++ b/include/laser/processor/processor_tracker_feature_polyline_2D.h
@@ -38,6 +38,18 @@ typedef std::map<Scalar,LandmarkMatchPolyline2DPtr> LandmarkMatchPolyline2DScala
 
 struct ProcessorParamsTrackerFeaturePolyline2D : public ProcessorParamsTrackerFeature
 {
+        ProcessorParamsTrackerFeaturePolyline2D() = default;
+        ProcessorParamsTrackerFeaturePolyline2D(std::string _unique_name, const wolf::ParamsServer & _server) :
+            ProcessorParamsTrackerFeature(_unique_name, _server)
+        {
+            // TODO write parser!
+        }
+        std::string print()
+        {
+            return "\n" + ProcessorParamsTrackerFeature::print();
+            // TODO write printer!
+        }
+
     laserscanutils::LineFinderIterativeParams line_finder_params;
     Scalar match_feature_position_sq_norm_max;
     Scalar match_feature_orientation_sq_norm_max;
@@ -83,6 +95,7 @@ class ProcessorTrackerFeaturePolyline2D : public ProcessorTrackerFeature
 
     public:
         ProcessorTrackerFeaturePolyline2D(ProcessorParamsTrackerFeaturePolyline2DPtr _params);
+        WOLF_PROCESSOR_CREATE(ProcessorTrackerFeaturePolyline2D, ProcessorParamsTrackerFeaturePolyline2D);
 
         virtual ~ProcessorTrackerFeaturePolyline2D();
 
@@ -244,14 +257,6 @@ class ProcessorTrackerFeaturePolyline2D : public ProcessorTrackerFeature
 
     public:
 
-        /// @brief Factory method
-        static ProcessorBasePtr create(const std::string& _unique_name,
-                                       const ProcessorParamsBasePtr _params);
-
-        static ProcessorBasePtr createAutoConf(const std::string& _unique_name,
-                                               const ParamsServer& _server,
-                                               const SensorBasePtr _sensor_ptr);
-
         const FeatureBasePtrList& getLastNewFeatures() const
         {
             return untracked_features_last_;
diff --git a/include/laser/sensor/sensor_laser_2D.h b/include/laser/sensor/sensor_laser_2D.h
index 23ffe2cda1bea63202620dda4607d489434973e2..fa4913736945bf2a620db3ae4f08d90570052be4 100644
--- a/include/laser/sensor/sensor_laser_2D.h
+++ b/include/laser/sensor/sensor_laser_2D.h
@@ -84,6 +84,7 @@ class SensorLaser2D : public SensorBase
         SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr, const IntrinsicsLaser2D& _params);
         SensorLaser2D(StateBlockPtr _p_ptr, StateBlockPtr _o_ptr, IntrinsicsLaser2DPtr _params);
         SensorLaser2D(const Eigen::VectorXs& _extrinsics, IntrinsicsLaser2DPtr _params);
+        WOLF_SENSOR_CREATE(SensorLaser2D, IntrinsicsLaser2D, 3);
 
         virtual ~SensorLaser2D();
 
@@ -104,9 +105,7 @@ class SensorLaser2D : public SensorBase
         const laserscanutils::LaserScanParams & getScanParams() const;
 
     public:
-        static SensorBasePtr create(const std::string& _unique_name, const Eigen::VectorXs& _extrinsics_po, const IntrinsicsBasePtr _intrinsics);
-        static SensorBasePtr createAutoConf(const std::string& _unique_name, const ParamsServer& _server);
-        static IntrinsicsBasePtr createParams(const std::string& _filename_dot_yaml);
+//        static IntrinsicsBasePtr createParams(const std::string& _filename_dot_yaml);
 
 };
 
diff --git a/src/processor/processor_odom_icp.cpp b/src/processor/processor_odom_icp.cpp
index f581f09018bd670f22afaaac2f78a7f6401b7255..0e0102c4e628136731716b4e39be20763c08e15b 100644
--- a/src/processor/processor_odom_icp.cpp
+++ b/src/processor/processor_odom_icp.cpp
@@ -221,45 +221,9 @@ FactorBasePtr ProcessorOdomICP::emplaceFactor(FeatureBasePtr _feature)
 }
 
 
-
-/// FACTORY METHODS -- to be replaced by macro after PR !313 addressing issue #248 is merged.
-ProcessorBasePtr ProcessorOdomICP::create(const std::string& _unique_name, const ProcessorParamsBasePtr _params, const SensorBasePtr)
-{
-    ProcessorOdomICPPtr prc_ptr;
-
-    ProcessorParamsOdomICPPtr params;
-    if (_params)
-        params = std::static_pointer_cast<ProcessorParamsOdomICP>(_params);
-    else
-        params = std::make_shared<ProcessorParamsOdomICP>();
-
-    prc_ptr = std::make_shared<ProcessorOdomICP>(params);
-    prc_ptr->setName(_unique_name);
-
-    return prc_ptr;
-}
-
-ProcessorBasePtr ProcessorOdomICP::createAutoConf(const std::string& _unique_name, const ParamsServer& _server, const SensorBasePtr sensor_ptr)
-{
-
-    ProcessorOdomICPPtr prc_ptr;
-    auto params = std::make_shared<ProcessorParamsOdomICP>(_unique_name, _server);
-    prc_ptr = std::make_shared<ProcessorOdomICP>(params);
-    // WOLF_TRACE("\n", params->print());
-    prc_ptr->setName(_unique_name);
-    WOLF_TRACE("\n", prc_ptr->proc_params_->print());
-
-    return prc_ptr;
-}
-
-
-
 // Register in the SensorFactory
 #include "core/processor/processor_factory.h"
 namespace wolf {
-WOLF_REGISTER_PROCESSOR("ODOM ICP", ProcessorOdomICP)
-} /* namespace wolf */
-#include "core/processor/autoconf_processor_factory.h"
-namespace wolf {
-    WOLF_REGISTER_PROCESSOR_AUTO("ODOM ICP", ProcessorOdomICP)
+    WOLF_REGISTER_PROCESSOR("ODOM ICP", ProcessorOdomICP);
+    WOLF_REGISTER_PROCESSOR_AUTO("ODOM ICP", ProcessorOdomICP);
 } // namespace wolf
diff --git a/src/processor/processor_tracker_feature_polyline_2D.cpp b/src/processor/processor_tracker_feature_polyline_2D.cpp
index dad12aaf7d615a9c09c12532fc5448815e3cdc74..404889898031bf5e548ef957625c071c0b8fe08f 100644
--- a/src/processor/processor_tracker_feature_polyline_2D.cpp
+++ b/src/processor/processor_tracker_feature_polyline_2D.cpp
@@ -1363,32 +1363,12 @@ void ProcessorTrackerFeaturePolyline2D::computeTransformations()
     //std::cout << "R_last_incoming_ " << std::endl << R_last_incoming_ << std::endl;
 }
 
-ProcessorBasePtr ProcessorTrackerFeaturePolyline2D::create(const std::string& _unique_name,
-                                                           const ProcessorParamsBasePtr _params)
-{
-    auto params = std::static_pointer_cast<ProcessorParamsTrackerFeaturePolyline2D>(_params);
-
-    auto prc_ptr = std::make_shared<ProcessorTrackerFeaturePolyline2D>(params);
-
-    prc_ptr->setName(_unique_name);
-
-    return prc_ptr;
-}
 
-ProcessorBasePtr ProcessorTrackerFeaturePolyline2D::createAutoConf(const std::string& _unique_name,
-                                                                   const ParamsServer& _server,
-                                                                   const SensorBasePtr _sensor_ptr)
-{
-    return nullptr;
-}
 } /* namespace wolf */
 
 // Register in the SensorFactory
 #include "core/processor/processor_factory.h"
 namespace wolf {
-WOLF_REGISTER_PROCESSOR("TRACKER FEATURE POLYLINE", ProcessorTrackerFeaturePolyline2D)
-} /* namespace wolf */
-#include "core/processor/autoconf_processor_factory.h"
-namespace wolf {
-    WOLF_REGISTER_PROCESSOR_AUTO("TRACKER FEATURE POLYLINE", ProcessorTrackerFeaturePolyline2D)
-} // namespace wolf
\ No newline at end of file
+    WOLF_REGISTER_PROCESSOR("TRACKER FEATURE POLYLINE", ProcessorTrackerFeaturePolyline2D);
+    WOLF_REGISTER_PROCESSOR_AUTO("TRACKER FEATURE POLYLINE", ProcessorTrackerFeaturePolyline2D);
+} // namespace wolf
diff --git a/src/sensor/sensor_laser_2D.cpp b/src/sensor/sensor_laser_2D.cpp
index 173208479a9bc6c2dcea8bfa5babf97762eed8d0..a31115ef3c51761ad991d1a79fb97022ba8bf4a1 100644
--- a/src/sensor/sensor_laser_2D.cpp
+++ b/src/sensor/sensor_laser_2D.cpp
@@ -50,13 +50,6 @@ SensorLaser2D::SensorLaser2D(const Eigen::VectorXs& _extrinsics, const Intrinsic
     //
 }
 
-SensorLaser2D::SensorLaser2D(const Eigen::VectorXs& _extrinsics, IntrinsicsLaser2DPtr _params) :
-        SensorLaser2D(std::make_shared<StateBlock>(_extrinsics.head(2), true, nullptr),
-                      std::make_shared<StateAngle>(_extrinsics(2), true),
-                      _params)
-{
-}
-
 SensorLaser2D::~SensorLaser2D()
 {
     //
@@ -85,43 +78,11 @@ const laserscanutils::LaserScanParams& SensorLaser2D::getScanParams() const
     return scan_params_;
 }
 
-// Define the factory method
-SensorBasePtr SensorLaser2D::create(const std::string& _unique_name, const Eigen::VectorXs& _extrinsics_po,
-                                  const IntrinsicsBasePtr _intrinsics)
-{
-    // decode extrinsics vector
-    assert(_extrinsics_po.size() == 3 && "Bad extrinsics vector length. Should be 3 for 2D.");
-    StateBlockPtr pos_ptr = std::make_shared<StateBlock>(_extrinsics_po.head(2), true);
-    StateBlockPtr ori_ptr = std::make_shared<StateBlock>(_extrinsics_po.tail(1), true);
-    // cast intrinsics into derived type
-    IntrinsicsLaser2DPtr params = std::static_pointer_cast<IntrinsicsLaser2D>(_intrinsics);
-    SensorLaser2DPtr sen = std::make_shared<SensorLaser2D>(pos_ptr, ori_ptr, params->scan_params);
-    sen->setName(_unique_name);
-    return sen;
-}
-
-SensorBasePtr SensorLaser2D::createAutoConf(const std::string& _unique_name, const ParamsServer& _server)
-{
-    // decode extrinsics vector
-    Eigen::VectorXs _extrinsics_po = _server.getParam<Eigen::VectorXs>(_unique_name + "/extrinsic/pos");
-    assert(_extrinsics_po.size() == 3 && "Bad extrinsics vector length. Should be 3 for 2D.");
-    StateBlockPtr pos_ptr = std::make_shared<StateBlock>(_extrinsics_po.head(2), true);
-    StateBlockPtr ori_ptr = std::make_shared<StateBlock>(_extrinsics_po.tail(1), true);
-
-    SensorLaser2DPtr sen;
-    IntrinsicsLaser2D params;
-
-    sen = std::make_shared<SensorLaser2D>(pos_ptr, ori_ptr, params.scan_params);
-
-    sen->setName(_unique_name);
-    return sen;
-}
 
 } // namespace wolf
 
 // Register in the SensorFactory and the ParameterFactory
 #include "core/sensor/sensor_factory.h"
-//#include "intrinsics_factory.h"
 namespace wolf {
 WOLF_REGISTER_SENSOR("LASER 2D", SensorLaser2D)
 WOLF_REGISTER_SENSOR_AUTO("LASER 2D", SensorLaser2D)