diff --git a/include/gnss/factor/factor_gnss_fix_2d.h b/include/gnss/factor/factor_gnss_fix_2d.h
index 2ec190507d1b640b33e643e351422a4c3f65d5d7..6104fa08e41714d2e1a8c6205a00786f18afb35c 100644
--- a/include/gnss/factor/factor_gnss_fix_2d.h
+++ b/include/gnss/factor/factor_gnss_fix_2d.h
@@ -21,6 +21,7 @@ class FactorGnssFix2d : public FactorAutodiff<FactorGnssFix2d, 3, 2, 1, 3, 3, 1,
 
         FactorGnssFix2d(FeatureBasePtr& _ftr_ptr, const SensorGnssPtr& _sensor_gnss_ptr, const ProcessorBasePtr& _processor_ptr, bool _apply_loss_function, FactorStatus _status = FAC_ACTIVE) :
             FactorAutodiff<FactorGnssFix2d, 3, 2, 1, 3, 3, 1, 1, 1>("FactorGnssFix2d",
+                                                                    TOP_ABS,
                                                                     _ftr_ptr,
                                                                     nullptr,
                                                                     nullptr,
@@ -43,11 +44,6 @@ class FactorGnssFix2d : public FactorAutodiff<FactorGnssFix2d, 3, 2, 1, 3, 3, 1,
 
         ~FactorGnssFix2d() override = default;
 
-        std::string getTopology() const override
-        {
-            return std::string("ABS");
-        }
-
         template<typename T>
         bool operator ()(const T* const _x,
                          const T* const _o,
diff --git a/include/gnss/factor/factor_gnss_fix_3d.h b/include/gnss/factor/factor_gnss_fix_3d.h
index 4980149e3cd28190dc8a666059712363b09ef335..d934eb3b09c68c4c99cfbf26c76729f157b3932e 100644
--- a/include/gnss/factor/factor_gnss_fix_3d.h
+++ b/include/gnss/factor/factor_gnss_fix_3d.h
@@ -20,6 +20,7 @@ class FactorGnssFix3d : public FactorAutodiff<FactorGnssFix3d, 3, 3, 4, 3, 3, 1,
 
         FactorGnssFix3d(FeatureBasePtr& _ftr_ptr, const SensorGnssPtr& _sensor_gnss_ptr, const ProcessorBasePtr& _processor_ptr, bool _apply_loss_function, FactorStatus _status = FAC_ACTIVE) :
             FactorAutodiff<FactorGnssFix3d, 3, 3, 4, 3, 3, 1, 1, 1>("FactorGnssFix3d",
+                                                                    TOP_ABS,
                                                                     _ftr_ptr,
                                                                     nullptr,
                                                                     nullptr,
@@ -42,11 +43,6 @@ class FactorGnssFix3d : public FactorAutodiff<FactorGnssFix3d, 3, 3, 4, 3, 3, 1,
 
         ~FactorGnssFix3d() override = default;
 
-        std::string getTopology() const override
-        {
-            return std::string("ABS");
-        }
-
         template<typename T>
         bool operator ()(const T* const _x,
                          const T* const _o,
diff --git a/include/gnss/factor/factor_gnss_pseudo_range.h b/include/gnss/factor/factor_gnss_pseudo_range.h
index a3a8ea1a12f9c323d0efbafeaa6525db6d1ca7ee..dab37126d12f03cfa5eaffb0b26dd5a5c2b225e9 100644
--- a/include/gnss/factor/factor_gnss_pseudo_range.h
+++ b/include/gnss/factor/factor_gnss_pseudo_range.h
@@ -30,6 +30,7 @@ class FactorGnssPseudoRange : public FactorAutodiff<FactorGnssPseudoRange, 1, 3,
                               bool _apply_loss_function,
                               FactorStatus _status = FAC_ACTIVE) :
             FactorAutodiff<FactorGnssPseudoRange, 1, 3, 4, 1, 1, 3, 3, 1, 1, 1>("FactorGnssPseudoRange",
+                                                                                TOP_ABS,
                                                                                 _ftr_ptr,
                                                                                 nullptr,
                                                                                 nullptr,
@@ -64,11 +65,6 @@ class FactorGnssPseudoRange : public FactorAutodiff<FactorGnssPseudoRange, 1, 3,
 
         ~FactorGnssPseudoRange() override = default;
 
-        std::string getTopology() const override
-        {
-            return std::string("ABS");
-        }
-
         template<typename T>
         bool operator ()(const T* const _x,
                          const T* const _o,
diff --git a/include/gnss/factor/factor_gnss_single_diff_2d.h b/include/gnss/factor/factor_gnss_single_diff_2d.h
index 07feddd0f63f63dd9d1666f66aa7bb23fce6c6f1..21ac8e8d20706daba9a069f1d584e8cf08f5224e 100644
--- a/include/gnss/factor/factor_gnss_single_diff_2d.h
+++ b/include/gnss/factor/factor_gnss_single_diff_2d.h
@@ -21,6 +21,7 @@ class FactorGnssSingleDiff2d : public FactorAutodiff<FactorGnssSingleDiff2d, 3,
 
         FactorGnssSingleDiff2d(FeatureBasePtr& _ftr_ptr, const FrameBasePtr& _frame_other_ptr, const SensorGnssPtr& _sensor_gnss_ptr, const ProcessorBasePtr& _processor_ptr, bool _apply_loss_function, FactorStatus _status = FAC_ACTIVE) :
             FactorAutodiff<FactorGnssSingleDiff2d, 3, 2, 1, 2, 1, 3, 1, 1, 1>("GNSS SINGLE DIFFERENCES 2d",
+                                                                              TOP_GEOM,
                                                                               _ftr_ptr,
                                                                               _frame_other_ptr,
                                                                               nullptr,
@@ -44,11 +45,6 @@ class FactorGnssSingleDiff2d : public FactorAutodiff<FactorGnssSingleDiff2d, 3,
 
         virtual ~FactorGnssSingleDiff2d() = default;
 
-        virtual std::string getTopology() const override
-        {
-            return std::string("MOTION");
-        }
-
         template<typename T>
         bool operator ()(const T* const _x1,
                          const T* const _o1,
diff --git a/include/gnss/factor/factor_gnss_tdcp.h b/include/gnss/factor/factor_gnss_tdcp.h
index f0351efb36cacc90cac29ff218f1213b1434ab04..95f77c76a880d92d6a7f5a5fc731c82d66828b53 100644
--- a/include/gnss/factor/factor_gnss_tdcp.h
+++ b/include/gnss/factor/factor_gnss_tdcp.h
@@ -31,6 +31,7 @@ class FactorGnssTdcp : public FactorAutodiff<FactorGnssTdcp, 1, 3, 4, 1, 3, 4, 1
                        bool _apply_loss_function,
                        FactorStatus _status = FAC_ACTIVE) :
             FactorAutodiff<FactorGnssTdcp, 1, 3, 4, 1, 3, 4, 1, 3, 3, 1, 1, 1>("FactorGnssTdcp",
+                                                                               TOP_GEOM,
                                                                                _ftr_k,
                                                                                nullptr,
                                                                                _ftr_r->getCapture(),
@@ -66,11 +67,6 @@ class FactorGnssTdcp : public FactorAutodiff<FactorGnssTdcp, 1, 3, 4, 1, 3, 4, 1
 
         ~FactorGnssTdcp() override = default;
 
-        std::string getTopology() const override
-        {
-            return std::string("GEOM");
-        }
-
         template<typename T>
         bool operator ()(const T* const _x_r,
                          const T* const _o_r,
diff --git a/include/gnss/factor/factor_gnss_tdcp_2d.h b/include/gnss/factor/factor_gnss_tdcp_2d.h
index 3b78b2f06418396ecc33ff57b3a21da131d7707c..c876c412b72c3721f9c76de37999149268bbdd11 100644
--- a/include/gnss/factor/factor_gnss_tdcp_2d.h
+++ b/include/gnss/factor/factor_gnss_tdcp_2d.h
@@ -21,6 +21,7 @@ class FactorGnssTdcp2d : public FactorAutodiff<FactorGnssTdcp2d, 3, 2, 1, 2, 1,
 
         FactorGnssTdcp2d(const FeatureBasePtr& _ftr_ptr, const FrameBasePtr& _frame_other_ptr, const SensorGnssPtr& _sensor_gnss_ptr, const ProcessorBasePtr& _processor_ptr, bool _apply_loss_function = false, FactorStatus _status = FAC_ACTIVE) :
             FactorAutodiff<FactorGnssTdcp2d, 3, 2, 1, 2, 1, 3, 1, 1, 1>("FactorGnssTdcp2d",
+                                                                        TOP_GEOM,
                                                                         _ftr_ptr,
                                                                         _frame_other_ptr,
                                                                         nullptr,
@@ -44,11 +45,6 @@ class FactorGnssTdcp2d : public FactorAutodiff<FactorGnssTdcp2d, 3, 2, 1, 2, 1,
 
         ~FactorGnssTdcp2d() override = default;
 
-        std::string getTopology() const override
-        {
-            return std::string("GEOM");
-        }
-
         template<typename T>
         bool operator ()(const T* const _x1,
                          const T* const _o1,
diff --git a/include/gnss/factor/factor_gnss_tdcp_3d.h b/include/gnss/factor/factor_gnss_tdcp_3d.h
index 90df1ecfe2b6eacc759f2f6e3dd3b78bfc2edf69..df9bfe44df8201a3d429eb0032d0b9ec4212000b 100644
--- a/include/gnss/factor/factor_gnss_tdcp_3d.h
+++ b/include/gnss/factor/factor_gnss_tdcp_3d.h
@@ -21,22 +21,23 @@ class FactorGnssTdcp3d : public FactorAutodiff<FactorGnssTdcp3d, 3, 3, 4, 3, 4,
 
         FactorGnssTdcp3d(const FeatureBasePtr& _ftr_ptr, const FrameBasePtr& _frame_other_ptr, const SensorGnssPtr& _sensor_gnss_ptr, const ProcessorBasePtr& _processor_ptr, bool _apply_loss_function = false, FactorStatus _status = FAC_ACTIVE) :
             FactorAutodiff<FactorGnssTdcp3d, 3, 3, 4, 3, 4, 3, 1, 1, 1>("FactorGnssTdcp3d",
-                                                                              _ftr_ptr,
-                                                                              _frame_other_ptr,
-                                                                              nullptr,
-                                                                              nullptr,
-                                                                              nullptr,
-                                                                              _processor_ptr,
-                                                                              _apply_loss_function,
-                                                                              _status,
-                                                                              _frame_other_ptr->getP(),
-                                                                              _frame_other_ptr->getO(),
-                                                                              _ftr_ptr->getFrame()->getP(),
-                                                                              _ftr_ptr->getFrame()->getO(),
-                                                                              _sensor_gnss_ptr->getP(),
-                                                                              _sensor_gnss_ptr->getEnuMapRoll(),
-                                                                              _sensor_gnss_ptr->getEnuMapPitch(),
-                                                                              _sensor_gnss_ptr->getEnuMapYaw()),
+                                                                        TOP_GEOM,
+                                                                        _ftr_ptr,
+                                                                        _frame_other_ptr,
+                                                                        nullptr,
+                                                                        nullptr,
+                                                                        nullptr,
+                                                                        _processor_ptr,
+                                                                        _apply_loss_function,
+                                                                        _status,
+                                                                        _frame_other_ptr->getP(),
+                                                                        _frame_other_ptr->getO(),
+                                                                        _ftr_ptr->getFrame()->getP(),
+                                                                        _ftr_ptr->getFrame()->getO(),
+                                                                        _sensor_gnss_ptr->getP(),
+                                                                        _sensor_gnss_ptr->getEnuMapRoll(),
+                                                                        _sensor_gnss_ptr->getEnuMapPitch(),
+                                                                        _sensor_gnss_ptr->getEnuMapYaw()),
             sensor_gnss_ptr_(_sensor_gnss_ptr)
         {
             WOLF_WARN_COND(!sensor_gnss_ptr_->isEnuDefined(), "Creating a GNSS SingleDiff 3D factor without initializing ENU");
@@ -44,11 +45,6 @@ class FactorGnssTdcp3d : public FactorAutodiff<FactorGnssTdcp3d, 3, 3, 4, 3, 4,
 
         ~FactorGnssTdcp3d() override = default;
 
-        std::string getTopology() const override
-        {
-            return std::string("GEOM");
-        }
-
         template<typename T>
         bool operator ()(const T* const _x1,
                          const T* const _o1,
diff --git a/include/gnss/factor/factor_gnss_tdcp_batch.h b/include/gnss/factor/factor_gnss_tdcp_batch.h
index e525ab995d90e641c3a266789b43272f03bfd7e6..94a08eca6419220d547905c9ee9a5119c4139ac2 100644
--- a/include/gnss/factor/factor_gnss_tdcp_batch.h
+++ b/include/gnss/factor/factor_gnss_tdcp_batch.h
@@ -25,6 +25,7 @@ class FactorGnssTdcpBatch : public FactorAutodiff<FactorGnssTdcpBatch, 4, 3, 4,
                             bool _apply_loss_function = false,
                             FactorStatus _status = FAC_ACTIVE) :
             FactorAutodiff<FactorGnssTdcpBatch, 4, 3, 4, 1, 3, 4, 1, 3, 1, 1, 1>("FactorGnssTdcpBatch",
+                                                                                 TOP_GEOM,
                                                                                  _ftr_ptr,
                                                                                  _capture_other_ptr->getFrame(),
                                                                                  _capture_other_ptr,
@@ -50,11 +51,6 @@ class FactorGnssTdcpBatch : public FactorAutodiff<FactorGnssTdcpBatch, 4, 3, 4,
 
         ~FactorGnssTdcpBatch() override = default;
 
-        std::string getTopology() const override
-        {
-            return std::string("GEOM");
-        }
-
         template<typename T>
         bool operator ()(const T* const _x1,
                          const T* const _o1,