diff --git a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
index 3cc3879dff04014162043cd20ab1c9e7ae90c4f4..a42d4305d7a1845544952e4d9933072f88ac14a6 100644
--- a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
+++ b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
@@ -192,7 +192,7 @@ namespace armarx::armem::server
                 }
 
                 // Consollidate to ltm
-                if (longtermMemory)
+                if (longtermMemory->enabled)
                 {
                     //ARMARX_IMPORTANT << longtermMemory->id().str();
                     //ARMARX_IMPORTANT << longtermMemory->getPath();
@@ -263,54 +263,54 @@ namespace armarx::armem::server
     {
         ARMARX_TRACE;
         ARMARX_CHECK_NOT_NULL(workingMemory);
+        ARMARX_CHECK_NOT_NULL(longtermMemory);
 
         // Core segment processors will aquire the core segment locks.
         query_proc::wm_server::MemoryQueryProcessor wmServerProcessor(
             input.withData ? armem::DataMode::WithData : armem::DataMode::NoData);
         armem::wm::Memory wmResult = wmServerProcessor.process(input.memoryQueries, *workingMemory);
 
-        query_proc::ltm_server::disk::MemoryQueryProcessor ltmProcessor;
-        armem::wm::Memory ltmResult = ltmProcessor.process(input, *longtermMemory);
-
         armem::query::data::Result result;
-        if (not ltmResult.empty())
-        {
-            ARMARX_INFO << "The LTM returned data after query";
 
-            longtermMemory->load(ltmResult); // convert memory ==> meaning resolving references
+        if (longtermMemory->enabled)
+        {
+            query_proc::ltm_server::disk::MemoryQueryProcessor ltmProcessor;
+            armem::wm::Memory ltmResult = ltmProcessor.process(input, *longtermMemory);
 
-            wmResult.append(ltmResult);
-            if (wmResult.empty())
+            if (not ltmResult.empty())
             {
-                ARMARX_ERROR << "A merged Memory has no data although at least the LTM result contains data. This indicates that something is wrong.";
-            }
+                ARMARX_INFO << "The LTM returned data after query";
 
-            // query again to limit output size (TODO: Skip if querytype is all)
-            auto queryInput = armem::client::QueryInput::fromIce(input);
-            queryInput.replaceQueryTarget(query::data::QueryTarget::LTM, query::data::QueryTarget::WM);
+                longtermMemory->load(ltmResult); // convert memory ==> meaning resolving references
 
-            query_proc::wm::MemoryQueryProcessor wm2wmProcessor(
-                input.withData ? armem::DataMode::WithData : armem::DataMode::NoData);
-            armem::wm::Memory mergedResult = wm2wmProcessor.process(queryInput.toIce(), wmResult);
-            if (mergedResult.empty())
-            {
-                ARMARX_ERROR << "A merged and postprocessed Memory has no data although at least the LTM result contains data. This indicates that something is wrong.";
-            }
+                wmResult.append(ltmResult);
+                if (wmResult.empty())
+                {
+                    ARMARX_ERROR << "A merged Memory has no data although at least the LTM result contains data. This indicates that something is wrong.";
+                }
 
-            result.memory = toIce<data::MemoryPtr>(mergedResult);
+                // query again to limit output size (TODO: Skip if querytype is all)
+                auto queryInput = armem::client::QueryInput::fromIce(input);
+                queryInput.replaceQueryTarget(query::data::QueryTarget::LTM, query::data::QueryTarget::WM);
 
-            // also move results of ltm to wm
-            //this->commit(toCommit(ltm_converted));
+                query_proc::wm::MemoryQueryProcessor wm2wmProcessor(
+                    input.withData ? armem::DataMode::WithData : armem::DataMode::NoData);
+                wmResult = wm2wmProcessor.process(queryInput.toIce(), wmResult);
+                if (wmResult.empty())
+                {
+                    ARMARX_ERROR << "A merged and postprocessed Memory has no data although at least the LTM result contains data. This indicates that something is wrong.";
+                }
 
-            // mark removed entries of wm in viewer
-            // TODO
-        }
-        else
-        {
-            ARMARX_VERBOSE << "The LTM did not return data after query";
-            result.memory = toIce<data::MemoryPtr>(wmResult);
+                // also move results of ltm to wm
+                //this->commit(toCommit(ltm_converted));
+
+                // mark removed entries of wm in viewer
+                // TODO
+            }
         }
 
+        result.memory = toIce<data::MemoryPtr>(wmResult);
+
         result.success = true;
         if (result.memory->coreSegments.size() == 0)
         {
@@ -336,6 +336,7 @@ namespace armarx::armem::server
         ARMARX_TRACE;
         ARMARX_CHECK_NOT_NULL(workingMemory);
         ARMARX_CHECK_NOT_NULL(longtermMemory);
+
         data::StoreResult output;
 
         for (const auto& query : input.query.memoryQueries)
diff --git a/source/RobotAPI/libraries/armem/server/ltm/base/detail/MemoryBase.h b/source/RobotAPI/libraries/armem/server/ltm/base/detail/MemoryBase.h
index 4f79c2cd4486c3977803d4bc34c22b38fe2f82d7..8203fa4cd81936370a96784a37e219cdd5ed6748 100644
--- a/source/RobotAPI/libraries/armem/server/ltm/base/detail/MemoryBase.h
+++ b/source/RobotAPI/libraries/armem/server/ltm/base/detail/MemoryBase.h
@@ -92,6 +92,9 @@ namespace armarx::armem::server::ltm
         virtual void _load(armem::wm::Memory& memory) = 0;
         virtual void _store(const armem::wm::Memory& memory) = 0;
 
+    public:
+        bool enabled = true;
+
     protected:
         mutable std::recursive_mutex ltm_mutex;
     };
diff --git a/source/RobotAPI/libraries/armem/server/plugins/Plugin.cpp b/source/RobotAPI/libraries/armem/server/plugins/Plugin.cpp
index faaedbe421efce9de2bfff15edf464db5fa5bb93..327a83223a88ad34adad181d922ea1d4e63ebdf8 100644
--- a/source/RobotAPI/libraries/armem/server/plugins/Plugin.cpp
+++ b/source/RobotAPI/libraries/armem/server/plugins/Plugin.cpp
@@ -32,13 +32,13 @@ namespace armarx::armem::server::plugins
         }
 
         // stuff for ltm
-        if (longtermMemoryEnabled)  // if not explicitly set to false in constructor of component (then we dont need the params)
+        if (longtermMemory.enabled)  // if not explicitly set to false in constructor of component (then we dont need the params)
         {
             if (not properties->hasDefinition(prefix + "ltm.enabled"))
             {
-                properties->optional(longtermMemoryEnabled, prefix + "ltm.enabled");
+                properties->optional(longtermMemory.enabled, prefix + "ltm.enabled");
             }
-            longtermMemory.createPropertyDefinitions(properties, "ltm.");
+            //longtermMemory.createPropertyDefinitions(properties, "ltm.");
         }
 
         // Publish memory updates topic
diff --git a/source/RobotAPI/libraries/armem/server/plugins/Plugin.h b/source/RobotAPI/libraries/armem/server/plugins/Plugin.h
index d5c7c05348a7738d5dd08bfdb5aa3f8f82ac0312..8a5a68934003997a9588117ecc985f2fa9dfe456 100644
--- a/source/RobotAPI/libraries/armem/server/plugins/Plugin.h
+++ b/source/RobotAPI/libraries/armem/server/plugins/Plugin.h
@@ -80,16 +80,13 @@ namespace armarx::armem::server::plugins
 
         // Long-Term Memory
 
-        /// Indicates whether to use or not to use the ltm feature.
-        bool longtermMemoryEnabled = true;
-
         /// A manager class for the ltm. It internally holds a normal wm instance as a cache.
         server::ltm::disk::Memory longtermMemory;
 
 
     private:
 
-        client::plugins::Plugin* clientPlugin;
+        client::plugins::Plugin* clientPlugin = nullptr;
 
     };
 }
diff --git a/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.cpp b/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.cpp
index 7570470f5ccc8fe91eceec096baab4dc94081500..285c65e0b02895bbb59663a461db1249330daf13 100644
--- a/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.cpp
+++ b/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.cpp
@@ -86,12 +86,6 @@ namespace armarx::armem::server::plugins
     }
 
 
-    bool ReadWritePluginUser::isLongtermMemoryEnabled()
-    {
-        return plugin->longtermMemoryEnabled;
-    }
-
-
     ltm::disk::Memory& ReadWritePluginUser::longtermMemory()
     {
         return plugin->longtermMemory;
diff --git a/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h b/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h
index f0f891151ab255ed147473081c3851949b003614..8d3dad4c98d3f11592b250ce11a10fc96dc8cd81 100644
--- a/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h
+++ b/source/RobotAPI/libraries/armem/server/plugins/ReadWritePluginUser.h
@@ -55,7 +55,6 @@ namespace armarx::armem::server::plugins
         server::wm::Memory& workingMemory();
         MemoryToIceAdapter& iceAdapter();
 
-        bool isLongtermMemoryEnabled();
         server::ltm::disk::Memory& longtermMemory();