diff --git a/include/core/frame/frame_base.h b/include/core/frame/frame_base.h
index 44e1cfbd2981f6d7afe67311c249b9fc67897638..0fdb349c15db78a40fbe2b658c739c776a9b2c3d 100644
--- a/include/core/frame/frame_base.h
+++ b/include/core/frame/frame_base.h
@@ -80,6 +80,7 @@ class FrameBase : public NodeBase, public std::enable_shared_from_this<FrameBase
         bool isKeyOrAux() const;
 
         // set type
+        void setNonEstimated();
         void setKey();
         void setAux();
 
diff --git a/src/frame/frame_base.cpp b/src/frame/frame_base.cpp
index 49c5ae4f2d9474d34be5b83378f5b2517507cd62..c8ac508f52c3f70504d3c3fe2137573e426a5fe0 100644
--- a/src/frame/frame_base.cpp
+++ b/src/frame/frame_base.cpp
@@ -155,6 +155,20 @@ void FrameBase::removeStateBlocks()
     }
 }
 
+void FrameBase::setNonEstimated()
+{
+    // unregister if previously estimated
+    if (isKeyOrAux())
+        removeStateBlocks();
+
+    type_ = NON_ESTIMATED;
+    if (getTrajectory())
+    {
+        getTrajectory()->sortFrame(shared_from_this());
+        getTrajectory()->updateLastFrames();
+    }
+}
+
 void FrameBase::setKey()
 {
     // register if previously not estimated
@@ -163,8 +177,11 @@ void FrameBase::setKey()
 
     // WOLF_DEBUG("Set Key", this->id());
     type_ = KEY;
-    getTrajectory()->sortFrame(shared_from_this());
-    getTrajectory()->updateLastFrames();
+    if (getTrajectory())
+    {
+        getTrajectory()->sortFrame(shared_from_this());
+        getTrajectory()->updateLastFrames();
+    }
 }
 
 void FrameBase::setAux()
@@ -174,8 +191,11 @@ void FrameBase::setAux()
 
     // WOLF_DEBUG("Set Auxiliary", this->id());
     type_ = AUXILIARY;
-    getTrajectory()->sortFrame(shared_from_this());
-    getTrajectory()->updateLastFrames();
+    if (getTrajectory())
+    {
+        getTrajectory()->sortFrame(shared_from_this());
+        getTrajectory()->updateLastFrames();
+    }
 }
 
 void FrameBase::fix()