diff --git a/include/core/frame/frame_base.h b/include/core/frame/frame_base.h
index 731bf8db56b1023a2d5400f3375cdd654f0bc282..ec6b987af5bbe23e05799566e80c1e2fcf51e5c7 100644
--- a/include/core/frame/frame_base.h
+++ b/include/core/frame/frame_base.h
@@ -126,8 +126,6 @@ class FrameBase : public NodeBase, public HasStateBlocks, public std::enable_sha
         void link(TrajectoryBasePtr);
         template<typename classType, typename... T>
         static std::shared_ptr<classType> emplaceFrame(TrajectoryBasePtr _ptr, T&&... all);
-        template<typename classType, typename... T>
-        static std::shared_ptr<classType> createNonKeyFrame(T&&... all);
 
         virtual void printHeader(int depth, //
                                  bool constr_by, //
@@ -175,13 +173,6 @@ std::shared_ptr<classType> FrameBase::emplaceFrame(TrajectoryBasePtr _ptr, T&&..
     return frm;
 }
 
-template<typename classType, typename... T>
-std::shared_ptr<classType> FrameBase::createNonKeyFrame(T&&... all)
-{
-    std::shared_ptr<classType> frm = std::make_shared<classType>(std::forward<T>(all)...);
-    return frm;
-}
-
 inline unsigned int FrameBase::id() const
 {
     return frame_id_;
diff --git a/src/processor/processor_motion.cpp b/src/processor/processor_motion.cpp
index c559334e25ae87a91f4993e5c527185de17b7204..70ffce8ac80117de1766bca16e53c6137a01ca0d 100644
--- a/src/processor/processor_motion.cpp
+++ b/src/processor/processor_motion.cpp
@@ -432,9 +432,9 @@ void ProcessorMotion::processCapture(CaptureBasePtr _incoming_ptr)
         auto factor         = emplaceFactor(key_feature, origin_ptr_);
 
         // create a new frame
-        auto frame_new      = FrameBase::createNonKeyFrame<FrameBase>(getTimeStamp(),
-                                                                      getStateStructure(),
-                                                                      getProblem()->getState());
+        auto frame_new      = std::make_shared<FrameBase>(getTimeStamp(),
+                                                          getStateStructure(),
+                                                          getProblem()->getState());
         // create a new capture
         auto capture_new    = emplaceCapture(frame_new,
                                              getSensor(),
@@ -692,9 +692,9 @@ void ProcessorMotion::setOrigin(FrameBasePtr _origin_frame)
 
     // ---------- LAST ----------
     // Make non-key-frame for last Capture
-    last_frame_ptr_  = FrameBase::createNonKeyFrame<FrameBase>(origin_ts,
-                                                               getStateStructure(),
-                                                               _origin_frame->getState());
+    last_frame_ptr_  = std::make_shared<FrameBase>(origin_ts,
+                                                   getStateStructure(),
+                                                   _origin_frame->getState());
                                         
     // emplace (emtpy) last Capture
     last_ptr_ = emplaceCapture(last_frame_ptr_,
diff --git a/src/processor/processor_tracker.cpp b/src/processor/processor_tracker.cpp
index 9f9034eaca9f348bcc0f59527e9e7563ee26655b..9dca45d7dd210fb952ce257818e1b0ed86b87cf5 100644
--- a/src/processor/processor_tracker.cpp
+++ b/src/processor/processor_tracker.cpp
@@ -114,9 +114,9 @@ void ProcessorTracker::processCapture(CaptureBasePtr _incoming_ptr)
         {
             WOLF_DEBUG( "PT ", getName(), " SECOND_TIME_WITHOUT_PACK" );
 
-            FrameBasePtr frm = FrameBase::createNonKeyFrame<FrameBase>(incoming_ptr_->getTimeStamp(),
-                                                                       getProblem()->getFrameStructure(),
-                                                                       getProblem()->getState());
+            FrameBasePtr frm = std::make_shared<FrameBase>(incoming_ptr_->getTimeStamp(),
+                                                           getProblem()->getFrameStructure(),
+                                                           getProblem()->getState());
             incoming_ptr_->link(frm);
             // We have a last_ Capture with no features, so we do not process known features, and we do not vote for KF.
 
diff --git a/test/gtest_track_matrix.cpp b/test/gtest_track_matrix.cpp
index 72bf3f7d8ce8124c4005daf4a9a82ba119504d5e..9bb9eec223650a1a07aed3a9566042c8dfc7dbd1 100644
--- a/test/gtest_track_matrix.cpp
+++ b/test/gtest_track_matrix.cpp
@@ -37,11 +37,11 @@ class TrackMatrixTest : public testing::Test
 
             // unlinked frames
             // Some warnings will be thrown "linking with nullptr" for emplacing without providing frame pointer
-            F0 = FrameBase::createNonKeyFrame<FrameBase>(0.0, nullptr);
-            F1 = FrameBase::createNonKeyFrame<FrameBase>(1.0, nullptr);
-            F2 = FrameBase::createNonKeyFrame<FrameBase>(2.0, nullptr);
-            F3 = FrameBase::createNonKeyFrame<FrameBase>(3.0, nullptr);
-            F4 = FrameBase::createNonKeyFrame<FrameBase>(4.0, nullptr);
+            F0 = std::make_shared<FrameBase>(0.0, nullptr);
+            F1 = std::make_shared<FrameBase>(1.0, nullptr);
+            F2 = std::make_shared<FrameBase>(2.0, nullptr);
+            F3 = std::make_shared<FrameBase>(3.0, nullptr);
+            F4 = std::make_shared<FrameBase>(4.0, nullptr);
 
             // unlinked features
             // Some warnings will be thrown "linking with nullptr" for emplacing without providing capture pointer
diff --git a/test/gtest_trajectory.cpp b/test/gtest_trajectory.cpp
index 81f09e4e5ac85da4d9d5a6f25b25582c6727f180..bd05620f6fb13bdaa20a97343c12141f44d60c97 100644
--- a/test/gtest_trajectory.cpp
+++ b/test/gtest_trajectory.cpp
@@ -35,12 +35,12 @@ TEST(TrajectoryBase, ClosestKeyFrame)
     FrameBasePtr F1 = P->emplaceFrame(          1, Eigen::Vector3d::Zero() );
     FrameBasePtr F2 = P->emplaceFrame(          2, Eigen::Vector3d::Zero() );
     // FrameBasePtr F3 = P->emplaceFrame(AUXILIARY,     3, Eigen::Vector3d::Zero() );
-    FrameBasePtr F3 = FrameBase::createNonKeyFrame<FrameBase>(3, P->getFrameStructure(),
-//                                                              P->getDim(),
-                                                              std::list<VectorXd>({Eigen::Vector2d::Zero(),Eigen::Vector1d::Zero()}) );
-    FrameBasePtr F4 = FrameBase::createNonKeyFrame<FrameBase>(4, P->getFrameStructure(),
-//                                                              P->getDim(),
-                                                              std::list<VectorXd>({Eigen::Vector2d::Zero(),Eigen::Vector1d::Zero()}) );
+    FrameBasePtr F3 = std::make_shared<FrameBase>(3, P->getFrameStructure(),
+                                                  //                                                              P->getDim(),
+                                                  std::list<VectorXd>({Eigen::Vector2d::Zero(),Eigen::Vector1d::Zero()}) );
+    FrameBasePtr F4 = std::make_shared<FrameBase>(4, P->getFrameStructure(),
+                                                  //                                                              P->getDim(),
+                                                  std::list<VectorXd>({Eigen::Vector2d::Zero(),Eigen::Vector1d::Zero()}) );
 
     FrameBasePtr KF; // closest key-frame queried
 
@@ -94,9 +94,9 @@ TEST(TrajectoryBase, Add_Remove_Frame)
     std::cout << __LINE__ << std::endl;
 
     // add F3
-    FrameBasePtr F3 = FrameBase::createNonKeyFrame<FrameBase>(3, P->getFrameStructure(),
-//                                                              P->getDim(),
-                                                              std::list<VectorXd>({Eigen::Vector2d::Zero(),Eigen::Vector1d::Zero()}));
+    FrameBasePtr F3 = std::make_shared<FrameBase>(3, P->getFrameStructure(),
+                                                  //                                                              P->getDim(),
+                                                  std::list<VectorXd>({Eigen::Vector2d::Zero(),Eigen::Vector1d::Zero()}));
     if (debug) P->print(2,0,0,0);
     ASSERT_EQ(T->getFrameMap().             size(), (SizeStd) 2);
     ASSERT_EQ(P->getStateBlockNotificationMapSize(), (SizeStd) 4);