diff --git a/include/core/frame/frame_base.h b/include/core/frame/frame_base.h
index b9849c63bf111fa4d16a8b407dbd73eedc4fc6bb..2c8ff19d9ce262462fe6326baa707699037c0235 100644
--- a/include/core/frame/frame_base.h
+++ b/include/core/frame/frame_base.h
@@ -63,10 +63,10 @@ class FrameBase : public NodeBase, public HasStateBlocks, public std::enable_sha
                   StateBlockPtr _o_ptr = nullptr,
                   StateBlockPtr _v_ptr = nullptr);
 
-        FrameBase(const std::string _frame_structure,
-                  const SizeEigen _dim,
-                  const FrameType & _tp,
+        FrameBase(const FrameType & _tp,
                   const TimeStamp& _ts,
+                  const std::string _frame_structure,
+                  const SizeEigen _dim,
                   const Eigen::VectorXd& _x);
 
         FrameBase(const FrameType & _tp,
diff --git a/src/frame/frame_base.cpp b/src/frame/frame_base.cpp
index 80b63187409c9794b0395809b833a979e80c22b9..97b6a062e343ff54c62735bee4512a8c7f8d220f 100644
--- a/src/frame/frame_base.cpp
+++ b/src/frame/frame_base.cpp
@@ -89,10 +89,10 @@ FrameBase::FrameBase(const FrameType & _tp,
     }
 }
 
-FrameBase::FrameBase(const std::string _frame_structure,
-                     const SizeEigen _dim,
-                     const FrameType & _tp,
+FrameBase::FrameBase(const FrameType & _tp,
                      const TimeStamp& _ts,
+                     const std::string _frame_structure,
+                     const SizeEigen _dim,
                      const Eigen::VectorXd& _x) :
            NodeBase("FRAME", "FrameBase"),
            HasStateBlocks(_frame_structure),
diff --git a/src/problem/problem.cpp b/src/problem/problem.cpp
index 89cfa5bbdd8b8a417fe902981f847514c944b743..e6321ff0494ebb817d4a2ecc3a8e51a04cc45d92 100644
--- a/src/problem/problem.cpp
+++ b/src/problem/problem.cpp
@@ -329,10 +329,10 @@ FrameBasePtr Problem::emplaceFrame(FrameType _frame_key_type, //
                                    const Eigen::VectorXd& _frame_state)
 {
     auto frm = FrameBase::emplace<FrameBase>(trajectory_ptr_,
-                                             _frame_structure,
-                                             _dim,
                                              _frame_key_type,
                                              _time_stamp,
+                                             _frame_structure,
+                                             _dim,
                                              _frame_state);
     return frm;
 }
diff --git a/test/gtest_factor_diff_drive.cpp b/test/gtest_factor_diff_drive.cpp
index 579875a8b5ea74f6931a349683c0077063efd496..7aab9e5cef754bd1b9942ba5ee37c0d76e684634 100644
--- a/test/gtest_factor_diff_drive.cpp
+++ b/test/gtest_factor_diff_drive.cpp
@@ -160,16 +160,16 @@ class FactorDiffDriveTest : public testing::Test
 
             // frames
             F0 = FrameBase::emplace<FrameBase>(trajectory,
-                                               "PO",
-                                               2,
                                                KEY,
                                                0.0,
-                                               Vector3d(0,0,0));
-            F1 = FrameBase::emplace<FrameBase>(trajectory,
                                                "PO",
                                                2,
+                                               Vector3d(0,0,0));
+            F1 = FrameBase::emplace<FrameBase>(trajectory,
                                                KEY,
                                                1.0,
+                                               "PO",
+                                               2,
                                                Vector3d(1,0,0));
 
             // captures