diff --git a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
index 35165fb63bd5226bdbb68b809cbb65ec6999de84..f4b2551ae1c5192ed836f1182c129aefda965e13 100644
--- a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
+++ b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
@@ -144,7 +144,7 @@ namespace armarx::armem::server
     MemoryToIceAdapter::commit(const armem::Commit& commit)
     {
         std::vector<data::MemoryID> updatedIDs;
-        const bool publishUpdates = memoryListenerTopic;
+        const bool publishUpdates = bool(memoryListenerTopic);
 
         CommitResult commitResult;
         for (const EntityUpdate& update : commit.updates)
@@ -152,6 +152,7 @@ namespace armarx::armem::server
             EntityUpdateResult& result = commitResult.results.emplace_back();
             try
             {
+                // update() will lock core segment mutexes
                 auto updateResult = workingMemory->update(update);
 
                 result.success = true;
@@ -202,29 +203,27 @@ namespace armarx::armem::server
     {
         ARMARX_CHECK_NOT_NULL(workingMemory);
 
-        armem::wm::query_proc::MemoryQueryProcessor wm_processor(
-            input.withData ? armem::DataMode::WithData
-            : armem::DataMode::NoData);
-
-        armem::query::data::Result result;
-        wm::Memory wm_result = wm_processor.process(input, *workingMemory, /* execute if: */ { query::data::QueryTarget::WM });
-
-        armem::ltm::query_proc::MemoryQueryProcessor ltm_processor;
-        ltm::Memory ltm_result = ltm_processor.process(input, *longtermMemory, /* execute if: */ { query::data::QueryTarget::LTM });
+        // Core segment processors will aquire the core segment locks.
+        armem::wm::query_proc::MemoryQueryProcessor wmProcessor(
+            input.withData ? armem::DataMode::WithData : armem::DataMode::NoData);
+        wm::Memory wmResult = wmProcessor.process(input, *workingMemory, /* execute if: */ { query::data::QueryTarget::WM });
 
+        armem::ltm::query_proc::MemoryQueryProcessor ltmProcessor;
+        ltm::Memory ltmResult = ltmProcessor.process(input, *longtermMemory, /* execute if: */ { query::data::QueryTarget::LTM });
 
-        if (ltm_result.hasData())
+        armem::query::data::Result result;
+        if (ltmResult.hasData())
         {
             // ATTENTION: This code block moves data from LTM back into WM.
             // However, since some segments are constrained, the WM might send data back to LTM.
             // This may also affect the data returned by the current query.
             // However, this is expected behavior, since we copy the data in the processor (copyEmpty) we can safely return the copy and
             // remove the original memory reference from WM here.
-            wm::Memory ltm_converted = ltm_result.convert();
-            wm_result.append(ltm_converted);
+            wm::Memory ltmConverted = ltmResult.convert();
+            wmResult.append(ltmConverted);
 
             // query again to limit output size (TODO: Skip if querytype is all)
-            wm::Memory merged_result = wm_processor.process(input, wm_result);
+            wm::Memory merged_result = wmProcessor.process(input, wmResult);
             result.memory = toIce<data::MemoryPtr>(merged_result);
 
             // also move results of ltm to wm
@@ -235,7 +234,7 @@ namespace armarx::armem::server
         }
         else
         {
-            result.memory = toIce<data::MemoryPtr>(wm_result);
+            result.memory = toIce<data::MemoryPtr>(wmResult);
         }
 
         result.success = true;
@@ -247,6 +246,13 @@ namespace armarx::armem::server
         return result;
     }
 
+
+    client::QueryResult MemoryToIceAdapter::query(const client::QueryInput& input)
+    {
+        return client::QueryResult::fromIce(query(input.toIce()));
+    }
+
+
     // LTM LOADING FROM LTM
     query::data::Result MemoryToIceAdapter::load(const armem::query::data::Input& query)
     {
@@ -257,6 +263,7 @@ namespace armarx::armem::server
         return output;
     }
 
+
     // LTM STORING
     data::StoreResult MemoryToIceAdapter::store(const armem::data::StoreInput& input)
     {
@@ -284,9 +291,6 @@ namespace armarx::armem::server
         return output;
     }
 
-    client::QueryResult MemoryToIceAdapter::query(const client::QueryInput& input)
-    {
-        return client::QueryResult::fromIce(query(input.toIce()));
-    }
+
 
 }