diff --git a/src/frame/frame_base.cpp b/src/frame/frame_base.cpp
index 80b804d9013d8af5526f95c7e0f17e80c929cc2b..357ee344b6e11df9ceba82304f442e3b3878d16d 100644
--- a/src/frame/frame_base.cpp
+++ b/src/frame/frame_base.cpp
@@ -303,12 +303,13 @@ void FrameBase::link(TrajectoryBasePtr _trj_ptr)
 
 void FrameBase::setProblem(ProblemPtr _problem)
 {
+    assert(isKey() && "Trying to setProblem to a non keyframe");
+
     if (_problem == nullptr || _problem == this->getProblem())
         return;
 
     NodeBase::setProblem(_problem);
-    if (this->isKey())
-        registerNewStateBlocks(_problem);
+    registerNewStateBlocks(_problem);
 
     for (auto cap : capture_list_)
         cap->setProblem(_problem);