diff --git a/test/gtest_frame_base.cpp b/test/gtest_frame_base.cpp
index 2accaa608175f73ffe6d056e54180013d98c3a07..3e5fdd7fd3263726383af28d691d9ef784955f52 100644
--- a/test/gtest_frame_base.cpp
+++ b/test/gtest_frame_base.cpp
@@ -118,9 +118,6 @@ WOLF_INFO("F2 id", F2->id());
     F1->getO()->fix();
     ASSERT_TRUE(F1->isFixed());
 
-    // set key
-    F1->setKey(P);
-    ASSERT_TRUE(F1->isKey());
     ASSERT_TRUE(F1->isKey());
 }
 
diff --git a/test/gtest_has_state_blocks.cpp b/test/gtest_has_state_blocks.cpp
index c32acbd19e304d6b97212f7277616a0b88f426c0..6b403ea31ca156613e8e17f03b922cb3bffa3e68 100644
--- a/test/gtest_has_state_blocks.cpp
+++ b/test/gtest_has_state_blocks.cpp
@@ -41,8 +41,8 @@ class HasStateBlocksTest : public testing::Test
             sbo1 = std::make_shared<StateQuaternion>();
             sbv1 = std::make_shared<StateBlock>(3); // size 3
 
-            F0 = std::make_shared<FrameBase>(0.0, sbp0, sbo0); // non KF
-            F1 = std::make_shared<FrameBase>(1.0, nullptr);    // non KF
+            F0 = std::make_shared<FrameBase>(NON_ESTIMATED, 0.0, sbp0, sbo0); // non KF
+            F1 = std::make_shared<FrameBase>(NON_ESTIMATED, 1.0, nullptr);    // non KF
 
         }
         virtual void TearDown(){}
@@ -55,9 +55,9 @@ TEST_F(HasStateBlocksTest, Notifications_setKey_add)
     Notification n;
     ASSERT_FALSE(problem->getStateBlockNotification(sbp0, n));
 
-    F0->link(problem->getTrajectory());
+    // F0->link(problem->getTrajectory());
 
-    ASSERT_FALSE(problem->getStateBlockNotification(sbp0, n));
+    // ASSERT_FALSE(problem->getStateBlockNotification(sbp0, n));
 
     F0->setKey(problem);
 
@@ -73,11 +73,11 @@ TEST_F(HasStateBlocksTest, Notifications_add_makeKF)
 
     ASSERT_FALSE(problem->getStateBlockNotification(sbp0, n));
 
-    F0->link(problem->getTrajectory());
+    // F0->link(problem->getTrajectory());
 
-    ASSERT_FALSE(problem->getStateBlockNotification(sbp0, n));
+    // ASSERT_FALSE(problem->getStateBlockNotification(sbp0, n));
 
-    ASSERT_FALSE(problem->getStateBlockNotification(sbv0, n));
+    // ASSERT_FALSE(problem->getStateBlockNotification(sbv0, n));
 
     F0->addStateBlock("V", sbv0);
 
@@ -99,7 +99,7 @@ TEST_F(HasStateBlocksTest, Notifications_makeKF_add)
 
     // first make KF, then add SB
 
-    F1->link(problem->getTrajectory());
+    // F1->link(problem->getTrajectory());
     F1->setKey(problem);
 
     F1->addStateBlock("P", sbp1);
@@ -130,7 +130,7 @@ TEST_F(HasStateBlocksTest, Add_solve_notify_solve_add)
 
     ASSERT_FALSE(problem->getStateBlockNotification(sbp0, n));
 
-    F0->link(problem->getTrajectory());
+    // F0->link(problem->getTrajectory());
     F0->addStateBlock("V", sbv0);
     F0->setKey(problem);
 
diff --git a/test/gtest_track_matrix.cpp b/test/gtest_track_matrix.cpp
index 66a711db5fb62ad804f8df12211653aa154c6357..ef66aa3dff9df69f39fcdd8f5079fd41f59ca969 100644
--- a/test/gtest_track_matrix.cpp
+++ b/test/gtest_track_matrix.cpp
@@ -22,9 +22,11 @@ class TrackMatrixTest : public testing::Test
         FrameBasePtr   F0, F1, F2, F3, F4;
         CaptureBasePtr C0, C1, C2, C3, C4;
         FeatureBasePtr f0, f1, f2, f3, f4;
+        ProblemPtr problem;
 
         virtual void SetUp()
         {
+            problem = Problem::create("PO", 2);
             // unlinked captures
             // Some warnings will be thrown "linking with nullptr" for emplacing without providing frame pointer
             C0 = CaptureBase::emplace<CaptureBase>(nullptr, "CaptureBase", 0.0);
@@ -50,8 +52,8 @@ class TrackMatrixTest : public testing::Test
             f4 = FeatureBase::emplace<FeatureBase>(nullptr, "FeatureBase", m, m_cov);
 
             // F0 and F4 are keyframes
-            F0->setKey(nullptr);
-            F4->setKey(nullptr);
+            F0->setKey(problem);
+            F4->setKey(problem);
 
             // link captures
             C0->link(F0);
diff --git a/test/gtest_trajectory.cpp b/test/gtest_trajectory.cpp
index 04cede086256d544656095d2ce89ee5c0d9aef22..61b1259593a0204f419a67be4bfdf1ff221ddfe6 100644
--- a/test/gtest_trajectory.cpp
+++ b/test/gtest_trajectory.cpp
@@ -44,7 +44,7 @@ struct DummySolverManager : public SolverManager
 };
 
 /// Set to true if you want debug info
-bool debug = false;
+bool debug = true;
 
 TEST(TrajectoryBase, ClosestKeyFrame)
 {
@@ -91,14 +91,14 @@ TEST(TrajectoryBase, ClosestKeyOrAuxFrame)
     TrajectoryBasePtr T = P->getTrajectory();
 
     // Trajectory status:
-    //  KF1   KF2    F3      frames
+    //  KF1   KF2    KF3      frames
     //   1     2     3       time stamps
     // --+-----+-----+--->   time
 
     FrameBasePtr F1 = P->emplaceKeyFrame(Eigen::Vector3d::Zero(), 1);
     //WARNING! MIGHT NEED TO ROLLBACK THIS TO AUXILIARY, FELLA
-    FrameBasePtr F2 = FrameBase::createNonKeyFrame<FrameBase>(P->getFrameStructure(), P->getDim(), 2, Eigen::Vector3d::Zero());
-    FrameBasePtr F3 = FrameBase::createNonKeyFrame<FrameBase>(P->getFrameStructure(), P->getDim(), 3, Eigen::Vector3d::Zero());
+    FrameBasePtr F2 = P->emplaceKeyFrame(P->getFrameStructure(), P->getDim(), Eigen::Vector3d::Zero(), 2);
+    FrameBasePtr F3 = P->emplaceKeyFrame(P->getFrameStructure(), P->getDim(), Eigen::Vector3d::Zero(), 3);
 
     FrameBasePtr KF; // closest key-frame queried
 
@@ -112,10 +112,10 @@ TEST(TrajectoryBase, ClosestKeyOrAuxFrame)
     ASSERT_EQ(KF->id(), F2->id());                           // same id!
 
     KF = T->closestKeyFrameToTimeStamp(2.6);           // between keyframe and frame, but closer to frame --> return F2
-    ASSERT_EQ(KF->id(), F2->id());                           // same id!
+    ASSERT_EQ(KF->id(), F3->id());                           // same id!
 
     KF = T->closestKeyFrameToTimeStamp(3.2);           // after the last frame    --> return F2
-    ASSERT_EQ(KF->id(), F2->id());                           // same id!
+    ASSERT_EQ(KF->id(), F3->id());                           // same id!
 }
 
 TEST(TrajectoryBase, Add_Remove_Frame)
@@ -149,14 +149,14 @@ TEST(TrajectoryBase, Add_Remove_Frame)
     std::cout << __LINE__ << std::endl;
 
     // add F3
-    FrameBasePtr F3 = FrameBase::createNonKeyFrame<FrameBase>(P->getFrameStructure(), P->getDim(), 3, Eigen::Vector3d::Zero());
+    // FrameBasePtr F3 = P->emplaceKeyFrame(P->getFrameStructure(), P->getDim(), Eigen::Vector3d::Zero(), 3);
+    FrameBasePtr F3 = P->emplaceKeyFrame(Eigen::Vector3d::Zero(), 2); // 1 fixed, 1 not
     if (debug) P->print(2,0,0,0);
     ASSERT_EQ(T->getFrameList().             size(), (SizeStd) 3);
-    ASSERT_EQ(P->getStateBlockNotificationMapSize(), (SizeStd) 4);
+    ASSERT_EQ(P->getStateBlockNotificationMapSize(), (SizeStd) 6);
     std::cout << __LINE__ << std::endl;
 
-    ASSERT_EQ(T->getLastFrame()->id(), F3->id());
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F2->id());
+    ASSERT_EQ(T->getLastKeyFrame()->id(), F3->id());
     std::cout << __LINE__ << std::endl;
 
     N.update();
@@ -167,7 +167,7 @@ TEST(TrajectoryBase, Add_Remove_Frame)
     F2->remove(); // KF
     if (debug) P->print(2,0,0,0);
     ASSERT_EQ(T->getFrameList().             size(), (SizeStd) 2);
-    ASSERT_EQ(P->getStateBlockNotificationMapSize(), (SizeStd) 2);
+    ASSERT_EQ(P->getStateBlockNotificationMapSize(), (SizeStd) 4);
     std::cout << __LINE__ << std::endl;
 
     ASSERT_EQ(T->getLastFrame()->id(), F3->id());
@@ -192,124 +192,6 @@ TEST(TrajectoryBase, Add_Remove_Frame)
     std::cout << __LINE__ << std::endl;
 }
 
-TEST(TrajectoryBase, KeyFramesAreSorted)
-{
-    using std::make_shared;
-
-    ProblemPtr P = Problem::create("PO", 2);
-    TrajectoryBasePtr T = P->getTrajectory();
-
-    // Trajectory status:
-    //  KF1   KF2    F3      frames
-    //   1     2     3       time stamps
-    // --+-----+-----+--->   time
-
-    // add frames and keyframes in random order --> keyframes must be sorted after that
-    FrameBasePtr F2 = P->emplaceKeyFrame(Eigen::Vector3d::Zero(), 2);
-    if (debug) P->print(2,0,0,0);
-    ASSERT_EQ(T->getLastFrame()         ->id(), F2->id());
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F2->id());
-    ASSERT_EQ(T->getLastKeyFrame()      ->id(), F2->id());
-
-    FrameBasePtr F3 = FrameBase::createNonKeyFrame<FrameBase>(P->getFrameStructure(), P->getDim(), 3, Eigen::Vector3d::Zero()); // non-key-frame
-    if (debug) P->print(2,0,0,0);
-    ASSERT_EQ(T->getLastFrame()         ->id(), F3->id());
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F2->id());
-    ASSERT_EQ(T->getLastKeyFrame()      ->id(), F2->id());
-
-    FrameBasePtr F1 = P->emplaceKeyFrame(Eigen::Vector3d::Zero(), 1);
-    if (debug) P->print(2,0,0,0);
-    ASSERT_EQ(T->getLastFrame()         ->id(), F3->id());
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F2->id());
-    ASSERT_EQ(T->getLastKeyFrame()      ->id(), F2->id());
-
-    F3->setKey(P); // set KF3
-    if (debug) P->print(2,0,0,0);
-    ASSERT_EQ(T->getLastFrame()         ->id(), F3->id());
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F3->id());
-    ASSERT_EQ(T->getLastKeyFrame()      ->id(), F3->id());
-
-    auto F4 = FrameBase::createNonKeyFrame<FrameBase>(P->getFrameStructure(), P->getDim(), 1.5, Eigen::Vector3d::Zero());
-    // Trajectory status:
-    //  KF1   KF2   KF3     F4       frames
-    //   1     2     3     1.5       time stamps
-    // --+-----+-----+------+--->    time
-    if (debug) P->print(2,0,1,0);
-    ASSERT_EQ(T->getLastFrame()         ->id(), F4->id());
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F3->id());
-    ASSERT_EQ(T->getLastKeyFrame()      ->id(), F3->id());
-
-    F4->setKey(P);
-    // Trajectory status:
-    //  KF1   KF4   KF2    KF3       frames
-    //   1    1.5    2      3        time stamps
-    // --+-----+-----+------+--->    time
-    if (debug) P->print(2,0,1,0);
-    ASSERT_EQ(T->getLastFrame()         ->id(), F3->id());
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F3->id());
-    ASSERT_EQ(T->getLastKeyFrame()      ->id(), F3->id());
-
-    F2->setTimeStamp(4);
-    // Trajectory status:
-    //  KF1   KF4   KF3    KF2       frames
-    //   1    1.5    3      4        time stamps
-    // --+-----+-----+------+--->    time
-    if (debug) P->print(2,0,1,0);
-    ASSERT_EQ(T->getLastFrame()         ->id(), F2->id());
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F2->id());
-    ASSERT_EQ(T->getLastKeyFrame()      ->id(), F2->id());
-
-    F4->setTimeStamp(0.5);
-    // Trajectory status:
-    //  KF4   KF2   KF3    KF2       frames
-    //  0.5    1     3      4        time stamps
-    // --+-----+-----+------+--->    time
-    if (debug) P->print(2,0,1,0);
-    ASSERT_EQ(T->getLastFrame()->id(), F4->id());
-
-    //WARNING! MIGHT NEED TO ROLLBACK THIS TO AUXILIARY, FELLA
-    auto F5 = FrameBase::createNonKeyFrame<FrameBase>(P->getFrameStructure(), P->getDim(), 1.5, Eigen::Vector3d::Zero());
-    // Trajectory status:
-    //  KF4   KF2  AuxF5  KF3   KF2       frames
-    //  0.5    1    1.5    3     4        time stamps
-    // --+-----+-----+-----+-----+--->    time
-    if (debug) P->print(2,0,1,0);
-    ASSERT_EQ(T->getLastFrame()         ->id(), F2->id());
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F2->id());
-    ASSERT_EQ(T->getLastKeyFrame()      ->id(), F2->id());
-
-    F5->setTimeStamp(5);
-    // Trajectory status:
-    //  KF4   KF2   KF3   KF2   AuxF5     frames
-    //  0.5    1     3     4     5        time stamps
-    // --+-----+-----+-----+-----+--->    time
-    if (debug) P->print(2,0,1,0);
-    ASSERT_EQ(T->getLastFrame()         ->id(), F5->id());
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F5->id());
-    ASSERT_EQ(T->getLastKeyFrame()      ->id(), F2->id());
-
-    auto F6 = FrameBase::createNonKeyFrame<FrameBase>(P->getFrameStructure(), P->getDim(), 6, Eigen::Vector3d::Zero());
-    // Trajectory status:
-    //  KF4   KF2   KF3   KF2   AuxF5  F6       frames
-    //  0.5    1     3     4     5     6        time stamps
-    // --+-----+-----+-----+-----+-----+--->    time
-    if (debug) P->print(2,0,1,0);
-    ASSERT_EQ(T->getLastFrame()         ->id(), F6->id());
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F5->id());
-    ASSERT_EQ(T->getLastKeyFrame()      ->id(), F2->id());
-
-    auto F7 = FrameBase::createNonKeyFrame<FrameBase>(P->getFrameStructure(), P->getDim(), 5.5, Eigen::Vector3d::Zero());
-    // Trajectory status:
-    //  KF4   KF2   KF3   KF2   AuxF5  F7   F6       frames
-    //  0.5    1     3     4     5     5.5   6        time stamps
-    // --+-----+-----+-----+-----+-----+-----+--->    time
-    if (debug) P->print(2,0,1,0);
-    ASSERT_EQ(T->getLastFrame()         ->id(), F7->id()); //Only auxiliary and key-frames are sorted
-    ASSERT_EQ(T->getLastKeyFrame()->id(), F5->id());
-    ASSERT_EQ(T->getLastKeyFrame()      ->id(), F2->id());
-
-}
-
 int main(int argc, char **argv)
 {
   testing::InitGoogleTest(&argc, argv);