diff --git a/src/processor/processor_motion.cpp b/src/processor/processor_motion.cpp
index cd2d78caa78427ff2b0e684667b79f3a9e7073d8..d47dbbad36a9328df374b4b4d08d453db3eae6e1 100644
--- a/src/processor/processor_motion.cpp
+++ b/src/processor/processor_motion.cpp
@@ -212,13 +212,12 @@ void ProcessorMotion::processCapture(CaptureBasePtr _incoming_ptr)
 
             // update KF state (adding missing StateBlocks)
             auto proc_state = getState(ts_from_callback);
-            if (keyframe_from_callback->getStructure() != proc_state.getStructure())
-                for (auto ckey : proc_state.getStructure())
-                    if (!keyframe_from_callback->isInStructure(std::string(1,ckey)))
-                        keyframe_from_callback->addStateBlock(std::string(1,ckey),
-                                                              FactoryStateBlock::create(std::string(1,ckey),
-                                                                                        proc_state[std::string(1,ckey)],
-                                                                                        false));
+            for (auto pair_ckey_vec : proc_state)
+                if (!keyframe_from_callback->isInStructure(pair_ckey_vec.first))
+                    keyframe_from_callback->addStateBlock(pair_ckey_vec.first,
+                                                          FactoryStateBlock::create(pair_ckey_vec.first,
+                                                                                    pair_ckey_vec.second,
+                                                                                    false));
             keyframe_from_callback->setState(proc_state);
 
             // Find the capture acting as the buffer's origin
@@ -314,13 +313,12 @@ void ProcessorMotion::processCapture(CaptureBasePtr _incoming_ptr)
 
             // update KF state (adding missing StateBlocks)
             auto proc_state = getState(ts_from_callback);
-            if (keyframe_from_callback->getStructure() != proc_state.getStructure())
-                for (auto ckey : proc_state.getStructure())
-                    if (!keyframe_from_callback->isInStructure(std::string(1,ckey)))
-                        keyframe_from_callback->addStateBlock(std::string(1,ckey),
-                                                              FactoryStateBlock::create(std::string(1,ckey),
-                                                                                        proc_state[std::string(1,ckey)],
-                                                                                        false));
+            for (auto pair_ckey_vec : proc_state)
+                if (!keyframe_from_callback->isInStructure(pair_ckey_vec.first))
+                    keyframe_from_callback->addStateBlock(pair_ckey_vec.first,
+                                                          FactoryStateBlock::create(pair_ckey_vec.first,
+                                                                                    pair_ckey_vec.second,
+                                                                                    false));
             keyframe_from_callback->setState(proc_state);
 
             auto & capture_existing = last_ptr_;