diff --git a/include/core/factor/factor_autodiff.h b/include/core/factor/factor_autodiff.h
index b51d4cee4482fad97d3ae94512bf7b5ee69392e3..3807d1210081a90c43562377cf266910aad13b6d 100644
--- a/include/core/factor/factor_autodiff.h
+++ b/include/core/factor/factor_autodiff.h
@@ -107,7 +107,52 @@ class FactorAutodiff : public FactorBase
                        StateBlockPtr _state9Ptr,
                        StateBlockPtr _state10Ptr,
                        StateBlockPtr _state11Ptr) :
-            FactorBase(_tp, _top, _feature_ptr, _frame_other_ptr, _capture_other_ptr, _feature_other_ptr, _landmark_other_ptr, _processor_ptr, _apply_loss_function, _status),
+        FactorAutodiff(_tp,
+                       _top,
+                       _feature_ptr,
+                       FrameBasePtrList({_frame_other_ptr}),
+                       CaptureBasePtrList({_capture_other_ptr}),
+                       FeatureBasePtrList({_feature_other_ptr}),
+                       LandmarkBasePtrList({_landmark_other_ptr}),
+                       _processor_ptr,
+                       _apply_loss_function,
+                       _status,
+                       _state0Ptr,
+                       _state1Ptr,
+                       _state2Ptr,
+                       _state3Ptr,
+                       _state4Ptr,
+                       _state5Ptr,
+                       _state6Ptr,
+                       _state7Ptr,
+                       _state8Ptr,
+                       _state9Ptr,
+                       _state10Ptr,
+                       _state11Ptr){}
+ 
+        FactorAutodiff(const std::string&  _tp,
+                       const FactorTopology& _top,
+                       const FeatureBasePtr& _feature_ptr,
+                       const FrameBasePtrList& _frame_other_list,
+                       const CaptureBasePtrList& _capture_other_list,
+                       const FeatureBasePtrList& _feature_other_list,
+                       const LandmarkBasePtrList& _landmark_other_list,
+                       const ProcessorBasePtr& _processor_ptr,
+                       bool _apply_loss_function,
+                       FactorStatus _status,
+                       StateBlockPtr _state0Ptr,
+                       StateBlockPtr _state1Ptr,
+                       StateBlockPtr _state2Ptr,
+                       StateBlockPtr _state3Ptr,
+                       StateBlockPtr _state4Ptr,
+                       StateBlockPtr _state5Ptr,
+                       StateBlockPtr _state6Ptr,
+                       StateBlockPtr _state7Ptr,
+                       StateBlockPtr _state8Ptr,
+                       StateBlockPtr _state9Ptr,
+                       StateBlockPtr _state10Ptr,
+                       StateBlockPtr _state11Ptr) :
+            FactorBase(_tp, _top, _feature_ptr, _frame_other_list, _capture_other_list, _feature_other_list, _landmark_other_list, _processor_ptr, _apply_loss_function, _status),
             state_ptrs_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr,_state6Ptr,_state7Ptr,_state8Ptr,_state9Ptr,_state10Ptr,_state11Ptr}),
             state_ptrs_const_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr,_state6Ptr,_state7Ptr,_state8Ptr,_state9Ptr,_state10Ptr,_state11Ptr})
         {
@@ -413,7 +458,50 @@ class FactorAutodiff<FacT,RES,B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,0> : public Fact
                        StateBlockPtr _state8Ptr,
                        StateBlockPtr _state9Ptr,
                        StateBlockPtr _state10Ptr) :
-            FactorBase(_tp, _top, _feature_ptr, _frame_other_ptr, _capture_other_ptr, _feature_other_ptr, _landmark_other_ptr, _processor_ptr, _apply_loss_function, _status),
+        FactorAutodiff(_tp,
+                       _top,
+                       _feature_ptr,
+                       FrameBasePtrList({_frame_other_ptr}),
+                       CaptureBasePtrList({_capture_other_ptr}),
+                       FeatureBasePtrList({_feature_other_ptr}),
+                       LandmarkBasePtrList({_landmark_other_ptr}),
+                       _processor_ptr,
+                       _apply_loss_function,
+                       _status,
+                       _state0Ptr,
+                       _state1Ptr,
+                       _state2Ptr,
+                       _state3Ptr,
+                       _state4Ptr,
+                       _state5Ptr,
+                       _state6Ptr,
+                       _state7Ptr,
+                       _state8Ptr,
+                       _state9Ptr,
+                       _state10Ptr){}
+ 
+        FactorAutodiff(const std::string&  _tp,
+                       const FactorTopology& _top,
+                       const FeatureBasePtr& _feature_ptr,
+                       const FrameBasePtrList& _frame_other_list,
+                       const CaptureBasePtrList& _capture_other_list,
+                       const FeatureBasePtrList& _feature_other_list,
+                       const LandmarkBasePtrList& _landmark_other_list,
+                       const ProcessorBasePtr& _processor_ptr,
+                       bool _apply_loss_function,
+                       FactorStatus _status,
+                       StateBlockPtr _state0Ptr,
+                       StateBlockPtr _state1Ptr,
+                       StateBlockPtr _state2Ptr,
+                       StateBlockPtr _state3Ptr,
+                       StateBlockPtr _state4Ptr,
+                       StateBlockPtr _state5Ptr,
+                       StateBlockPtr _state6Ptr,
+                       StateBlockPtr _state7Ptr,
+                       StateBlockPtr _state8Ptr,
+                       StateBlockPtr _state9Ptr,
+                       StateBlockPtr _state10Ptr) :
+            FactorBase(_tp, _top, _feature_ptr, _frame_other_list, _capture_other_list, _feature_other_list, _landmark_other_list, _processor_ptr, _apply_loss_function, _status),
             state_ptrs_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr,_state6Ptr,_state7Ptr,_state8Ptr,_state9Ptr,_state10Ptr}),
             state_ptrs_const_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr,_state6Ptr,_state7Ptr,_state8Ptr,_state9Ptr,_state10Ptr})
         {
@@ -685,7 +773,48 @@ class FactorAutodiff<FacT,RES,B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,0,0> : public Factor
                        StateBlockPtr _state7Ptr,
                        StateBlockPtr _state8Ptr,
                        StateBlockPtr _state9Ptr) :
-            FactorBase(_tp, _top, _feature_ptr, _frame_other_ptr, _capture_other_ptr, _feature_other_ptr, _landmark_other_ptr, _processor_ptr, _apply_loss_function, _status),
+        FactorAutodiff(_tp,
+                       _top,
+                       _feature_ptr,
+                       FrameBasePtrList({_frame_other_ptr}),
+                       CaptureBasePtrList({_capture_other_ptr}),
+                       FeatureBasePtrList({_feature_other_ptr}),
+                       LandmarkBasePtrList({_landmark_other_ptr}),
+                       _processor_ptr,
+                       _apply_loss_function,
+                       _status,
+                       _state0Ptr,
+                       _state1Ptr,
+                       _state2Ptr,
+                       _state3Ptr,
+                       _state4Ptr,
+                       _state5Ptr,
+                       _state6Ptr,
+                       _state7Ptr,
+                       _state8Ptr,
+                       _state9Ptr){}
+ 
+        FactorAutodiff(const std::string&  _tp,
+                       const FactorTopology& _top,
+                       const FeatureBasePtr& _feature_ptr,
+                       const FrameBasePtrList& _frame_other_list,
+                       const CaptureBasePtrList& _capture_other_list,
+                       const FeatureBasePtrList& _feature_other_list,
+                       const LandmarkBasePtrList& _landmark_other_list,
+                       const ProcessorBasePtr& _processor_ptr,
+                       bool _apply_loss_function,
+                       FactorStatus _status,
+                       StateBlockPtr _state0Ptr,
+                       StateBlockPtr _state1Ptr,
+                       StateBlockPtr _state2Ptr,
+                       StateBlockPtr _state3Ptr,
+                       StateBlockPtr _state4Ptr,
+                       StateBlockPtr _state5Ptr,
+                       StateBlockPtr _state6Ptr,
+                       StateBlockPtr _state7Ptr,
+                       StateBlockPtr _state8Ptr,
+                       StateBlockPtr _state9Ptr) :
+            FactorBase(_tp, _top, _feature_ptr, _frame_other_list, _capture_other_list, _feature_other_list, _landmark_other_list, _processor_ptr, _apply_loss_function, _status),
             state_ptrs_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr,_state6Ptr,_state7Ptr,_state8Ptr,_state9Ptr}),
             state_ptrs_const_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr,_state6Ptr,_state7Ptr,_state8Ptr,_state9Ptr})
         {
@@ -947,7 +1076,46 @@ class FactorAutodiff<FacT,RES,B0,B1,B2,B3,B4,B5,B6,B7,B8,0,0,0> : public FactorB
                        StateBlockPtr _state6Ptr,
                        StateBlockPtr _state7Ptr,
                        StateBlockPtr _state8Ptr) :
-            FactorBase(_tp, _top, _feature_ptr, _frame_other_ptr, _capture_other_ptr, _feature_other_ptr, _landmark_other_ptr, _processor_ptr, _apply_loss_function, _status),
+        FactorAutodiff(_tp,
+                       _top,
+                       _feature_ptr,
+                       FrameBasePtrList({_frame_other_ptr}),
+                       CaptureBasePtrList({_capture_other_ptr}),
+                       FeatureBasePtrList({_feature_other_ptr}),
+                       LandmarkBasePtrList({_landmark_other_ptr}),
+                       _processor_ptr,
+                       _apply_loss_function,
+                       _status,
+                       _state0Ptr,
+                       _state1Ptr,
+                       _state2Ptr,
+                       _state3Ptr,
+                       _state4Ptr,
+                       _state5Ptr,
+                       _state6Ptr,
+                       _state7Ptr,
+                       _state8Ptr){}
+ 
+        FactorAutodiff(const std::string&  _tp,
+                       const FactorTopology& _top,
+                       const FeatureBasePtr& _feature_ptr,
+                       const FrameBasePtrList& _frame_other_list,
+                       const CaptureBasePtrList& _capture_other_list,
+                       const FeatureBasePtrList& _feature_other_list,
+                       const LandmarkBasePtrList& _landmark_other_list,
+                       const ProcessorBasePtr& _processor_ptr,
+                       bool _apply_loss_function,
+                       FactorStatus _status,
+                       StateBlockPtr _state0Ptr,
+                       StateBlockPtr _state1Ptr,
+                       StateBlockPtr _state2Ptr,
+                       StateBlockPtr _state3Ptr,
+                       StateBlockPtr _state4Ptr,
+                       StateBlockPtr _state5Ptr,
+                       StateBlockPtr _state6Ptr,
+                       StateBlockPtr _state7Ptr,
+                       StateBlockPtr _state8Ptr) :
+            FactorBase(_tp, _top, _feature_ptr, _frame_other_list, _capture_other_list, _feature_other_list, _landmark_other_list, _processor_ptr, _apply_loss_function, _status),
             state_ptrs_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr,_state6Ptr,_state7Ptr,_state8Ptr}),
             state_ptrs_const_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr,_state6Ptr,_state7Ptr,_state8Ptr})
         {
@@ -1199,7 +1367,44 @@ class FactorAutodiff<FacT,RES,B0,B1,B2,B3,B4,B5,B6,B7,0,0,0,0> : public FactorBa
                        StateBlockPtr _state5Ptr,
                        StateBlockPtr _state6Ptr,
                        StateBlockPtr _state7Ptr) :
-            FactorBase(_tp, _top, _feature_ptr, _frame_other_ptr, _capture_other_ptr, _feature_other_ptr, _landmark_other_ptr, _processor_ptr, _apply_loss_function, _status),
+        FactorAutodiff(_tp,
+                       _top,
+                       _feature_ptr,
+                       FrameBasePtrList({_frame_other_ptr}),
+                       CaptureBasePtrList({_capture_other_ptr}),
+                       FeatureBasePtrList({_feature_other_ptr}),
+                       LandmarkBasePtrList({_landmark_other_ptr}),
+                       _processor_ptr,
+                       _apply_loss_function,
+                       _status,
+                       _state0Ptr,
+                       _state1Ptr,
+                       _state2Ptr,
+                       _state3Ptr,
+                       _state4Ptr,
+                       _state5Ptr,
+                       _state6Ptr,
+                       _state7Ptr){}
+ 
+        FactorAutodiff(const std::string&  _tp,
+                       const FactorTopology& _top,
+                       const FeatureBasePtr& _feature_ptr,
+                       const FrameBasePtrList& _frame_other_list,
+                       const CaptureBasePtrList& _capture_other_list,
+                       const FeatureBasePtrList& _feature_other_list,
+                       const LandmarkBasePtrList& _landmark_other_list,
+                       const ProcessorBasePtr& _processor_ptr,
+                       bool _apply_loss_function,
+                       FactorStatus _status,
+                       StateBlockPtr _state0Ptr,
+                       StateBlockPtr _state1Ptr,
+                       StateBlockPtr _state2Ptr,
+                       StateBlockPtr _state3Ptr,
+                       StateBlockPtr _state4Ptr,
+                       StateBlockPtr _state5Ptr,
+                       StateBlockPtr _state6Ptr,
+                       StateBlockPtr _state7Ptr) :
+            FactorBase(_tp, _top, _feature_ptr, _frame_other_list, _capture_other_list, _feature_other_list, _landmark_other_list, _processor_ptr, _apply_loss_function, _status),
             state_ptrs_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr,_state6Ptr,_state7Ptr}),
             state_ptrs_const_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr,_state6Ptr,_state7Ptr})
         {
@@ -1440,7 +1645,42 @@ class FactorAutodiff<FacT,RES,B0,B1,B2,B3,B4,B5,B6,0,0,0,0,0> : public FactorBas
                        StateBlockPtr _state4Ptr,
                        StateBlockPtr _state5Ptr,
                        StateBlockPtr _state6Ptr) :
-            FactorBase(_tp, _top, _feature_ptr, _frame_other_ptr, _capture_other_ptr, _feature_other_ptr, _landmark_other_ptr, _processor_ptr, _apply_loss_function, _status),
+        FactorAutodiff(_tp,
+                       _top,
+                       _feature_ptr,
+                       FrameBasePtrList({_frame_other_ptr}),
+                       CaptureBasePtrList({_capture_other_ptr}),
+                       FeatureBasePtrList({_feature_other_ptr}),
+                       LandmarkBasePtrList({_landmark_other_ptr}),
+                       _processor_ptr,
+                       _apply_loss_function,
+                       _status,
+                       _state0Ptr,
+                       _state1Ptr,
+                       _state2Ptr,
+                       _state3Ptr,
+                       _state4Ptr,
+                       _state5Ptr,
+                       _state6Ptr){}
+ 
+        FactorAutodiff(const std::string&  _tp,
+                       const FactorTopology& _top,
+                       const FeatureBasePtr& _feature_ptr,
+                       const FrameBasePtrList& _frame_other_list,
+                       const CaptureBasePtrList& _capture_other_list,
+                       const FeatureBasePtrList& _feature_other_list,
+                       const LandmarkBasePtrList& _landmark_other_list,
+                       const ProcessorBasePtr& _processor_ptr,
+                       bool _apply_loss_function,
+                       FactorStatus _status,
+                       StateBlockPtr _state0Ptr,
+                       StateBlockPtr _state1Ptr,
+                       StateBlockPtr _state2Ptr,
+                       StateBlockPtr _state3Ptr,
+                       StateBlockPtr _state4Ptr,
+                       StateBlockPtr _state5Ptr,
+                       StateBlockPtr _state6Ptr) :
+            FactorBase(_tp, _top, _feature_ptr, _frame_other_list, _capture_other_list, _feature_other_list, _landmark_other_list, _processor_ptr, _apply_loss_function, _status),
             state_ptrs_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr,_state6Ptr}),
             state_ptrs_const_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr,_state6Ptr})
         {
@@ -1671,7 +1911,40 @@ class FactorAutodiff<FacT,RES,B0,B1,B2,B3,B4,B5,0,0,0,0,0,0> : public FactorBase
                        StateBlockPtr _state3Ptr,
                        StateBlockPtr _state4Ptr,
                        StateBlockPtr _state5Ptr) :
-            FactorBase(_tp, _top, _feature_ptr, _frame_other_ptr, _capture_other_ptr, _feature_other_ptr, _landmark_other_ptr, _processor_ptr, _apply_loss_function, _status),
+        FactorAutodiff(_tp,
+                       _top,
+                       _feature_ptr,
+                       FrameBasePtrList({_frame_other_ptr}),
+                       CaptureBasePtrList({_capture_other_ptr}),
+                       FeatureBasePtrList({_feature_other_ptr}),
+                       LandmarkBasePtrList({_landmark_other_ptr}),
+                       _processor_ptr,
+                       _apply_loss_function,
+                       _status,
+                       _state0Ptr,
+                       _state1Ptr,
+                       _state2Ptr,
+                       _state3Ptr,
+                       _state4Ptr,
+                       _state5Ptr){}
+ 
+        FactorAutodiff(const std::string&  _tp,
+                       const FactorTopology& _top,
+                       const FeatureBasePtr& _feature_ptr,
+                       const FrameBasePtrList& _frame_other_list,
+                       const CaptureBasePtrList& _capture_other_list,
+                       const FeatureBasePtrList& _feature_other_list,
+                       const LandmarkBasePtrList& _landmark_other_list,
+                       const ProcessorBasePtr& _processor_ptr,
+                       bool _apply_loss_function,
+                       FactorStatus _status,
+                       StateBlockPtr _state0Ptr,
+                       StateBlockPtr _state1Ptr,
+                       StateBlockPtr _state2Ptr,
+                       StateBlockPtr _state3Ptr,
+                       StateBlockPtr _state4Ptr,
+                       StateBlockPtr _state5Ptr) :
+            FactorBase(_tp, _top, _feature_ptr, _frame_other_list, _capture_other_list, _feature_other_list, _landmark_other_list, _processor_ptr, _apply_loss_function, _status),
             state_ptrs_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr}),
             state_ptrs_const_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr,_state5Ptr})
         {
@@ -1887,7 +2160,38 @@ class FactorAutodiff<FacT,RES,B0,B1,B2,B3,B4,0,0,0,0,0,0,0> : public FactorBase
                        StateBlockPtr _state2Ptr,
                        StateBlockPtr _state3Ptr,
                        StateBlockPtr _state4Ptr) :
-            FactorBase(_tp, _top, _feature_ptr, _frame_other_ptr, _capture_other_ptr, _feature_other_ptr, _landmark_other_ptr, _processor_ptr, _apply_loss_function, _status),
+        FactorAutodiff(_tp,
+                       _top,
+                       _feature_ptr,
+                       FrameBasePtrList({_frame_other_ptr}),
+                       CaptureBasePtrList({_capture_other_ptr}),
+                       FeatureBasePtrList({_feature_other_ptr}),
+                       LandmarkBasePtrList({_landmark_other_ptr}),
+                       _processor_ptr,
+                       _apply_loss_function,
+                       _status,
+                       _state0Ptr,
+                       _state1Ptr,
+                       _state2Ptr,
+                       _state3Ptr,
+                       _state4Ptr){}
+ 
+        FactorAutodiff(const std::string&  _tp,
+                       const FactorTopology& _top,
+                       const FeatureBasePtr& _feature_ptr,
+                       const FrameBasePtrList& _frame_other_list,
+                       const CaptureBasePtrList& _capture_other_list,
+                       const FeatureBasePtrList& _feature_other_list,
+                       const LandmarkBasePtrList& _landmark_other_list,
+                       const ProcessorBasePtr& _processor_ptr,
+                       bool _apply_loss_function,
+                       FactorStatus _status,
+                       StateBlockPtr _state0Ptr,
+                       StateBlockPtr _state1Ptr,
+                       StateBlockPtr _state2Ptr,
+                       StateBlockPtr _state3Ptr,
+                       StateBlockPtr _state4Ptr) :
+            FactorBase(_tp, _top, _feature_ptr, _frame_other_list, _capture_other_list, _feature_other_list, _landmark_other_list, _processor_ptr, _apply_loss_function, _status),
             state_ptrs_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr}),
             state_ptrs_const_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr,_state4Ptr})
         {
@@ -2093,7 +2397,36 @@ class FactorAutodiff<FacT,RES,B0,B1,B2,B3,0,0,0,0,0,0,0,0> : public FactorBase
                        StateBlockPtr _state1Ptr,
                        StateBlockPtr _state2Ptr,
                        StateBlockPtr _state3Ptr) :
-            FactorBase(_tp, _top, _feature_ptr, _frame_other_ptr, _capture_other_ptr, _feature_other_ptr, _landmark_other_ptr, _processor_ptr, _apply_loss_function, _status),
+        FactorAutodiff(_tp,
+                       _top,
+                       _feature_ptr,
+                       FrameBasePtrList({_frame_other_ptr}),
+                       CaptureBasePtrList({_capture_other_ptr}),
+                       FeatureBasePtrList({_feature_other_ptr}),
+                       LandmarkBasePtrList({_landmark_other_ptr}),
+                       _processor_ptr,
+                       _apply_loss_function,
+                       _status,
+                       _state0Ptr,
+                       _state1Ptr,
+                       _state2Ptr,
+                       _state3Ptr){}
+ 
+        FactorAutodiff(const std::string&  _tp,
+                       const FactorTopology& _top,
+                       const FeatureBasePtr& _feature_ptr,
+                       const FrameBasePtrList& _frame_other_list,
+                       const CaptureBasePtrList& _capture_other_list,
+                       const FeatureBasePtrList& _feature_other_list,
+                       const LandmarkBasePtrList& _landmark_other_list,
+                       const ProcessorBasePtr& _processor_ptr,
+                       bool _apply_loss_function,
+                       FactorStatus _status,
+                       StateBlockPtr _state0Ptr,
+                       StateBlockPtr _state1Ptr,
+                       StateBlockPtr _state2Ptr,
+                       StateBlockPtr _state3Ptr) :
+            FactorBase(_tp, _top, _feature_ptr, _frame_other_list, _capture_other_list, _feature_other_list, _landmark_other_list, _processor_ptr, _apply_loss_function, _status),
             state_ptrs_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr}),
             state_ptrs_const_({_state0Ptr,_state1Ptr,_state2Ptr,_state3Ptr})
         {
@@ -2293,7 +2626,34 @@ class FactorAutodiff<FacT,RES,B0,B1,B2,0,0,0,0,0,0,0,0,0> : public FactorBase
                        StateBlockPtr _state0Ptr,
                        StateBlockPtr _state1Ptr,
                        StateBlockPtr _state2Ptr) :
-            FactorBase(_tp, _top, _feature_ptr, _frame_other_ptr, _capture_other_ptr, _feature_other_ptr, _landmark_other_ptr, _processor_ptr, _apply_loss_function, _status),
+        FactorAutodiff(_tp,
+                       _top,
+                       _feature_ptr,
+                       FrameBasePtrList({_frame_other_ptr}),
+                       CaptureBasePtrList({_capture_other_ptr}),
+                       FeatureBasePtrList({_feature_other_ptr}),
+                       LandmarkBasePtrList({_landmark_other_ptr}),
+                       _processor_ptr,
+                       _apply_loss_function,
+                       _status,
+                       _state0Ptr,
+                       _state1Ptr,
+                       _state2Ptr){}
+ 
+        FactorAutodiff(const std::string&  _tp,
+                       const FactorTopology& _top,
+                       const FeatureBasePtr& _feature_ptr,
+                       const FrameBasePtrList& _frame_other_list,
+                       const CaptureBasePtrList& _capture_other_list,
+                       const FeatureBasePtrList& _feature_other_list,
+                       const LandmarkBasePtrList& _landmark_other_list,
+                       const ProcessorBasePtr& _processor_ptr,
+                       bool _apply_loss_function,
+                       FactorStatus _status,
+                       StateBlockPtr _state0Ptr,
+                       StateBlockPtr _state1Ptr,
+                       StateBlockPtr _state2Ptr) :
+            FactorBase(_tp, _top, _feature_ptr, _frame_other_list, _capture_other_list, _feature_other_list, _landmark_other_list, _processor_ptr, _apply_loss_function, _status),
             state_ptrs_({_state0Ptr,_state1Ptr,_state2Ptr}),
             state_ptrs_const_({_state0Ptr,_state1Ptr,_state2Ptr})
         {
@@ -2483,7 +2843,32 @@ class FactorAutodiff<FacT,RES,B0,B1,0,0,0,0,0,0,0,0,0,0> : public FactorBase
                        FactorStatus _status,
                        StateBlockPtr _state0Ptr,
                        StateBlockPtr _state1Ptr) :
-            FactorBase(_tp, _top, _feature_ptr, _frame_other_ptr, _capture_other_ptr, _feature_other_ptr, _landmark_other_ptr, _processor_ptr, _apply_loss_function, _status),
+        FactorAutodiff(_tp,
+                       _top,
+                       _feature_ptr,
+                       FrameBasePtrList({_frame_other_ptr}),
+                       CaptureBasePtrList({_capture_other_ptr}),
+                       FeatureBasePtrList({_feature_other_ptr}),
+                       LandmarkBasePtrList({_landmark_other_ptr}),
+                       _processor_ptr,
+                       _apply_loss_function,
+                       _status,
+                       _state0Ptr,
+                       _state1Ptr){}
+ 
+        FactorAutodiff(const std::string&  _tp,
+                       const FactorTopology& _top,
+                       const FeatureBasePtr& _feature_ptr,
+                       const FrameBasePtrList& _frame_other_list,
+                       const CaptureBasePtrList& _capture_other_list,
+                       const FeatureBasePtrList& _feature_other_list,
+                       const LandmarkBasePtrList& _landmark_other_list,
+                       const ProcessorBasePtr& _processor_ptr,
+                       bool _apply_loss_function,
+                       FactorStatus _status,
+                       StateBlockPtr _state0Ptr,
+                       StateBlockPtr _state1Ptr) :
+            FactorBase(_tp, _top, _feature_ptr, _frame_other_list, _capture_other_list, _feature_other_list, _landmark_other_list, _processor_ptr, _apply_loss_function, _status),
             state_ptrs_({_state0Ptr,_state1Ptr}),
             state_ptrs_const_({_state0Ptr,_state1Ptr})
         {
@@ -2662,7 +3047,30 @@ class FactorAutodiff<FacT,RES,B0,0,0,0,0,0,0,0,0,0,0,0> : public FactorBase
                        bool _apply_loss_function,
                        FactorStatus _status,
                        StateBlockPtr _state0Ptr) :
-            FactorBase(_tp, _top, _feature_ptr, _frame_other_ptr, _capture_other_ptr, _feature_other_ptr, _landmark_other_ptr, _processor_ptr, _apply_loss_function, _status),
+        FactorAutodiff(_tp,
+                       _top,
+                       _feature_ptr,
+                       FrameBasePtrList({_frame_other_ptr}),
+                       CaptureBasePtrList({_capture_other_ptr}),
+                       FeatureBasePtrList({_feature_other_ptr}),
+                       LandmarkBasePtrList({_landmark_other_ptr}),
+                       _processor_ptr,
+                       _apply_loss_function,
+                       _status,
+                       _state0Ptr){}
+ 
+        FactorAutodiff(const std::string&  _tp,
+                       const FactorTopology& _top,
+                       const FeatureBasePtr& _feature_ptr,
+                       const FrameBasePtrList& _frame_other_list,
+                       const CaptureBasePtrList& _capture_other_list,
+                       const FeatureBasePtrList& _feature_other_list,
+                       const LandmarkBasePtrList& _landmark_other_list,
+                       const ProcessorBasePtr& _processor_ptr,
+                       bool _apply_loss_function,
+                       FactorStatus _status,
+                       StateBlockPtr _state0Ptr) :
+            FactorBase(_tp, _top, _feature_ptr, _frame_other_list, _capture_other_list, _feature_other_list, _landmark_other_list, _processor_ptr, _apply_loss_function, _status),
             state_ptrs_({_state0Ptr}),
             state_ptrs_const_({_state0Ptr})
         {