diff --git a/include/laser/factor/factor_container.h b/include/laser/factor/factor_container.h
index 0d6b4b15a77b0f95caab0df5680e7ef254574035..13cd114f7199ee963377af130b0432160d1abebb 100644
--- a/include/laser/factor/factor_container.h
+++ b/include/laser/factor/factor_container.h
@@ -45,6 +45,11 @@ class FactorContainer: public FactorAutodiff<FactorContainer,3,2,1,2,1>
 
     virtual ~FactorContainer() = default;
 
+    virtual std::string getTopology() const override
+    {
+        return std::string("LMK");
+    }
+
 		LandmarkContainerPtr getLandmark()
 		{
 			return lmk_ptr_.lock();
diff --git a/include/laser/factor/factor_point_2D.h b/include/laser/factor/factor_point_2D.h
index 817891d9965496e61c8e6c2c5183356134370ff5..263b561aeb334ca74558f54c1a3616bb89ee3223 100644
--- a/include/laser/factor/factor_point_2D.h
+++ b/include/laser/factor/factor_point_2D.h
@@ -42,6 +42,11 @@ class FactorPoint2D: public FactorAutodiff<FactorPoint2D, 2,2,1,2,1,2>
 
     virtual ~FactorPoint2D() = default;
 
+    virtual std::string getTopology() const override
+    {
+        return std::string("LMK");
+    }
+
     /**
      * @brief getLandmarkPtr
      * @return
diff --git a/include/laser/factor/factor_point_to_line_2D.h b/include/laser/factor/factor_point_to_line_2D.h
index fd7f25c73e9dcd7361f02a5d04fe1e7c0b7ec9a4..f4e48afae89709890ce8cab367c3b3e041d473e6 100644
--- a/include/laser/factor/factor_point_to_line_2D.h
+++ b/include/laser/factor/factor_point_to_line_2D.h
@@ -44,6 +44,11 @@ class FactorPointToLine2D: public FactorAutodiff<FactorPointToLine2D, 1,2,1,2,1,
 
     virtual ~FactorPointToLine2D() = default;
 
+    virtual std::string getTopology() const override
+    {
+        return std::string("GEOM");
+    }
+
     LandmarkPolyline2DPtr getLandmark()
     {
       return std::static_pointer_cast<LandmarkPolyline2D>( landmark_other_ptr_.lock() );