diff --git a/include/core/common/wolf.h b/include/core/common/wolf.h
index 09a6c11b1cd0cd685fdb6db40ea0c3ad64a20142..210d7d84cf790a8dfae68155d231772f3d5a5b85 100644
--- a/include/core/common/wolf.h
+++ b/include/core/common/wolf.h
@@ -215,8 +215,9 @@ struct MatrixSizeCheck
 
 #define WOLF_LIST_TYPEDEFS(ClassName) \
         class ClassName; \
-        typedef std::list<ClassName##Ptr>          ClassName##PtrList; \
+        typedef std::list<ClassName##Ptr>             ClassName##PtrList; \
         typedef ClassName##PtrList::iterator          ClassName##Iter; \
+        typedef ClassName##PtrList::const_iterator    ClassName##ConstIter; \
         typedef ClassName##PtrList::reverse_iterator  ClassName##RevIter;
 
 #define WOLF_STRUCT_PTR_TYPEDEFS(StructName) \
diff --git a/include/core/trajectory/trajectory_base.h b/include/core/trajectory/trajectory_base.h
index 590a423d37d98f2bc8c8a284f745628b67ef9d26..0645be841b4dd9c68cc2a6f557146101f199b26e 100644
--- a/include/core/trajectory/trajectory_base.h
+++ b/include/core/trajectory/trajectory_base.h
@@ -56,8 +56,8 @@ class TrajectoryBase : public NodeBase, public std::enable_shared_from_this<Traj
         void getFactorList(FactorBasePtrList & _fac_list);
 
     protected:
-        FrameBaseIter computeFrameOrder(FrameBasePtr _frame_ptr);
-        void moveFrame(FrameBasePtr _frm_ptr, FrameBaseIter _place);
+        FrameBaseConstIter computeFrameOrder(FrameBasePtr _frame_ptr);
+        void moveFrame(FrameBasePtr _frm_ptr, FrameBaseConstIter _place);
 };
 
 inline const FrameBasePtrList& TrajectoryBase::getFrameList() const
diff --git a/src/trajectory/trajectory_base.cpp b/src/trajectory/trajectory_base.cpp
index 34921e3f468a0e4960f4b305978eb33ba01109f4..35a1f9997e7ab5bffa8f4dbf4f8ac7c44415b66b 100644
--- a/src/trajectory/trajectory_base.cpp
+++ b/src/trajectory/trajectory_base.cpp
@@ -55,7 +55,7 @@ void TrajectoryBase::sortFrame(FrameBasePtr _frame_ptr)
     moveFrame(_frame_ptr, computeFrameOrder(_frame_ptr));
 }
 
-void TrajectoryBase::moveFrame(FrameBasePtr _frm_ptr, FrameBaseIter _place)
+void TrajectoryBase::moveFrame(FrameBasePtr _frm_ptr, FrameBaseConstIter _place)
 {
     if (*_place != _frm_ptr)
     {
@@ -65,7 +65,7 @@ void TrajectoryBase::moveFrame(FrameBasePtr _frm_ptr, FrameBaseIter _place)
     }
 }
 
-FrameBaseIter TrajectoryBase::computeFrameOrder(FrameBasePtr _frame_ptr)
+FrameBaseConstIter TrajectoryBase::computeFrameOrder(FrameBasePtr _frame_ptr)
 {
     for (auto frm_rit = getFrameList().rbegin(); frm_rit != getFrameList().rend(); frm_rit++)
         if ((*frm_rit)!= _frame_ptr && (*frm_rit)->isKeyOrAux() && (*frm_rit)->getTimeStamp() <= _frame_ptr->getTimeStamp())