diff --git a/src/frame/frame_base.cpp b/src/frame/frame_base.cpp
index 549b1435222c8cda2c0615a54632d6c8c5b63840..4b278bf8bf8ef16eca8ea61ed4702d85358b6730 100644
--- a/src/frame/frame_base.cpp
+++ b/src/frame/frame_base.cpp
@@ -21,13 +21,11 @@ FrameBase::FrameBase(const TimeStamp& _ts,
         frame_id_(++frame_id_count_),
         time_stamp_(_ts)
 {
-    for (const auto& pair_key_vec : _state)
-    {
-        const auto& key  = pair_key_vec.first;
-        const auto& vec  = pair_key_vec.second;
-
-        StateBlockPtr sb = FactoryStateBlock::create(string(1,key), vec, false); // false = non fixed
+    assert(_state.includesStructure(_frame_structure) && "_state does not include all keys of _frame_structure");
 
+    for (auto key : getStructure())
+    {
+        StateBlockPtr sb = FactoryStateBlock::create(string(1,key), _state.at(key), false); // false = non fixed
         addStateBlock(key, sb, getProblem());
     }
 }