diff --git a/source/RobotAPI/components/armem/ArMemExampleClient/ArMemExampleClient.cpp b/source/RobotAPI/components/armem/ArMemExampleClient/ArMemExampleClient.cpp
index a2b7c1566cb872e43b65e4c74d2521e5838b21c2..a5c5ddc0c33f5403dcf8e92e5842e6a8e74ab4c3 100644
--- a/source/RobotAPI/components/armem/ArMemExampleClient/ArMemExampleClient.cpp
+++ b/source/RobotAPI/components/armem/ArMemExampleClient/ArMemExampleClient.cpp
@@ -25,9 +25,9 @@
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 #include <ArmarXCore/core/time/CycleUtil.h>
 
-#include <RobotAPI/libraries/armem/component/MemoryRemoteGui.h>
-#include <RobotAPI/libraries/armem/client/QueryBuilder.h>
-#include <RobotAPI/libraries/armem/memory/ice_conversions.h>
+#include <RobotAPI/libraries/armem/server/MemoryRemoteGui.h>
+#include <RobotAPI/libraries/armem/client/query/Builder.h>
+#include <RobotAPI/libraries/armem/core/ice_conversions.h>
 
 #include <RobotAPI/components/armem/ArMemExampleMemory/aron/ExampleData.aron.generated.h>
 
@@ -204,7 +204,7 @@ namespace armarx
                 << "\n- snapshotID:     \t'" << snapshotID << "'"
                 ;
 
-        armem::client::QueryBuilder qb;
+        armem::client::query::Builder qb;
         qb
         .coreSegments().withID(snapshotID)
         .providerSegments().withID(snapshotID)
@@ -396,7 +396,7 @@ namespace armarx
     void ArMemExampleClient::queryExampleData()
     {
         // Query all entities from provider.
-        armem::client::QueryBuilder qb;
+        armem::client::query::Builder qb;
         qb
         .coreSegments().withID(providerID)
         .providerSegments().withID(providerID)
diff --git a/source/RobotAPI/components/armem/ArMemExampleClient/ArMemExampleClient.h b/source/RobotAPI/components/armem/ArMemExampleClient/ArMemExampleClient.h
index 157b8ec2f4caab32384515a83b156310b1ae3590..07401d4c435ff92b4fea0b0b51cc23027ef56bc6 100644
--- a/source/RobotAPI/components/armem/ArMemExampleClient/ArMemExampleClient.h
+++ b/source/RobotAPI/components/armem/ArMemExampleClient/ArMemExampleClient.h
@@ -34,7 +34,7 @@
 #include <RobotAPI/interface/armem/MemoryInterface.h>
 #include <RobotAPI/interface/armem/MemoryNameSystemInterface.h>
 #include <RobotAPI/libraries/armem/client/ComponentPlugin.h>
-#include <RobotAPI/libraries/armem/memory/Memory.h>
+#include <RobotAPI/libraries/armem/core/Memory.h>
 
 
 namespace armarx
diff --git a/source/RobotAPI/components/armem/ArMemExampleMemory/ArMemExampleMemory.cpp b/source/RobotAPI/components/armem/ArMemExampleMemory/ArMemExampleMemory.cpp
index e52591c31ddb91f4e8d13975bbe4aab2fbbb4349..3e61638a4a222d1b132ac564367ad797184c50d4 100644
--- a/source/RobotAPI/components/armem/ArMemExampleMemory/ArMemExampleMemory.cpp
+++ b/source/RobotAPI/components/armem/ArMemExampleMemory/ArMemExampleMemory.cpp
@@ -26,8 +26,8 @@
 
 #include <SimoxUtility/algorithm/string.h>
 
-#include <RobotAPI/libraries/armem/error/ArMemError.h>
-#include <RobotAPI/libraries/armem/component/MemoryRemoteGui.h>
+#include <RobotAPI/libraries/armem/core/error.h>
+#include <RobotAPI/libraries/armem/server/MemoryRemoteGui.h>
 
 #include <RobotAPI/components/armem/ArMemExampleMemory/aron/ExampleData.aron.generated.h>
 
diff --git a/source/RobotAPI/components/armem/ArMemExampleMemory/ArMemExampleMemory.h b/source/RobotAPI/components/armem/ArMemExampleMemory/ArMemExampleMemory.h
index 7a62894387120b9a0822251801c3b94fac2b6301..44398426821d714f9b009373bfb82686f34a0982 100644
--- a/source/RobotAPI/components/armem/ArMemExampleMemory/ArMemExampleMemory.h
+++ b/source/RobotAPI/components/armem/ArMemExampleMemory/ArMemExampleMemory.h
@@ -31,8 +31,8 @@
 
 #include <RobotAPI/interface/armem/MemoryInterface.h>
 
-#include <RobotAPI/libraries/armem/memory/Memory.h>
-#include <RobotAPI/libraries/armem/component/MemoryComponentPlugin.h>
+#include <RobotAPI/libraries/armem/core/Memory.h>
+#include <RobotAPI/libraries/armem/server/MemoryComponentPlugin.h>
 
 
 namespace armarx
diff --git a/source/RobotAPI/components/armem/ArMemMemoryNameSystem/ArMemMemoryNameSystem.cpp b/source/RobotAPI/components/armem/ArMemMemoryNameSystem/ArMemMemoryNameSystem.cpp
index 7059bcc4241dda873783a98b0b6caed9c98a1981..22c9235a354a2f3eabc89d99d9e26212cd6ed5b4 100644
--- a/source/RobotAPI/components/armem/ArMemMemoryNameSystem/ArMemMemoryNameSystem.cpp
+++ b/source/RobotAPI/components/armem/ArMemMemoryNameSystem/ArMemMemoryNameSystem.cpp
@@ -26,7 +26,7 @@
 
 #include <SimoxUtility/algorithm/string.h>
 
-#include <RobotAPI/libraries/armem/error/ArMemError.h>
+#include <RobotAPI/libraries/armem/core/error.h>
 
 
 namespace armarx
diff --git a/source/RobotAPI/gui-plugins/ArMemMemoryViewer/ArMemMemoryViewerWidgetController.cpp b/source/RobotAPI/gui-plugins/ArMemMemoryViewer/ArMemMemoryViewerWidgetController.cpp
index 0d6ba10f9e2efa912f5315697980cc124e103020..833a82a542f26dfdf82abdc4cc0c79db4adb83a3 100644
--- a/source/RobotAPI/gui-plugins/ArMemMemoryViewer/ArMemMemoryViewerWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/ArMemMemoryViewer/ArMemMemoryViewerWidgetController.cpp
@@ -29,7 +29,7 @@
 
 #include <ArmarXCore/observers/variant/Variant.h>
 
-#include <RobotAPI/libraries/armem/memory/ice_conversions.h>
+#include <RobotAPI/libraries/armem/core/ice_conversions.h>
 #include <RobotAPI/libraries/armem_gui/QTreeWidgetAronDataVisitor.h>
 
 
diff --git a/source/RobotAPI/libraries/armem/CMakeLists.txt b/source/RobotAPI/libraries/armem/CMakeLists.txt
index 33e61ee439fe60e32e18cd3b8c2141f89a1f1a7b..4d8d4d3d64007b2fc68c1ee20699442be045f1ae 100644
--- a/source/RobotAPI/libraries/armem/CMakeLists.txt
+++ b/source/RobotAPI/libraries/armem/CMakeLists.txt
@@ -11,7 +11,7 @@ set(LIBS
 )
 
 set(ARON_FILES
-    aron/MemoryID.xml
+    core/aron/MemoryID.xml
 )
 
 set(LIB_FILES
@@ -21,25 +21,23 @@ set(LIB_FILES
     core/Time.cpp
     core/ice_conversions.cpp
 
-    error/ArMemError.cpp
-
-    memory/CoreSegment.cpp
-    memory/Entity.cpp
-    memory/EntityInstance.cpp
-    memory/EntitySnapshot.cpp
-    memory/ice_conversions.cpp
-    memory/InternalCommit.cpp
-    memory/Memory.cpp
-    memory/ProviderSegment.cpp
+    core/CoreSegment.cpp
+    core/Entity.cpp
+    core/EntityInstance.cpp
+    core/EntitySnapshot.cpp
+    core/ice_conversions.cpp
+    core/InternalCommit.cpp
+    core/Memory.cpp
+    core/ProviderSegment.cpp
+    core/detail/MemoryItem.cpp
 
-    # memory/detail/EntityContainer.cpp
-    # memory/detail/MemoryContainer.cpp
-    memory/detail/MemoryItem.cpp
-    # memory/detail/TypedEntityContainer.cpp
+    core/error/ArMemError.cpp
 
-    mns/MemoryNameSystem.cpp
-    mns/MemoryNameSystemClientPlugin.cpp
-    mns/MemoryNameSystemComponentPlugin.cpp
+    core/io/MemoryFileSystemStorage.cpp
+    core/io/DiskWriter/DiskWriter.cpp
+    core/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.cpp
+    core/io/DiskReader/DiskReader.cpp
+    core/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.cpp
 
     client/ComponentPlugin.cpp
     client/Reader.cpp
@@ -48,25 +46,23 @@ set(LIB_FILES
     client/WriterComponentPlugin.cpp
 
     client/Query.cpp
-    client/QueryBuilder.cpp
+    client/query/Builder.cpp
     client/query/selectors.cpp
 
-    component/MemoryToIceAdapter.cpp
-    component/MemoryComponentPlugin.cpp
-    component/MemoryRemoteGui.cpp
-    component/RemoteGuiAronDataVisitor.cpp
-
-    query/BaseQueryProcessor.cpp
-    query/EntityQueryProcessor.cpp
-    query/ProviderSegmentQueryProcessor.cpp
-    query/CoreSegmentQueryProcessor.cpp
-    query/MemoryQueryProcessor.cpp
-
-    ltm/MemoryFileSystemStorage.cpp
-    ltm/io/DiskWriter/DiskWriter.cpp
-    ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.cpp
-    ltm/io/DiskReader/DiskReader.cpp
-    ltm/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.cpp
+    server/MemoryToIceAdapter.cpp
+    server/MemoryComponentPlugin.cpp
+    server/MemoryRemoteGui.cpp
+    server/RemoteGuiAronDataVisitor.cpp
+
+    server/query/BaseQueryProcessor.cpp
+    server/query/EntityQueryProcessor.cpp
+    server/query/ProviderSegmentQueryProcessor.cpp
+    server/query/CoreSegmentQueryProcessor.cpp
+    server/query/MemoryQueryProcessor.cpp
+
+    mns/MemoryNameSystem.cpp
+    mns/MemoryNameSystemClientPlugin.cpp
+    mns/MemoryNameSystemComponentPlugin.cpp
 )
 
 set(LIB_HEADERS
@@ -78,26 +74,30 @@ set(LIB_HEADERS
     core/ice_conversions.h
     core/ice_conversions_templates.h
 
-    error.h
-    error/ArMemError.h
-
-    memory/CoreSegment.h
-    memory/Entity.h
-    memory/EntityInstance.h
-    memory/EntitySnapshot.h
-    memory/ice_conversions.h
-    memory/InternalCommit.h
-    memory/Memory.h
-    memory/ProviderSegment.h
+    core/error.h
+    core/error/ArMemError.h
 
-    memory/detail/EntityContainer.h
-    memory/detail/MemoryContainer.h
-    memory/detail/MemoryItem.h
-    memory/detail/TypedEntityContainer.h
-
-    mns/MemoryNameSystem.h
-    mns/MemoryNameSystemClientPlugin.h
-    mns/MemoryNameSystemComponentPlugin.h
+    core/CoreSegment.h
+    core/Entity.h
+    core/EntityInstance.h
+    core/EntitySnapshot.h
+    core/ice_conversions.h
+    core/InternalCommit.h
+    core/Memory.h
+    core/ProviderSegment.h
+
+    core/detail/EntityContainer.h
+    core/detail/MemoryContainer.h
+    core/detail/MemoryItem.h
+    core/detail/TypedEntityContainer.h
+
+    core/io/FileSystemLookupMemory.h
+    core/io/MemoryFileSystemStorage.h
+    core/io/DiskReaderWriter.h
+    core/io/DiskWriter/DiskWriter.h
+    core/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h
+    core/io/DiskReader/DiskReader.h
+    core/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h
 
     client/ComponentPlugin.h
     client/Reader.h
@@ -106,31 +106,28 @@ set(LIB_HEADERS
     client/WriterComponentPlugin.h
 
     client/Query.h
-    client/QueryBuilder.h
+    client/query/Builder.h
     client/query/NameSelectorOps.h
     client/query/SelectorOps.h
     client/query/query_fns.h
     client/query/selectors.h
 
-    component/MemoryToIceAdapter.h
-    component/MemoryComponentPlugin.h
-    component/MemoryRemoteGui.h
-    component/RemoteGuiAronDataVisitor.h
-
-    query.h
-    query/BaseQueryProcessor.h
-    query/EntityQueryProcessor.h
-    query/ProviderSegmentQueryProcessor.h
-    query/CoreSegmentQueryProcessor.h
-    query/MemoryQueryProcessor.h
-
-    ltm/FileSystemLookupMemory.h
-    ltm/MemoryFileSystemStorage.h
-    ltm/io/DiskReaderWriter.h
-    ltm/io/DiskWriter/DiskWriter.h
-    ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h
-    ltm/io/DiskReader/DiskReader.h
-    ltm/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h
+    server/MemoryToIceAdapter.h
+    server/MemoryComponentPlugin.h
+    server/MemoryRemoteGui.h
+    server/RemoteGuiAronDataVisitor.h
+
+    server/query.h
+    server/query/BaseQueryProcessor.h
+    server/query/EntityQueryProcessor.h
+    server/query/ProviderSegmentQueryProcessor.h
+    server/query/CoreSegmentQueryProcessor.h
+    server/query/MemoryQueryProcessor.h
+
+    mns/MemoryNameSystem.h
+    mns/MemoryNameSystemClientPlugin.h
+    mns/MemoryNameSystemComponentPlugin.h
+
 )
 
 armarx_add_library("${LIB_NAME}" "${LIB_FILES}" "${LIB_HEADERS}" "${LIBS}")
diff --git a/source/RobotAPI/libraries/armem/client/ComponentPlugin.cpp b/source/RobotAPI/libraries/armem/client/ComponentPlugin.cpp
index 853e41cf69160ccda0bc47a06d2984d5937ee482..891715eb4592606a6ed7ea864bb474993f8e98d2 100644
--- a/source/RobotAPI/libraries/armem/client/ComponentPlugin.cpp
+++ b/source/RobotAPI/libraries/armem/client/ComponentPlugin.cpp
@@ -5,7 +5,7 @@
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
 // RobotAPI
-#include <RobotAPI/libraries/armem/error.h>
+#include <RobotAPI/libraries/armem/core/error.h>
 
 
 armarx::armem::client::ComponentPluginUser::ComponentPluginUser()
diff --git a/source/RobotAPI/libraries/armem/client/Query.cpp b/source/RobotAPI/libraries/armem/client/Query.cpp
index 84ff149688fabddfc9903592e8f83841824e26c4..04672937b56daac0e8efd5a5661cbe06ea5beed1 100644
--- a/source/RobotAPI/libraries/armem/client/Query.cpp
+++ b/source/RobotAPI/libraries/armem/client/Query.cpp
@@ -1,6 +1,6 @@
 #include "Query.h"
 
-#include "../memory/ice_conversions.h"
+#include <RobotAPI/libraries/armem/core/ice_conversions.h>
 
 
 namespace armarx::armem::client
diff --git a/source/RobotAPI/libraries/armem/client/Query.h b/source/RobotAPI/libraries/armem/client/Query.h
index a894221f3b3b03c99c91ad5a279dc2bc22155825..8519c7d3452830d1d54564b17342f8be0a900814 100644
--- a/source/RobotAPI/libraries/armem/client/Query.h
+++ b/source/RobotAPI/libraries/armem/client/Query.h
@@ -6,7 +6,7 @@
 #include <RobotAPI/libraries/armem/core/ice_conversions.h>
 #include <RobotAPI/libraries/armem/core/SuccessHeader.h>
 #include <RobotAPI/libraries/armem/core/DataMode.h>
-#include <RobotAPI/libraries/armem/memory/Memory.h>
+#include <RobotAPI/libraries/armem/core/Memory.h>
 
 
 namespace armarx::armem::client
diff --git a/source/RobotAPI/libraries/armem/client/Reader.cpp b/source/RobotAPI/libraries/armem/client/Reader.cpp
index 558703dcc1cc1110dc244b6f596cb220d7996f31..9c33647811edc20fbef54450994877ea9d2fff00 100644
--- a/source/RobotAPI/libraries/armem/client/Reader.cpp
+++ b/source/RobotAPI/libraries/armem/client/Reader.cpp
@@ -2,7 +2,7 @@
 
 #include <ArmarXCore/core/logging/Logging.h>
 
-#include "QueryBuilder.h"
+#include "query/Builder.h"
 #include "query/query_fns.h"
 
 
@@ -65,7 +65,7 @@ namespace armarx::armem::client
     {
         using namespace client::query_fns;
 
-        QueryBuilder qb(dataMode);
+        query::Builder qb(dataMode);
         qb.coreSegments(all()).providerSegments(all()).entities(all()).snapshots(all());
 
         return this->query(qb.buildQueryInput());
@@ -75,7 +75,7 @@ namespace armarx::armem::client
     {
         using namespace client::query_fns;
 
-        QueryBuilder qb(dataMode);
+        query::Builder qb(dataMode);
         qb.coreSegments(all()).providerSegments(all()).entities(all()).snapshots(latest());
 
         return this->query(qb.buildQueryInput());
diff --git a/source/RobotAPI/libraries/armem/client/Reader.h b/source/RobotAPI/libraries/armem/client/Reader.h
index 2a7e4f4c1101b5924f11f9e52faebbc8cad79dcf..f0265f5f403620228d3d3d56a10c16929ac38d58 100644
--- a/source/RobotAPI/libraries/armem/client/Reader.h
+++ b/source/RobotAPI/libraries/armem/client/Reader.h
@@ -10,7 +10,7 @@
 #include <RobotAPI/interface/armem/ReadingMemoryInterface.h>
 #include <RobotAPI/interface/armem/MemoryListenerInterface.h>
 #include <RobotAPI/libraries/armem/core/ice_conversions.h>
-#include <RobotAPI/libraries/armem/memory/Memory.h>
+#include <RobotAPI/libraries/armem/core/Memory.h>
 
 #include "Query.h"
 
diff --git a/source/RobotAPI/libraries/armem/client/ReaderComponentPlugin.cpp b/source/RobotAPI/libraries/armem/client/ReaderComponentPlugin.cpp
index fca6d9442ba419d26a3d6ca9cda23ad90ebb436c..22804ae0e5269199b3a2274c62fa94c964266577 100644
--- a/source/RobotAPI/libraries/armem/client/ReaderComponentPlugin.cpp
+++ b/source/RobotAPI/libraries/armem/client/ReaderComponentPlugin.cpp
@@ -5,7 +5,7 @@
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
 // RobotAPI
-#include <RobotAPI/libraries/armem/error.h>
+#include <RobotAPI/libraries/armem/core/error.h>
 
 
 armarx::armem::client::ReaderComponentPlugin::~ReaderComponentPlugin()
diff --git a/source/RobotAPI/libraries/armem/client/WriterComponentPlugin.cpp b/source/RobotAPI/libraries/armem/client/WriterComponentPlugin.cpp
index 5ed4dc1f79cd130f5090411c413bd5a8122c4df3..bb192af2018256fd1092bb4a183fce9e04559c3d 100644
--- a/source/RobotAPI/libraries/armem/client/WriterComponentPlugin.cpp
+++ b/source/RobotAPI/libraries/armem/client/WriterComponentPlugin.cpp
@@ -5,7 +5,7 @@
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
 // RobotAPI
-#include <RobotAPI/libraries/armem/error.h>
+#include <RobotAPI/libraries/armem/core/error.h>
 
 
 armarx::armem::client::WriterComponentPlugin::~WriterComponentPlugin()
diff --git a/source/RobotAPI/libraries/armem/client/QueryBuilder.cpp b/source/RobotAPI/libraries/armem/client/query/Builder.cpp
similarity index 51%
rename from source/RobotAPI/libraries/armem/client/QueryBuilder.cpp
rename to source/RobotAPI/libraries/armem/client/query/Builder.cpp
index 9eb55bfc97e1402e2730d6069993dbdc28c1ce22..261bd706a54f72d6ab042cbd63c32854128401ad 100644
--- a/source/RobotAPI/libraries/armem/client/QueryBuilder.cpp
+++ b/source/RobotAPI/libraries/armem/client/query/Builder.cpp
@@ -1,29 +1,29 @@
-#include "QueryBuilder.h"
+#include "Builder.h"
 
 
-namespace armarx::armem::client
+namespace armarx::armem::client::query
 {
 
-    QueryBuilder::QueryBuilder(DataMode dataMode) : dataMode(dataMode)
+    Builder::Builder(DataMode dataMode) : dataMode(dataMode)
     {
     }
 
-    QueryInput QueryBuilder::buildQueryInput() const
+    QueryInput Builder::buildQueryInput() const
     {
         QueryInput input;
         input.memoryQueries = buildMemoryQueries();
         input.dataMode = dataMode;
         return input;
     }
-    data::QueryInput QueryBuilder::buildQueryInputIce() const
+    data::QueryInput Builder::buildQueryInputIce() const
     {
         return buildQueryInput().toIce();
     }
 
-    data::query::MemoryQuerySeq QueryBuilder::buildMemoryQueries() const
+    data::query::MemoryQuerySeq Builder::buildMemoryQueries() const
     {
         data::query::MemoryQuerySeq memoryQueries;
-        for (const query::CoreSegmentSelector& child : _children)
+        for (const CoreSegmentSelector& child : _children)
         {
             for (const data::query::MemoryQueryPtr& query : child.buildQueries())
             {
@@ -34,12 +34,12 @@ namespace armarx::armem::client
     }
 
 
-    query::CoreSegmentSelector& QueryBuilder::coreSegments()
+    CoreSegmentSelector& Builder::coreSegments()
     {
         return _addChild();
     }
 
-    query::CoreSegmentSelector& QueryBuilder::coreSegments(const query::CoreSegmentSelector& selector)
+    CoreSegmentSelector& Builder::coreSegments(const CoreSegmentSelector& selector)
     {
         return _addChild(selector);
     }
diff --git a/source/RobotAPI/libraries/armem/client/QueryBuilder.h b/source/RobotAPI/libraries/armem/client/query/Builder.h
similarity index 52%
rename from source/RobotAPI/libraries/armem/client/QueryBuilder.h
rename to source/RobotAPI/libraries/armem/client/query/Builder.h
index 2e38d09865a192123f30f061fdadeeef42d8eee5..df41a8d44739ab326c7ab9905dd9dc9578dbd3e1 100644
--- a/source/RobotAPI/libraries/armem/client/QueryBuilder.h
+++ b/source/RobotAPI/libraries/armem/client/query/Builder.h
@@ -2,17 +2,18 @@
 
 #include <RobotAPI/interface/armem/query.h>
 
-#include "../core/DataMode.h"
-#include "Query.h"
-#include "query/selectors.h"
+#include <RobotAPI/libraries/armem/core/DataMode.h>
+#include <RobotAPI/libraries/armem/client/Query.h>
 
+#include "selectors.h"
 
-namespace armarx::armem::client
+
+namespace armarx::armem::client::query
 {
 
     // ToDo: Make a memory selector (but this level is not in ice, yet)
     /**
-     * @brief The QueryBuilder class provides a fluent-style specification of
+     * @brief The query::Builder class provides a fluent-style specification of
      * hierarchical queries.
      *
      * Syntax:
@@ -21,20 +22,20 @@ namespace armarx::armem::client
      * TODO
      * @endcode
      */
-    class QueryBuilder :
-        public query::detail::ParentSelectorOps<QueryBuilder, query::CoreSegmentSelector>
+    class Builder :
+        public detail::ParentSelectorOps<Builder, CoreSegmentSelector>
     {
     public:
 
-        QueryBuilder(DataMode dataMode = DataMode::WithData);
+        Builder(DataMode dataMode = DataMode::WithData);
 
 
         /// Start specifying core segments.
-        query::CoreSegmentSelector& coreSegments();
-        query::CoreSegmentSelector& coreSegments(const query::CoreSegmentSelector& selector);
+        CoreSegmentSelector& coreSegments();
+        CoreSegmentSelector& coreSegments(const CoreSegmentSelector& selector);
 
         template <class ...Ts>
-        query::CoreSegmentSelector& coreSegments(Ts... args)
+        CoreSegmentSelector& coreSegments(Ts... args)
         {
             return _addChild(args...);
         }
diff --git a/source/RobotAPI/libraries/armem/client/query/selectors.h b/source/RobotAPI/libraries/armem/client/query/selectors.h
index 9a9ce825ab01afce1316962e89c389a15b0686f9..da45029b4273fa06fcbca75f9a02f28b5523659c 100644
--- a/source/RobotAPI/libraries/armem/client/query/selectors.h
+++ b/source/RobotAPI/libraries/armem/client/query/selectors.h
@@ -8,9 +8,9 @@
 #include "SelectorOps.h"
 
 
-namespace armarx::armem::client
+namespace armarx::armem::client::query
 {
-    class QueryBuilder;
+    class Builder;
 }
 
 namespace armarx::armem::client::query
diff --git a/source/RobotAPI/libraries/armem/memory/CoreSegment.cpp b/source/RobotAPI/libraries/armem/core/CoreSegment.cpp
similarity index 99%
rename from source/RobotAPI/libraries/armem/memory/CoreSegment.cpp
rename to source/RobotAPI/libraries/armem/core/CoreSegment.cpp
index cf618d66fe714f160414211e55966f1ff5a135bc..f66ccd6628d7d19853ee7cfbf8963a429c5e0c76 100644
--- a/source/RobotAPI/libraries/armem/memory/CoreSegment.cpp
+++ b/source/RobotAPI/libraries/armem/core/CoreSegment.cpp
@@ -2,7 +2,7 @@
 
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
-#include "../error/ArMemError.h"
+#include "error.h"
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/memory/CoreSegment.h b/source/RobotAPI/libraries/armem/core/CoreSegment.h
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/CoreSegment.h
rename to source/RobotAPI/libraries/armem/core/CoreSegment.h
diff --git a/source/RobotAPI/libraries/armem/memory/Entity.cpp b/source/RobotAPI/libraries/armem/core/Entity.cpp
similarity index 99%
rename from source/RobotAPI/libraries/armem/memory/Entity.cpp
rename to source/RobotAPI/libraries/armem/core/Entity.cpp
index 7b5b4208bb82add7e998761e0736f675be78bb31..4cd1955aa1d2811f5d9138a0d912ee66131b316c 100644
--- a/source/RobotAPI/libraries/armem/memory/Entity.cpp
+++ b/source/RobotAPI/libraries/armem/core/Entity.cpp
@@ -4,7 +4,7 @@
 
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
-#include "../error.h"
+#include "error.h"
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/memory/Entity.h b/source/RobotAPI/libraries/armem/core/Entity.h
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/Entity.h
rename to source/RobotAPI/libraries/armem/core/Entity.h
diff --git a/source/RobotAPI/libraries/armem/memory/EntityInstance.cpp b/source/RobotAPI/libraries/armem/core/EntityInstance.cpp
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/EntityInstance.cpp
rename to source/RobotAPI/libraries/armem/core/EntityInstance.cpp
diff --git a/source/RobotAPI/libraries/armem/memory/EntityInstance.h b/source/RobotAPI/libraries/armem/core/EntityInstance.h
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/EntityInstance.h
rename to source/RobotAPI/libraries/armem/core/EntityInstance.h
diff --git a/source/RobotAPI/libraries/armem/memory/EntitySnapshot.cpp b/source/RobotAPI/libraries/armem/core/EntitySnapshot.cpp
similarity index 99%
rename from source/RobotAPI/libraries/armem/memory/EntitySnapshot.cpp
rename to source/RobotAPI/libraries/armem/core/EntitySnapshot.cpp
index cbc5d7ef0ed6b270fa6d576d8be0c0c60396e283..0b974ca70bd40ed5225911bf1db6b3c339fd4c81 100644
--- a/source/RobotAPI/libraries/armem/memory/EntitySnapshot.cpp
+++ b/source/RobotAPI/libraries/armem/core/EntitySnapshot.cpp
@@ -2,7 +2,7 @@
 
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
-#include "../error.h"
+#include "error.h"
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/memory/EntitySnapshot.h b/source/RobotAPI/libraries/armem/core/EntitySnapshot.h
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/EntitySnapshot.h
rename to source/RobotAPI/libraries/armem/core/EntitySnapshot.h
diff --git a/source/RobotAPI/libraries/armem/memory/InternalCommit.cpp b/source/RobotAPI/libraries/armem/core/InternalCommit.cpp
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/InternalCommit.cpp
rename to source/RobotAPI/libraries/armem/core/InternalCommit.cpp
diff --git a/source/RobotAPI/libraries/armem/memory/InternalCommit.h b/source/RobotAPI/libraries/armem/core/InternalCommit.h
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/InternalCommit.h
rename to source/RobotAPI/libraries/armem/core/InternalCommit.h
diff --git a/source/RobotAPI/libraries/armem/memory/Memory.cpp b/source/RobotAPI/libraries/armem/core/Memory.cpp
similarity index 99%
rename from source/RobotAPI/libraries/armem/memory/Memory.cpp
rename to source/RobotAPI/libraries/armem/core/Memory.cpp
index 9157597ab295dd3bcf7feb6989eaf97f152b7de2..f074823f1b875c5a7715c3d7edd6048f22b1357d 100644
--- a/source/RobotAPI/libraries/armem/memory/Memory.cpp
+++ b/source/RobotAPI/libraries/armem/core/Memory.cpp
@@ -3,7 +3,7 @@
 #include <ArmarXCore/core/logging/Logging.h>
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
-#include "../error/ArMemError.h"
+#include "error.h"
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/memory/Memory.h b/source/RobotAPI/libraries/armem/core/Memory.h
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/Memory.h
rename to source/RobotAPI/libraries/armem/core/Memory.h
diff --git a/source/RobotAPI/libraries/armem/core/MemoryID.cpp b/source/RobotAPI/libraries/armem/core/MemoryID.cpp
index 493a7fb2ca5df6a6761a575e2ba1d83b0b09e032..d1ab27e9038d11b84a143609a68892f8fe6f58c2 100644
--- a/source/RobotAPI/libraries/armem/core/MemoryID.cpp
+++ b/source/RobotAPI/libraries/armem/core/MemoryID.cpp
@@ -2,7 +2,7 @@
 
 #include <SimoxUtility/algorithm/string.h>
 
-#include "../error/ArMemError.h"
+#include "error/ArMemError.h"
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/memory/ProviderSegment.cpp b/source/RobotAPI/libraries/armem/core/ProviderSegment.cpp
similarity index 99%
rename from source/RobotAPI/libraries/armem/memory/ProviderSegment.cpp
rename to source/RobotAPI/libraries/armem/core/ProviderSegment.cpp
index ca772cc4bc6fcc76bd8801b3970986b2fb0938bc..23c8fee802745a967641114352cb806c67fc0046 100644
--- a/source/RobotAPI/libraries/armem/memory/ProviderSegment.cpp
+++ b/source/RobotAPI/libraries/armem/core/ProviderSegment.cpp
@@ -2,7 +2,7 @@
 
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
-#include "../error/ArMemError.h"
+#include "error.h"
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/memory/ProviderSegment.h b/source/RobotAPI/libraries/armem/core/ProviderSegment.h
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/ProviderSegment.h
rename to source/RobotAPI/libraries/armem/core/ProviderSegment.h
diff --git a/source/RobotAPI/libraries/armem/aron/MemoryID.xml b/source/RobotAPI/libraries/armem/core/aron/MemoryID.xml
similarity index 100%
rename from source/RobotAPI/libraries/armem/aron/MemoryID.xml
rename to source/RobotAPI/libraries/armem/core/aron/MemoryID.xml
diff --git a/source/RobotAPI/libraries/armem/memory/detail/EntityContainer.cpp b/source/RobotAPI/libraries/armem/core/detail/EntityContainer.cpp
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/detail/EntityContainer.cpp
rename to source/RobotAPI/libraries/armem/core/detail/EntityContainer.cpp
diff --git a/source/RobotAPI/libraries/armem/memory/detail/EntityContainer.h b/source/RobotAPI/libraries/armem/core/detail/EntityContainer.h
similarity index 99%
rename from source/RobotAPI/libraries/armem/memory/detail/EntityContainer.h
rename to source/RobotAPI/libraries/armem/core/detail/EntityContainer.h
index 3a19b887cf660601d8ec0d004f04225f972ff245..3a68208a465bab27883d348944a725720ef55bb8 100644
--- a/source/RobotAPI/libraries/armem/memory/detail/EntityContainer.h
+++ b/source/RobotAPI/libraries/armem/core/detail/EntityContainer.h
@@ -3,7 +3,7 @@
 #include "../InternalCommit.h"
 #include "../Entity.h"
 #include "../EntitySnapshot.h"
-#include "../../error/ArMemError.h"
+#include "../error/ArMemError.h"
 
 #include "MemoryContainer.h"
 
diff --git a/source/RobotAPI/libraries/armem/memory/detail/MemoryContainer.cpp b/source/RobotAPI/libraries/armem/core/detail/MemoryContainer.cpp
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/detail/MemoryContainer.cpp
rename to source/RobotAPI/libraries/armem/core/detail/MemoryContainer.cpp
diff --git a/source/RobotAPI/libraries/armem/memory/detail/MemoryContainer.h b/source/RobotAPI/libraries/armem/core/detail/MemoryContainer.h
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/detail/MemoryContainer.h
rename to source/RobotAPI/libraries/armem/core/detail/MemoryContainer.h
diff --git a/source/RobotAPI/libraries/armem/memory/detail/MemoryItem.cpp b/source/RobotAPI/libraries/armem/core/detail/MemoryItem.cpp
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/detail/MemoryItem.cpp
rename to source/RobotAPI/libraries/armem/core/detail/MemoryItem.cpp
diff --git a/source/RobotAPI/libraries/armem/memory/detail/MemoryItem.h b/source/RobotAPI/libraries/armem/core/detail/MemoryItem.h
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/detail/MemoryItem.h
rename to source/RobotAPI/libraries/armem/core/detail/MemoryItem.h
diff --git a/source/RobotAPI/libraries/armem/memory/detail/TypedEntityContainer.h b/source/RobotAPI/libraries/armem/core/detail/TypedEntityContainer.h
similarity index 100%
rename from source/RobotAPI/libraries/armem/memory/detail/TypedEntityContainer.h
rename to source/RobotAPI/libraries/armem/core/detail/TypedEntityContainer.h
diff --git a/source/RobotAPI/libraries/armem/error.h b/source/RobotAPI/libraries/armem/core/error.h
similarity index 100%
rename from source/RobotAPI/libraries/armem/error.h
rename to source/RobotAPI/libraries/armem/core/error.h
diff --git a/source/RobotAPI/libraries/armem/error/ArMemError.cpp b/source/RobotAPI/libraries/armem/core/error/ArMemError.cpp
similarity index 100%
rename from source/RobotAPI/libraries/armem/error/ArMemError.cpp
rename to source/RobotAPI/libraries/armem/core/error/ArMemError.cpp
diff --git a/source/RobotAPI/libraries/armem/error/ArMemError.h b/source/RobotAPI/libraries/armem/core/error/ArMemError.h
similarity index 99%
rename from source/RobotAPI/libraries/armem/error/ArMemError.h
rename to source/RobotAPI/libraries/armem/core/error/ArMemError.h
index c3c6a1b57be4fa49934294d6bffbba52ee3a1e82..ce301206d31c72e29c49d786ad31cb59f307b21e 100644
--- a/source/RobotAPI/libraries/armem/error/ArMemError.h
+++ b/source/RobotAPI/libraries/armem/core/error/ArMemError.h
@@ -3,7 +3,7 @@
 #include <stdexcept>
 #include <SimoxUtility/meta/type_name.h>
 
-#include "../core/MemoryID.h"
+#include "../MemoryID.h"
 
 
 namespace armarx::armem::error
diff --git a/source/RobotAPI/libraries/armem/core/ice_conversions.cpp b/source/RobotAPI/libraries/armem/core/ice_conversions.cpp
index d354077fa4503d8ed6fde686fabdeae54ea36c1b..3bda0238cfe77aa2801fd72ec81415cb759d3df7 100644
--- a/source/RobotAPI/libraries/armem/core/ice_conversions.cpp
+++ b/source/RobotAPI/libraries/armem/core/ice_conversions.cpp
@@ -132,3 +132,163 @@ namespace armarx
 
 
 
+#include "ice_conversions.h"
+
+
+namespace armarx
+{
+
+    void armem::fromIce(const data::Commit& ice, InternalCommit& commit, Time timeArrived)
+    {
+        commit.updates.clear();
+        for (const auto& ice_update : ice.updates)
+        {
+            InternalEntityUpdate& update = commit.updates.emplace_back(InternalEntityUpdate());
+            fromIce(ice_update, update, timeArrived);
+        }
+    }
+
+
+    void armem::fromIce(const data::EntityUpdate& ice, InternalEntityUpdate& update, Time timeArrived)
+    {
+        armem::fromIce(ice, update);
+        update.timeArrived = timeArrived;
+    }
+
+
+    void armem::detail::toIceItem(data::detail::MemoryItem& ice, const MemoryItem& item)
+    {
+        toIce(ice.id, item.id());
+    }
+
+    void armem::detail::fromIceItem(const data::detail::MemoryItem& ice, MemoryItem& item)
+    {
+        fromIce(ice.id, item.id());
+    }
+
+
+    void armem::toIce(data::EntityInstanceMetadata& ice, const EntityInstanceMetadata& metadata)
+    {
+        ice.confidence = metadata.confidence;
+        toIce(ice.timeArrivedMicroSeconds, metadata.timeArrived);
+        toIce(ice.timeCreatedMicroSeconds, metadata.timeCreated);
+        toIce(ice.timeSentMicroSeconds, metadata.timeSent);
+    }
+    void armem::fromIce(const data::EntityInstanceMetadata& ice, EntityInstanceMetadata& metadata)
+    {
+        metadata.confidence = ice.confidence;
+        fromIce(ice.timeArrivedMicroSeconds, metadata.timeArrived);
+        fromIce(ice.timeCreatedMicroSeconds, metadata.timeCreated);
+        fromIce(ice.timeSentMicroSeconds, metadata.timeSent);
+    }
+
+    void armem::toIce(data::EntityInstance& ice, const EntityInstance& data)
+    {
+        detail::toIceItem(ice, data);
+
+        if (data.data())
+        {
+            ice.data = data.data()->toAronDictPtr();
+        }
+        toIce(ice.metadata, data.metadata());
+    }
+    void armem::fromIce(const data::EntityInstance& ice, EntityInstance& data)
+    {
+        detail::fromIceItem(ice, data);
+
+        if (ice.data)
+        {
+            data.setData(aron::datanavigator::AronDictDataNavigator::FromAronDictPtr(ice.data));
+        }
+        fromIce(ice.metadata, data.metadata());
+    }
+
+
+    void armem::toIce(data::EntitySnapshot& ice, const EntitySnapshot& snapshot)
+    {
+        detail::toIceItem(ice, snapshot);
+
+        toIce(ice.instances, snapshot.instances);
+    }
+    void armem::fromIce(const data::EntitySnapshot& ice, EntitySnapshot& snapshot)
+    {
+        detail::fromIceItem(ice, snapshot);
+
+        fromIce(ice.instances, snapshot.instances);
+    }
+
+    void armem::toIce(data::Entity& ice, const Entity& entity)
+    {
+        detail::toIceItem(ice, entity);
+
+        toIce(ice.history, entity.history);
+    }
+    void armem::fromIce(const data::Entity& ice, Entity& entity)
+    {
+        detail::fromIceItem(ice, entity);
+
+        fromIce(ice.history, entity.history);
+    }
+
+
+    void armem::toIce(data::ProviderSegment& ice, const ProviderSegment& providerSegment)
+    {
+        detail::toIceItem(ice, providerSegment);
+
+        if (providerSegment.hasAronType())
+        {
+            ice.aronType = providerSegment.aronType()->getResult();
+        }
+        toIce(ice.entities, providerSegment.entities);
+    }
+    void armem::fromIce(const data::ProviderSegment& ice, ProviderSegment& providerSegment)
+    {
+        detail::fromIceItem(ice, providerSegment);
+
+        if (ice.aronType)
+        {
+            providerSegment.aronType() = aron::typenavigator::AronObjectTypeNavigator::DynamicCastAndCheck(
+                                             aron::typenavigator::AronTypeNavigator::FromAronType(ice.aronType)
+                                         );
+        }
+        fromIce(ice.entities, providerSegment.entities);
+    }
+
+    void armem::toIce(data::CoreSegment& ice, const CoreSegment& coreSegment)
+    {
+        detail::toIceItem(ice, coreSegment);
+
+        if (coreSegment.hasAronType())
+        {
+            ice.aronType = coreSegment.aronType()->getResult();
+        }
+        toIce(ice.providerSegments, coreSegment.providerSegments);
+    }
+    void armem::fromIce(const data::CoreSegment& ice, CoreSegment& coreSegment)
+    {
+        detail::fromIceItem(ice, coreSegment);
+
+        if (ice.aronType)
+        {
+            coreSegment.aronType() = aron::typenavigator::AronObjectTypeNavigator::DynamicCastAndCheck(
+                                         aron::typenavigator::AronTypeNavigator::FromAronType(ice.aronType)
+                                     );
+        }
+        fromIce(ice.providerSegments, coreSegment.providerSegments);
+    }
+
+    void armem::toIce(data::Memory& ice, const Memory& memory)
+    {
+        detail::toIceItem(ice, memory);
+
+        toIce(ice.coreSegments, memory.coreSegments);
+    }
+    void armem::fromIce(const data::Memory& ice, Memory& memory)
+    {
+        detail::fromIceItem(ice, memory);
+
+        fromIce(ice.coreSegments, memory.coreSegments);
+    }
+
+}
+
diff --git a/source/RobotAPI/libraries/armem/core/ice_conversions.h b/source/RobotAPI/libraries/armem/core/ice_conversions.h
index 3485a8d527574cab32df88546f30c0aa4f50b517..9427008842b3be9d0169af5c1838e4833c591aed 100644
--- a/source/RobotAPI/libraries/armem/core/ice_conversions.h
+++ b/source/RobotAPI/libraries/armem/core/ice_conversions.h
@@ -46,3 +46,54 @@ namespace armarx::armem
     void toIce(data::EntityUpdateResult& ice, const EntityUpdateResult& result);
 
 }
+
+
+#pragma once
+
+#include <RobotAPI/interface/armem/memory.h>
+
+#include "../core/ice_conversions.h"
+
+#include "InternalCommit.h"
+#include "Memory.h"
+
+
+namespace armarx::armem
+{
+
+    void fromIce(const data::Commit& ice, InternalCommit& commit, Time timeArrived);
+    void fromIce(const data::EntityUpdate& ice, InternalEntityUpdate& update, Time timeArrived);
+
+
+    void toIce(data::EntityInstanceMetadata& ice, const EntityInstanceMetadata& metadata);
+    void fromIce(const data::EntityInstanceMetadata& ice, EntityInstanceMetadata& metadata);
+
+    void toIce(data::EntityInstance& ice, const EntityInstance& data);
+    void fromIce(const data::EntityInstance& ice, EntityInstance& data);
+
+
+    void toIce(data::EntitySnapshot& ice, const EntitySnapshot& snapshot);
+    void fromIce(const data::EntitySnapshot& ice, EntitySnapshot& snapshot);
+
+    void toIce(data::Entity& ice, const Entity& entity);
+    void fromIce(const data::Entity& ice, Entity& entity);
+
+
+    void toIce(data::ProviderSegment& ice, const ProviderSegment& providerSegment);
+    void fromIce(const data::ProviderSegment& ice, ProviderSegment& providerSegment);
+
+    void toIce(data::CoreSegment& ice, const CoreSegment& coreSegment);
+    void fromIce(const data::CoreSegment& ice, CoreSegment& coreSegment);
+
+    void toIce(data::Memory& ice, const Memory& memory);
+    void fromIce(const data::Memory& ice, Memory& memory);
+
+
+    namespace detail
+    {
+        void toIceItem(data::detail::MemoryItem& ice, const MemoryItem& item);
+        void fromIceItem(const data::detail::MemoryItem& ice, MemoryItem& item);
+    }
+
+}
+
diff --git a/source/RobotAPI/libraries/armem/ltm/io/DiskReader/DiskReader.cpp b/source/RobotAPI/libraries/armem/core/io/DiskReader/DiskReader.cpp
similarity index 99%
rename from source/RobotAPI/libraries/armem/ltm/io/DiskReader/DiskReader.cpp
rename to source/RobotAPI/libraries/armem/core/io/DiskReader/DiskReader.cpp
index 38050151327e2c759c4a0f4f5f870d91f6b07fbf..df63ab589f076274d84982ee0ff67f6a3f8ec95f 100644
--- a/source/RobotAPI/libraries/armem/ltm/io/DiskReader/DiskReader.cpp
+++ b/source/RobotAPI/libraries/armem/core/io/DiskReader/DiskReader.cpp
@@ -36,6 +36,10 @@ namespace armarx::armem
             {
             }
 
+            DiskReader::~DiskReader()
+            {
+            }
+
             FileSystemLookupMemoryManager DiskReader::readMemoryStructureFromDisk()
             {
                 FileSystemLookupMemoryManager ret;
diff --git a/source/RobotAPI/libraries/armem/ltm/io/DiskReader/DiskReader.h b/source/RobotAPI/libraries/armem/core/io/DiskReader/DiskReader.h
similarity index 94%
rename from source/RobotAPI/libraries/armem/ltm/io/DiskReader/DiskReader.h
rename to source/RobotAPI/libraries/armem/core/io/DiskReader/DiskReader.h
index 249b9c4aa132196ddcf8e0415fa1126ef40da103..af23d4e069b199cc875795fdd977e70075f36862 100644
--- a/source/RobotAPI/libraries/armem/ltm/io/DiskReader/DiskReader.h
+++ b/source/RobotAPI/libraries/armem/core/io/DiskReader/DiskReader.h
@@ -29,7 +29,7 @@
 #include <filesystem>
 
 // BaseClass
-#include <RobotAPI/libraries/armem/ltm/io/DiskReaderWriter.h>
+#include <RobotAPI/libraries/armem/core/io/DiskReaderWriter.h>
 
 // ArmarX
 #include <RobotAPI/interface/aron.h>
@@ -42,7 +42,7 @@
 #include <RobotAPI/libraries/aron/aroncore/io/AronTypeIO/LegacyAronTypeConverter/LegacyAronTypeConverter.h>
 #include <RobotAPI/libraries/aron/aroncore/io/AronTypeIO/classWriters/NavigatorWriter/AronTypeNavigatorWriter.h>
 
-#include <RobotAPI/libraries/armem/ltm/FileSystemLookupMemory.h>
+#include <RobotAPI/libraries/armem/core/io/FileSystemLookupMemory.h>
 
 
 
@@ -61,6 +61,7 @@ namespace armarx::armem
             public:
                 DiskReader(bool createFolder);
                 DiskReader(const std::string&, bool createFolder);
+                virtual ~DiskReader();
 
                 FileSystemLookupMemoryManager readMemoryStructureFromDisk();
                 FileSystemLookupMemoryManager readMemoryStructureFromDisk(const std::string&);
diff --git a/source/RobotAPI/libraries/armem/ltm/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.cpp b/source/RobotAPI/libraries/armem/core/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.cpp
similarity index 100%
rename from source/RobotAPI/libraries/armem/ltm/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.cpp
rename to source/RobotAPI/libraries/armem/core/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.cpp
diff --git a/source/RobotAPI/libraries/armem/ltm/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h b/source/RobotAPI/libraries/armem/core/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h
similarity index 97%
rename from source/RobotAPI/libraries/armem/ltm/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h
rename to source/RobotAPI/libraries/armem/core/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h
index d78539ae0e578a5e481aa8531a20b190bf47f661..1bb0cd1066f142b4ec328c3305bea7e00670cd70 100644
--- a/source/RobotAPI/libraries/armem/ltm/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h
+++ b/source/RobotAPI/libraries/armem/core/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h
@@ -25,7 +25,7 @@
 #include <string>
 
 // Base Class
-#include <RobotAPI/libraries/armem/ltm/io/DiskReader/DiskReader.h>
+#include <RobotAPI/libraries/armem/core/io/DiskReader/DiskReader.h>
 
 // ArmarX
 #include <RobotAPI/libraries/aron/aroncore/io/AronDataIO/classReaders/NlohmannJSONReader/AronDataNlohmannJSONReader.h>
diff --git a/source/RobotAPI/libraries/armem/ltm/io/DiskReaderWriter.h b/source/RobotAPI/libraries/armem/core/io/DiskReaderWriter.h
similarity index 94%
rename from source/RobotAPI/libraries/armem/ltm/io/DiskReaderWriter.h
rename to source/RobotAPI/libraries/armem/core/io/DiskReaderWriter.h
index 497d4374c258b7794322f6aaa9bf13bad31d1871..56dc4afaf490d4cc0f058bf60be9aee86a67c428 100644
--- a/source/RobotAPI/libraries/armem/ltm/io/DiskReaderWriter.h
+++ b/source/RobotAPI/libraries/armem/core/io/DiskReaderWriter.h
@@ -31,10 +31,10 @@
 // ArmarX
 #include <RobotAPI/interface/aron.h>
 
-#include <RobotAPI/libraries/armem/error.h>
-#include <RobotAPI/libraries/armem/memory/Memory.h>
-#include <RobotAPI/libraries/armem/memory/CoreSegment.h>
-#include <RobotAPI/libraries/armem/memory/Entity.h>
+#include <RobotAPI/libraries/armem/core/error.h>
+#include <RobotAPI/libraries/armem/core/Memory.h>
+#include <RobotAPI/libraries/armem/core/CoreSegment.h>
+#include <RobotAPI/libraries/armem/core/Entity.h>
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/DiskWriter.cpp b/source/RobotAPI/libraries/armem/core/io/DiskWriter/DiskWriter.cpp
similarity index 100%
rename from source/RobotAPI/libraries/armem/ltm/io/DiskWriter/DiskWriter.cpp
rename to source/RobotAPI/libraries/armem/core/io/DiskWriter/DiskWriter.cpp
diff --git a/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/DiskWriter.h b/source/RobotAPI/libraries/armem/core/io/DiskWriter/DiskWriter.h
similarity index 94%
rename from source/RobotAPI/libraries/armem/ltm/io/DiskWriter/DiskWriter.h
rename to source/RobotAPI/libraries/armem/core/io/DiskWriter/DiskWriter.h
index acb38e1f89d09b0238d112b26a2f8988aaa9dbfd..4b02e861547b1c15435d754e83f917e7ef3945f5 100644
--- a/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/DiskWriter.h
+++ b/source/RobotAPI/libraries/armem/core/io/DiskWriter/DiskWriter.h
@@ -28,9 +28,6 @@
 #include <iostream>
 #include <filesystem>
 
-// BaseClass
-#include <RobotAPI/libraries/armem/ltm/io/DiskReaderWriter.h>
-
 // ArmarX
 #include <RobotAPI/interface/aron.h>
 #include <RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronAllDataNavigators.h>
@@ -41,11 +38,14 @@
 #include <RobotAPI/libraries/aron/aroncore/io/AronTypeIO/LegacyAronTypeWriter/LegacyAronTypeWriter.h>
 #include <RobotAPI/libraries/aron/aroncore/io/AronTypeIO/AronTypeWriter.h>
 
-#include <RobotAPI/libraries/armem/ltm/FileSystemLookupMemory.h>
 
-#include <RobotAPI/libraries/armem/memory/Memory.h>
-#include <RobotAPI/libraries/armem/memory/CoreSegment.h>
-#include <RobotAPI/libraries/armem/memory/Entity.h>
+// BaseClass
+#include "../DiskReaderWriter.h"
+#include "../FileSystemLookupMemory.h"
+
+#include <RobotAPI/libraries/armem/core/Memory.h>
+#include <RobotAPI/libraries/armem/core/CoreSegment.h>
+#include <RobotAPI/libraries/armem/core/Entity.h>
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.cpp b/source/RobotAPI/libraries/armem/core/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.cpp
similarity index 100%
rename from source/RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.cpp
rename to source/RobotAPI/libraries/armem/core/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.cpp
diff --git a/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h b/source/RobotAPI/libraries/armem/core/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h
similarity index 97%
rename from source/RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h
rename to source/RobotAPI/libraries/armem/core/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h
index 95b83bd8a2d01004def2db3f80ef686ff4797344..d4e4e57fe6c65625c02c290acbf8feaab4131d4d 100644
--- a/source/RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h
+++ b/source/RobotAPI/libraries/armem/core/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h
@@ -24,13 +24,13 @@
 #include <memory>
 #include <string>
 
-// Base Class
-#include <RobotAPI/libraries/armem/ltm/io/DiskWriter/DiskWriter.h>
-
 // ArmarX
 #include <RobotAPI/libraries/aron/aroncore/io/AronDataIO/classWriters/NlohmannJSONWriter/AronDataNlohmannJSONWriter.h>
 #include <RobotAPI/libraries/aron/aroncore/io/AronTypeIO/classWriters/NlohmannJSONWriter/AronTypeNlohmannJSONWriter.h>
 
+// Base Class
+#include "../DiskWriter.h"
+
 
 namespace armarx::armem
 {
diff --git a/source/RobotAPI/libraries/armem/ltm/FileSystemLookupMemory.h b/source/RobotAPI/libraries/armem/core/io/FileSystemLookupMemory.h
similarity index 98%
rename from source/RobotAPI/libraries/armem/ltm/FileSystemLookupMemory.h
rename to source/RobotAPI/libraries/armem/core/io/FileSystemLookupMemory.h
index 1267af6618751911cdb550357f0c293f681d78ad..7e20fdf08be1baa46bae0a1ca6b617ba5ee91a2d 100644
--- a/source/RobotAPI/libraries/armem/ltm/FileSystemLookupMemory.h
+++ b/source/RobotAPI/libraries/armem/core/io/FileSystemLookupMemory.h
@@ -26,7 +26,7 @@
 #include <filesystem>
 
 // ArmarX
-#include <RobotAPI/libraries/armem/memory/Memory.h>
+#include <RobotAPI/libraries/armem/core/Memory.h>
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/ltm/MemoryFileSystemStorage.cpp b/source/RobotAPI/libraries/armem/core/io/MemoryFileSystemStorage.cpp
similarity index 100%
rename from source/RobotAPI/libraries/armem/ltm/MemoryFileSystemStorage.cpp
rename to source/RobotAPI/libraries/armem/core/io/MemoryFileSystemStorage.cpp
diff --git a/source/RobotAPI/libraries/armem/ltm/MemoryFileSystemStorage.h b/source/RobotAPI/libraries/armem/core/io/MemoryFileSystemStorage.h
similarity index 72%
rename from source/RobotAPI/libraries/armem/ltm/MemoryFileSystemStorage.h
rename to source/RobotAPI/libraries/armem/core/io/MemoryFileSystemStorage.h
index 499fed293d81856db92cdac4f1d9caf10c2f80ea..8ba3480ac0dd8e5c70940b3a0bb04a1e625ee577 100644
--- a/source/RobotAPI/libraries/armem/ltm/MemoryFileSystemStorage.h
+++ b/source/RobotAPI/libraries/armem/core/io/MemoryFileSystemStorage.h
@@ -26,11 +26,13 @@
 
 // ArmarX
 #include <RobotAPI/interface/aron.h>
-#include <RobotAPI/libraries/armem/ltm/io/DiskWriter/DiskWriter.h>
-#include <RobotAPI/libraries/armem/ltm/io/DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h>
 
-#include <RobotAPI/libraries/armem/ltm/io/DiskReader/DiskReader.h>
-#include <RobotAPI/libraries/armem/ltm/io/DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h>
+#include "../Memory.h"
+
+#include "DiskWriter/DiskWriter.h"
+#include "DiskWriter/NlohmannJSONDiskWriter/NlohmannJSONDiskWriter.h"
+#include "DiskReader/DiskReader.h"
+#include "DiskReader/NlohmannJSONDiskReader/NlohmannJSONDiskReader.h"
 
 
 namespace armarx::armem
@@ -51,8 +53,19 @@ namespace armarx::armem
             void writeOnDisk(const MemoryID&, const CoreSegment&);
             void writeOnDisk(const MemoryID&, const ProviderSegment&);
             void writeOnDisk(const MemoryID&, const Entity&);
+            // void writeOnDisk(const MemoryID&, const Entity&, aron::typenavigator::AronObjectTypeNavigatorPtr = nullptr);
             void writeOnDisk(const MemoryID&, const EntitySnapshot&);
 
+            Memory readMemoryFromDisk();
+            CoreSegment readCoreSegmentFromDisk();
+            ProviderSegment readFromDisk();
+            Entity readEntityFromDisk();
+            EntitySnapshot readEntitySnapshotFromDisk();
+
+            std::pair<Entity, aron::typenavigator::AronObjectTypeNavigatorPtr> readTypedEntityFromDisk();
+            std::pair<EntitySnapshot, aron::typenavigator::AronObjectTypeNavigatorPtr> readTypedEntitySnapshotFromDisk();
+
+
             void updateInternalMemoryFromFileSystem();
             EntityPtr getEntityFromFileSystem(const MemoryID&);
 
diff --git a/source/RobotAPI/libraries/armem/memory/ice_conversions.cpp b/source/RobotAPI/libraries/armem/memory/ice_conversions.cpp
deleted file mode 100644
index 9019aac9e44f1ee19b80aef1c64aab93fc1c52c5..0000000000000000000000000000000000000000
--- a/source/RobotAPI/libraries/armem/memory/ice_conversions.cpp
+++ /dev/null
@@ -1,160 +0,0 @@
-#include "ice_conversions.h"
-
-
-namespace armarx
-{
-
-    void armem::fromIce(const data::Commit& ice, InternalCommit& commit, Time timeArrived)
-    {
-        commit.updates.clear();
-        for (const auto& ice_update : ice.updates)
-        {
-            InternalEntityUpdate& update = commit.updates.emplace_back(InternalEntityUpdate());
-            fromIce(ice_update, update, timeArrived);
-        }
-    }
-
-
-    void armem::fromIce(const data::EntityUpdate& ice, InternalEntityUpdate& update, Time timeArrived)
-    {
-        armem::fromIce(ice, update);
-        update.timeArrived = timeArrived;
-    }
-
-
-    void armem::detail::toIceItem(data::detail::MemoryItem& ice, const MemoryItem& item)
-    {
-        toIce(ice.id, item.id());
-    }
-
-    void armem::detail::fromIceItem(const data::detail::MemoryItem& ice, MemoryItem& item)
-    {
-        fromIce(ice.id, item.id());
-    }
-
-
-    void armem::toIce(data::EntityInstanceMetadata& ice, const EntityInstanceMetadata& metadata)
-    {
-        ice.confidence = metadata.confidence;
-        toIce(ice.timeArrivedMicroSeconds, metadata.timeArrived);
-        toIce(ice.timeCreatedMicroSeconds, metadata.timeCreated);
-        toIce(ice.timeSentMicroSeconds, metadata.timeSent);
-    }
-    void armem::fromIce(const data::EntityInstanceMetadata& ice, EntityInstanceMetadata& metadata)
-    {
-        metadata.confidence = ice.confidence;
-        fromIce(ice.timeArrivedMicroSeconds, metadata.timeArrived);
-        fromIce(ice.timeCreatedMicroSeconds, metadata.timeCreated);
-        fromIce(ice.timeSentMicroSeconds, metadata.timeSent);
-    }
-
-    void armem::toIce(data::EntityInstance& ice, const EntityInstance& data)
-    {
-        detail::toIceItem(ice, data);
-
-        if (data.data())
-        {
-            ice.data = data.data()->toAronDictPtr();
-        }
-        toIce(ice.metadata, data.metadata());
-    }
-    void armem::fromIce(const data::EntityInstance& ice, EntityInstance& data)
-    {
-        detail::fromIceItem(ice, data);
-
-        if (ice.data)
-        {
-            data.setData(aron::datanavigator::AronDictDataNavigator::FromAronDictPtr(ice.data));
-        }
-        fromIce(ice.metadata, data.metadata());
-    }
-
-
-    void armem::toIce(data::EntitySnapshot& ice, const EntitySnapshot& snapshot)
-    {
-        detail::toIceItem(ice, snapshot);
-
-        toIce(ice.instances, snapshot.instances);
-    }
-    void armem::fromIce(const data::EntitySnapshot& ice, EntitySnapshot& snapshot)
-    {
-        detail::fromIceItem(ice, snapshot);
-
-        fromIce(ice.instances, snapshot.instances);
-    }
-
-    void armem::toIce(data::Entity& ice, const Entity& entity)
-    {
-        detail::toIceItem(ice, entity);
-
-        toIce(ice.history, entity.history);
-    }
-    void armem::fromIce(const data::Entity& ice, Entity& entity)
-    {
-        detail::fromIceItem(ice, entity);
-
-        fromIce(ice.history, entity.history);
-    }
-
-
-    void armem::toIce(data::ProviderSegment& ice, const ProviderSegment& providerSegment)
-    {
-        detail::toIceItem(ice, providerSegment);
-
-        if (providerSegment.hasAronType())
-        {
-            ice.aronType = providerSegment.aronType()->getResult();
-        }
-        toIce(ice.entities, providerSegment.entities);
-    }
-    void armem::fromIce(const data::ProviderSegment& ice, ProviderSegment& providerSegment)
-    {
-        detail::fromIceItem(ice, providerSegment);
-
-        if (ice.aronType)
-        {
-            providerSegment.aronType() = aron::typenavigator::AronObjectTypeNavigator::DynamicCastAndCheck(
-                                             aron::typenavigator::AronTypeNavigator::FromAronType(ice.aronType)
-                                         );
-        }
-        fromIce(ice.entities, providerSegment.entities);
-    }
-
-    void armem::toIce(data::CoreSegment& ice, const CoreSegment& coreSegment)
-    {
-        detail::toIceItem(ice, coreSegment);
-
-        if (coreSegment.hasAronType())
-        {
-            ice.aronType = coreSegment.aronType()->getResult();
-        }
-        toIce(ice.providerSegments, coreSegment.providerSegments);
-    }
-    void armem::fromIce(const data::CoreSegment& ice, CoreSegment& coreSegment)
-    {
-        detail::fromIceItem(ice, coreSegment);
-
-        if (ice.aronType)
-        {
-            coreSegment.aronType() = aron::typenavigator::AronObjectTypeNavigator::DynamicCastAndCheck(
-                                         aron::typenavigator::AronTypeNavigator::FromAronType(ice.aronType)
-                                     );
-        }
-        fromIce(ice.providerSegments, coreSegment.providerSegments);
-    }
-
-    void armem::toIce(data::Memory& ice, const Memory& memory)
-    {
-        detail::toIceItem(ice, memory);
-
-        toIce(ice.coreSegments, memory.coreSegments);
-    }
-    void armem::fromIce(const data::Memory& ice, Memory& memory)
-    {
-        detail::fromIceItem(ice, memory);
-
-        fromIce(ice.coreSegments, memory.coreSegments);
-    }
-
-}
-
diff --git a/source/RobotAPI/libraries/armem/memory/ice_conversions.h b/source/RobotAPI/libraries/armem/memory/ice_conversions.h
deleted file mode 100644
index afca2cd4bf35f1826bc3c93d0fd73a9a8306f51c..0000000000000000000000000000000000000000
--- a/source/RobotAPI/libraries/armem/memory/ice_conversions.h
+++ /dev/null
@@ -1,48 +0,0 @@
-#pragma once
-
-#include <RobotAPI/interface/armem/memory.h>
-
-#include "../core/ice_conversions.h"
-
-#include "InternalCommit.h"
-#include "Memory.h"
-
-
-namespace armarx::armem
-{
-
-    void fromIce(const data::Commit& ice, InternalCommit& commit, Time timeArrived);
-    void fromIce(const data::EntityUpdate& ice, InternalEntityUpdate& update, Time timeArrived);
-
-
-    void toIce(data::EntityInstanceMetadata& ice, const EntityInstanceMetadata& metadata);
-    void fromIce(const data::EntityInstanceMetadata& ice, EntityInstanceMetadata& metadata);
-
-    void toIce(data::EntityInstance& ice, const EntityInstance& data);
-    void fromIce(const data::EntityInstance& ice, EntityInstance& data);
-
-
-    void toIce(data::EntitySnapshot& ice, const EntitySnapshot& snapshot);
-    void fromIce(const data::EntitySnapshot& ice, EntitySnapshot& snapshot);
-
-    void toIce(data::Entity& ice, const Entity& entity);
-    void fromIce(const data::Entity& ice, Entity& entity);
-
-
-    void toIce(data::ProviderSegment& ice, const ProviderSegment& providerSegment);
-    void fromIce(const data::ProviderSegment& ice, ProviderSegment& providerSegment);
-
-    void toIce(data::CoreSegment& ice, const CoreSegment& coreSegment);
-    void fromIce(const data::CoreSegment& ice, CoreSegment& coreSegment);
-
-    void toIce(data::Memory& ice, const Memory& memory);
-    void fromIce(const data::Memory& ice, Memory& memory);
-
-
-    namespace detail
-    {
-        void toIceItem(data::detail::MemoryItem& ice, const MemoryItem& item);
-        void fromIceItem(const data::detail::MemoryItem& ice, MemoryItem& item);
-    }
-
-}
diff --git a/source/RobotAPI/libraries/armem/component/MemoryComponentPlugin.cpp b/source/RobotAPI/libraries/armem/server/MemoryComponentPlugin.cpp
similarity index 100%
rename from source/RobotAPI/libraries/armem/component/MemoryComponentPlugin.cpp
rename to source/RobotAPI/libraries/armem/server/MemoryComponentPlugin.cpp
diff --git a/source/RobotAPI/libraries/armem/component/MemoryComponentPlugin.h b/source/RobotAPI/libraries/armem/server/MemoryComponentPlugin.h
similarity index 98%
rename from source/RobotAPI/libraries/armem/component/MemoryComponentPlugin.h
rename to source/RobotAPI/libraries/armem/server/MemoryComponentPlugin.h
index 82aaf5bc8b485463005000492d665feb92134307..0c690f8d81348da8c10d10a9e7011d958f026cb3 100644
--- a/source/RobotAPI/libraries/armem/component/MemoryComponentPlugin.h
+++ b/source/RobotAPI/libraries/armem/server/MemoryComponentPlugin.h
@@ -8,7 +8,7 @@
 #include <RobotAPI/interface/armem/MemoryListenerInterface.h>
 #include <RobotAPI/interface/armem/MemoryNameSystemInterface.h>
 
-#include "../memory/Memory.h"
+#include "../core/Memory.h"
 #include "../mns/MemoryNameSystemClientPlugin.h"
 #include "MemoryToIceAdapter.h"
 
diff --git a/source/RobotAPI/libraries/armem/component/MemoryRemoteGui.cpp b/source/RobotAPI/libraries/armem/server/MemoryRemoteGui.cpp
similarity index 100%
rename from source/RobotAPI/libraries/armem/component/MemoryRemoteGui.cpp
rename to source/RobotAPI/libraries/armem/server/MemoryRemoteGui.cpp
diff --git a/source/RobotAPI/libraries/armem/component/MemoryRemoteGui.h b/source/RobotAPI/libraries/armem/server/MemoryRemoteGui.h
similarity index 97%
rename from source/RobotAPI/libraries/armem/component/MemoryRemoteGui.h
rename to source/RobotAPI/libraries/armem/server/MemoryRemoteGui.h
index 29ccf253b3bde8f793b9c67604c1c85613aa5994..a53288e90ab740be277b27f580d81007ce03d32d 100644
--- a/source/RobotAPI/libraries/armem/component/MemoryRemoteGui.h
+++ b/source/RobotAPI/libraries/armem/server/MemoryRemoteGui.h
@@ -2,7 +2,7 @@
 
 #include <ArmarXGui/libraries/RemoteGui/Client/Widgets.h>
 
-#include "../memory/Memory.h"
+#include "../core/Memory.h"
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/component/MemoryToIceAdapter.cpp b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
similarity index 98%
rename from source/RobotAPI/libraries/armem/component/MemoryToIceAdapter.cpp
rename to source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
index 7bee07e7b0f9d1a5f6c686542c70f82df31493fc..b734b1cdd706b4835f4a961e64255473fda6b923 100644
--- a/source/RobotAPI/libraries/armem/component/MemoryToIceAdapter.cpp
+++ b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
@@ -3,8 +3,8 @@
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
 #include "../error.h"
-#include "../memory/ice_conversions.h"
-#include "../query/MemoryQueryProcessor.h"
+#include "../core/ice_conversions.h"
+#include "query/MemoryQueryProcessor.h"
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/component/MemoryToIceAdapter.h b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.h
similarity index 97%
rename from source/RobotAPI/libraries/armem/component/MemoryToIceAdapter.h
rename to source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.h
index fbd41bd4a39b46cbc5ee5ea5df22814e29412f88..659728cd017d36be547e6664cb43cf5d6b201b8a 100644
--- a/source/RobotAPI/libraries/armem/component/MemoryToIceAdapter.h
+++ b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.h
@@ -3,7 +3,7 @@
 #include <RobotAPI/interface/armem/MemoryInterface.h>
 #include <RobotAPI/interface/armem/MemoryListenerInterface.h>
 
-#include "../memory/Memory.h"
+#include "../core/Memory.h"
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/component/RemoteGuiAronDataVisitor.cpp b/source/RobotAPI/libraries/armem/server/RemoteGuiAronDataVisitor.cpp
similarity index 100%
rename from source/RobotAPI/libraries/armem/component/RemoteGuiAronDataVisitor.cpp
rename to source/RobotAPI/libraries/armem/server/RemoteGuiAronDataVisitor.cpp
diff --git a/source/RobotAPI/libraries/armem/component/RemoteGuiAronDataVisitor.h b/source/RobotAPI/libraries/armem/server/RemoteGuiAronDataVisitor.h
similarity index 100%
rename from source/RobotAPI/libraries/armem/component/RemoteGuiAronDataVisitor.h
rename to source/RobotAPI/libraries/armem/server/RemoteGuiAronDataVisitor.h
diff --git a/source/RobotAPI/libraries/armem/query.h b/source/RobotAPI/libraries/armem/server/query.h
similarity index 100%
rename from source/RobotAPI/libraries/armem/query.h
rename to source/RobotAPI/libraries/armem/server/query.h
diff --git a/source/RobotAPI/libraries/armem/query/BaseQueryProcessor.cpp b/source/RobotAPI/libraries/armem/server/query/BaseQueryProcessor.cpp
similarity index 61%
rename from source/RobotAPI/libraries/armem/query/BaseQueryProcessor.cpp
rename to source/RobotAPI/libraries/armem/server/query/BaseQueryProcessor.cpp
index aa818cca129e6114a54bb5fc5ec9496f53af4920..c1ac5e2122a16ede54d42eeb709c746fbaa2f1fd 100644
--- a/source/RobotAPI/libraries/armem/query/BaseQueryProcessor.cpp
+++ b/source/RobotAPI/libraries/armem/server/query/BaseQueryProcessor.cpp
@@ -3,9 +3,8 @@
 #include <ArmarXCore/core/logging/Logging.h>
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
-#include "../error/ArMemError.h"
-
-#include "../core/ice_conversions.h"
+#include <RobotAPI/libraries/armem/core/error.h>
+#include <RobotAPI/libraries/armem/core/ice_conversions.h>
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/query/BaseQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query/BaseQueryProcessor.h
similarity index 93%
rename from source/RobotAPI/libraries/armem/query/BaseQueryProcessor.h
rename to source/RobotAPI/libraries/armem/server/query/BaseQueryProcessor.h
index ce57d99d6466368d39cdbc52057b746893be28e2..c95ae5c30fdbd92af5e8b2bea07127cd1aff65ae 100644
--- a/source/RobotAPI/libraries/armem/query/BaseQueryProcessor.h
+++ b/source/RobotAPI/libraries/armem/server/query/BaseQueryProcessor.h
@@ -2,8 +2,8 @@
 
 #include <RobotAPI/interface/armem/query.h>
 
-#include "../core/DataMode.h"
-#include "../memory/Memory.h"
+#include <RobotAPI/libraries/armem/core/DataMode.h>
+#include <RobotAPI/libraries/armem/core/Memory.h>
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/query/CoreSegmentQueryProcessor.cpp b/source/RobotAPI/libraries/armem/server/query/CoreSegmentQueryProcessor.cpp
similarity index 96%
rename from source/RobotAPI/libraries/armem/query/CoreSegmentQueryProcessor.cpp
rename to source/RobotAPI/libraries/armem/server/query/CoreSegmentQueryProcessor.cpp
index 4d3ade1d4f66ffb3091ac826cbb1f634e54c2414..e061c49c9a2c9a3e309f608821e6cd11bcf69480 100644
--- a/source/RobotAPI/libraries/armem/query/CoreSegmentQueryProcessor.cpp
+++ b/source/RobotAPI/libraries/armem/server/query/CoreSegmentQueryProcessor.cpp
@@ -5,9 +5,8 @@
 #include <ArmarXCore/core/logging/Logging.h>
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
-#include "../error/ArMemError.h"
-
-#include "../core/ice_conversions.h"
+#include <RobotAPI/libraries/armem/core/ice_conversions.h>
+#include <RobotAPI/libraries/armem/core/error.h>
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/query/CoreSegmentQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query/CoreSegmentQueryProcessor.h
similarity index 94%
rename from source/RobotAPI/libraries/armem/query/CoreSegmentQueryProcessor.h
rename to source/RobotAPI/libraries/armem/server/query/CoreSegmentQueryProcessor.h
index 497d4ab3e64e17d74943882a1284bd8ed74c51e5..ea5b5d269f291dd7cf8b426b56bcba0fdf644eb0 100644
--- a/source/RobotAPI/libraries/armem/query/CoreSegmentQueryProcessor.h
+++ b/source/RobotAPI/libraries/armem/server/query/CoreSegmentQueryProcessor.h
@@ -2,8 +2,7 @@
 
 #include <RobotAPI/interface/armem/query.h>
 
-#include "../memory/Memory.h"
-#include "../memory/ice_conversions.h"
+#include <RobotAPI/libraries/armem/core/Memory.h>
 
 #include "BaseQueryProcessor.h"
 #include "ProviderSegmentQueryProcessor.h"
diff --git a/source/RobotAPI/libraries/armem/query/EntityQueryProcessor.cpp b/source/RobotAPI/libraries/armem/server/query/EntityQueryProcessor.cpp
similarity index 97%
rename from source/RobotAPI/libraries/armem/query/EntityQueryProcessor.cpp
rename to source/RobotAPI/libraries/armem/server/query/EntityQueryProcessor.cpp
index dbd24a1e7ba03fc8dd8971f2d0a82f4703c20fe8..1c3b3be1b4159085a6f15063d43c4df3f43491d0 100644
--- a/source/RobotAPI/libraries/armem/query/EntityQueryProcessor.cpp
+++ b/source/RobotAPI/libraries/armem/server/query/EntityQueryProcessor.cpp
@@ -3,9 +3,8 @@
 #include <ArmarXCore/core/logging/Logging.h>
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
-#include "../error/ArMemError.h"
-
-#include "../core/ice_conversions.h"
+#include <RobotAPI/libraries/armem/core/error.h>
+#include <RobotAPI/libraries/armem/core/ice_conversions.h>
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/query/EntityQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query/EntityQueryProcessor.h
similarity index 95%
rename from source/RobotAPI/libraries/armem/query/EntityQueryProcessor.h
rename to source/RobotAPI/libraries/armem/server/query/EntityQueryProcessor.h
index d2ce45d75ba7bcdfe5aee9fabdf5590afa8694ed..c0c37535ed86dc8eae683814e8904e8be9dd26be 100644
--- a/source/RobotAPI/libraries/armem/query/EntityQueryProcessor.h
+++ b/source/RobotAPI/libraries/armem/server/query/EntityQueryProcessor.h
@@ -2,8 +2,7 @@
 
 #include <RobotAPI/interface/armem/query.h>
 
-#include "../memory/Memory.h"
-#include "../memory/ice_conversions.h"
+#include <RobotAPI/libraries/armem/core/Memory.h>
 
 #include "BaseQueryProcessor.h"
 
diff --git a/source/RobotAPI/libraries/armem/query/MemoryQueryProcessor.cpp b/source/RobotAPI/libraries/armem/server/query/MemoryQueryProcessor.cpp
similarity index 96%
rename from source/RobotAPI/libraries/armem/query/MemoryQueryProcessor.cpp
rename to source/RobotAPI/libraries/armem/server/query/MemoryQueryProcessor.cpp
index ffca8a938c370909c9d652c2b15742756ab73fd4..924fa3277119cb0b4da04e19b7b769c9fab21b7f 100644
--- a/source/RobotAPI/libraries/armem/query/MemoryQueryProcessor.cpp
+++ b/source/RobotAPI/libraries/armem/server/query/MemoryQueryProcessor.cpp
@@ -5,9 +5,8 @@
 #include <ArmarXCore/core/logging/Logging.h>
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
-#include "../error/ArMemError.h"
-
-#include "../memory/ice_conversions.h"
+#include <RobotAPI/libraries/armem/core/error.h>
+#include <RobotAPI/libraries/armem/core/ice_conversions.h>
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/query/MemoryQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query/MemoryQueryProcessor.h
similarity index 95%
rename from source/RobotAPI/libraries/armem/query/MemoryQueryProcessor.h
rename to source/RobotAPI/libraries/armem/server/query/MemoryQueryProcessor.h
index 024477726dcf1f67b111df0c6cb49def33474d06..329f32560c95435c4db6d12f9aa42d71dbf8a02d 100644
--- a/source/RobotAPI/libraries/armem/query/MemoryQueryProcessor.h
+++ b/source/RobotAPI/libraries/armem/server/query/MemoryQueryProcessor.h
@@ -2,8 +2,7 @@
 
 #include <RobotAPI/interface/armem/query.h>
 
-#include "../memory/Memory.h"
-#include "../memory/ice_conversions.h"
+#include <RobotAPI/libraries/armem/core/Memory.h>
 
 #include "BaseQueryProcessor.h"
 #include "CoreSegmentQueryProcessor.h"
diff --git a/source/RobotAPI/libraries/armem/query/ProviderSegmentQueryProcessor.cpp b/source/RobotAPI/libraries/armem/server/query/ProviderSegmentQueryProcessor.cpp
similarity index 96%
rename from source/RobotAPI/libraries/armem/query/ProviderSegmentQueryProcessor.cpp
rename to source/RobotAPI/libraries/armem/server/query/ProviderSegmentQueryProcessor.cpp
index 3b454c69e1425c45d10ac96b2b99e82ce3c057d9..7111d2881468f563b7e9a3bcc802e6e5a51e65cd 100644
--- a/source/RobotAPI/libraries/armem/query/ProviderSegmentQueryProcessor.cpp
+++ b/source/RobotAPI/libraries/armem/server/query/ProviderSegmentQueryProcessor.cpp
@@ -5,9 +5,8 @@
 #include <ArmarXCore/core/logging/Logging.h>
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
-#include "../error/ArMemError.h"
-
-#include "../core/ice_conversions.h"
+#include <RobotAPI/libraries/armem/core/error.h>
+#include <RobotAPI/libraries/armem/core/ice_conversions.h>
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem/query/ProviderSegmentQueryProcessor.h b/source/RobotAPI/libraries/armem/server/query/ProviderSegmentQueryProcessor.h
similarity index 95%
rename from source/RobotAPI/libraries/armem/query/ProviderSegmentQueryProcessor.h
rename to source/RobotAPI/libraries/armem/server/query/ProviderSegmentQueryProcessor.h
index f7afb233b5b15d93bd1cab3e9b6aacf8e87721fa..b15e553c13337acd0d2901c9d1ec468ebb61b5cc 100644
--- a/source/RobotAPI/libraries/armem/query/ProviderSegmentQueryProcessor.h
+++ b/source/RobotAPI/libraries/armem/server/query/ProviderSegmentQueryProcessor.h
@@ -2,8 +2,7 @@
 
 #include <RobotAPI/interface/armem/query.h>
 
-#include "../memory/Memory.h"
-#include "../memory/ice_conversions.h"
+#include <RobotAPI/libraries/armem/core/Memory.h>
 
 #include "BaseQueryProcessor.h"
 #include "EntityQueryProcessor.h"
diff --git a/source/RobotAPI/libraries/armem/test/ArMemIceConversionsTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemIceConversionsTest.cpp
index fdfe791f68ca106d39107da29f2cc3119497b1de..6b5b22d46fb68fbb950ff4d95c5e15dc158731cb 100644
--- a/source/RobotAPI/libraries/armem/test/ArMemIceConversionsTest.cpp
+++ b/source/RobotAPI/libraries/armem/test/ArMemIceConversionsTest.cpp
@@ -25,7 +25,7 @@
 #define ARMARX_BOOST_TEST
 
 #include <RobotAPI/Test.h>
-#include "../memory/ice_conversions.h"
+#include "../core/ice_conversions.h"
 
 #include <iostream>
 #include <SimoxUtility/algorithm/get_map_keys_values.h>
diff --git a/source/RobotAPI/libraries/armem/test/ArMemLTMTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemLTMTest.cpp
index f0e380172e36313ff883a1b05e3fcc080cb8a2a4..c6b5e568e514b9dc478b1308f391031bb2370415 100644
--- a/source/RobotAPI/libraries/armem/test/ArMemLTMTest.cpp
+++ b/source/RobotAPI/libraries/armem/test/ArMemLTMTest.cpp
@@ -25,12 +25,12 @@
 #define ARMARX_BOOST_TEST
 
 #include <RobotAPI/Test.h>
-#include "../memory/Memory.h"
-#include "../error/ArMemError.h"
+#include "../core/Memory.h"
+#include "../core/error.h"
 
 #include <RobotAPI/libraries/aron/aroncore/navigators/datanavigator/AronAllDataNavigators.h>
 #include <RobotAPI/libraries/aron/aroncore/navigators/typenavigator/AronAllTypeNavigators.h>
-#include <RobotAPI/libraries/armem/ltm/MemoryFileSystemStorage.h>
+#include <RobotAPI/libraries/armem/core/io/MemoryFileSystemStorage.h>
 #include <RobotAPI/libraries/aron/aroncore/AronRandomizer.h>
 
 #include <iostream>
diff --git a/source/RobotAPI/libraries/armem/test/ArMemMemoryTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemMemoryTest.cpp
index f92646cedd9dea94a056a430efdef9c4fac2290d..8e7836c7ca63bf0c839e79201fd774778fb027b1 100644
--- a/source/RobotAPI/libraries/armem/test/ArMemMemoryTest.cpp
+++ b/source/RobotAPI/libraries/armem/test/ArMemMemoryTest.cpp
@@ -26,8 +26,8 @@
 
 #include <RobotAPI/Test.h>
 
-#include "../memory/Memory.h"
-#include "../error/ArMemError.h"
+#include "../core/Memory.h"
+#include "../core/error.h"
 
 
 #include <iostream>
diff --git a/source/RobotAPI/libraries/armem/test/ArMemQueryBuilderTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemQueryBuilderTest.cpp
index 74eeff976eade4fcb747582a7b92fb4fe8acb8f6..9a9847d4d54462391dc2775e5de34f1bd935a56a 100644
--- a/source/RobotAPI/libraries/armem/test/ArMemQueryBuilderTest.cpp
+++ b/source/RobotAPI/libraries/armem/test/ArMemQueryBuilderTest.cpp
@@ -25,7 +25,7 @@
 #define ARMARX_BOOST_TEST
 
 #include <RobotAPI/Test.h>
-#include "../client/QueryBuilder.h"
+#include "../client/query/Builder.h"
 #include "../client/query/query_fns.h"
 #include "../core/ice_conversions.h"
 
@@ -56,7 +56,7 @@ BOOST_FIXTURE_TEST_SUITE(ArMemQueryBuilderTest, ArMemQueryBuilderTest::Fixture)
 
 BOOST_AUTO_TEST_CASE(test_all_all)
 {
-    armem::client::QueryBuilder qb;
+    armem::client::query::Builder qb;
     qb
     .coreSegments().all()
     .providerSegments().all()
@@ -89,7 +89,7 @@ BOOST_AUTO_TEST_CASE(test_mixed)
 
     std::vector<std::string> entityNames = {"one", "two"};
 
-    armem::client::QueryBuilder qb(armem::DataMode::WithData);
+    armem::client::query::Builder qb(armem::DataMode::WithData);
     qb
     .coreSegments(withName("core"))
     .providerSegments(withName("provider"))
@@ -168,7 +168,7 @@ BOOST_AUTO_TEST_CASE(test_mixed)
 
 BOOST_AUTO_TEST_CASE(test_branched_hierarchy)
 {
-    armem::client::QueryBuilder qb;
+    armem::client::query::Builder qb;
 
     // Common root tree
     armem::client::query::ProviderSegmentSelector& provider = qb
diff --git a/source/RobotAPI/libraries/armem/test/ArMemQueryTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemQueryTest.cpp
index a923ab3e676ea1ecb4dae600031db21c7bbe2ea4..5152c72af858abbd70cf67f8ed44fe4a74452c07 100644
--- a/source/RobotAPI/libraries/armem/test/ArMemQueryTest.cpp
+++ b/source/RobotAPI/libraries/armem/test/ArMemQueryTest.cpp
@@ -25,7 +25,7 @@
 #define ARMARX_BOOST_TEST
 
 #include <RobotAPI/Test.h>
-#include "../query/EntityQueryProcessor.h"
+#include "../server/query/EntityQueryProcessor.h"
 #include "../error.h"
 
 
diff --git a/source/RobotAPI/libraries/armem_gui/InstanceTreeWidget.h b/source/RobotAPI/libraries/armem_gui/InstanceTreeWidget.h
index adb4de498c008d1eeb5592c01b062fe1966aa740..842c3fe8a98cf337fb21bf997d746258cd5d8bcd 100644
--- a/source/RobotAPI/libraries/armem_gui/InstanceTreeWidget.h
+++ b/source/RobotAPI/libraries/armem_gui/InstanceTreeWidget.h
@@ -2,7 +2,7 @@
 
 #include <QTreeWidget>
 
-#include <RobotAPI/libraries/armem/memory/Memory.h>
+#include <RobotAPI/libraries/armem/core/Memory.h>
 
 class QLabel;
 
diff --git a/source/RobotAPI/libraries/armem_gui/MemoryTreeWidget.h b/source/RobotAPI/libraries/armem_gui/MemoryTreeWidget.h
index 0194b729aeecaf4bd2227fbefec7ade4ab5fb83d..010f327d70e0e137ba2b27b9fdf67ab807f85c3f 100644
--- a/source/RobotAPI/libraries/armem_gui/MemoryTreeWidget.h
+++ b/source/RobotAPI/libraries/armem_gui/MemoryTreeWidget.h
@@ -4,7 +4,7 @@
 
 #include <QObject>
 
-#include <RobotAPI/libraries/armem/memory/Memory.h>
+#include <RobotAPI/libraries/armem/core/Memory.h>
 #include <RobotAPI/libraries/armem_gui/TreeWidgetBuilder.h>
 
 
diff --git a/source/RobotAPI/libraries/armem_gui/query_widgets/QueryWidget.cpp b/source/RobotAPI/libraries/armem_gui/query_widgets/QueryWidget.cpp
index de985bfca7ad9e1eb9e45beb806dbbb2056c3a21..279af486a1039563a4e54da9cd613379cff3dbe0 100644
--- a/source/RobotAPI/libraries/armem_gui/query_widgets/QueryWidget.cpp
+++ b/source/RobotAPI/libraries/armem_gui/query_widgets/QueryWidget.cpp
@@ -44,7 +44,7 @@ namespace armarx::armem
 
     armem::client::QueryInput QueryWidget::queryInput()
     {
-        armem::client::QueryBuilder qb(dataMode());
+        armem::client::query::Builder qb(dataMode());
         qb
         .coreSegments().all()
         .providerSegments().all()
diff --git a/source/RobotAPI/libraries/armem_gui/query_widgets/QueryWidget.h b/source/RobotAPI/libraries/armem_gui/query_widgets/QueryWidget.h
index 084bf7ee9c4480bf75bbc01c1ef7c026906d9cd0..6abc252aecf927151cb9ecbcdea4eb9e6ed6ae02 100644
--- a/source/RobotAPI/libraries/armem_gui/query_widgets/QueryWidget.h
+++ b/source/RobotAPI/libraries/armem_gui/query_widgets/QueryWidget.h
@@ -4,7 +4,7 @@
 #include <QTabWidget>
 
 #include <RobotAPI/libraries/armem/core/DataMode.h>
-#include <RobotAPI/libraries/armem/client/QueryBuilder.h>
+#include <RobotAPI/libraries/armem/client/query/Builder.h>
 
 #include "SnapshotSelectorWidget.h"
 
diff --git a/source/RobotAPI/libraries/armem_gui/query_widgets/SnapshotForm.cpp b/source/RobotAPI/libraries/armem_gui/query_widgets/SnapshotForm.cpp
index d3c1f5c865fa0fc98d03ed5d4b4c9a031719f119..c278d7020b42e0fd8de079aa73770dff6baaad26 100644
--- a/source/RobotAPI/libraries/armem_gui/query_widgets/SnapshotForm.cpp
+++ b/source/RobotAPI/libraries/armem_gui/query_widgets/SnapshotForm.cpp
@@ -14,7 +14,7 @@
 
 #include <RobotAPI/libraries/armem/core/Time.h>
 #include <RobotAPI/libraries/armem/core/ice_conversions.h>
-#include <RobotAPI/libraries/armem/client/QueryBuilder.h>
+#include <RobotAPI/libraries/armem/client/query/Builder.h>
 
 
 namespace armarx::armem
diff --git a/source/RobotAPI/libraries/armem_gui/query_widgets/SnapshotForm.h b/source/RobotAPI/libraries/armem_gui/query_widgets/SnapshotForm.h
index ac13cc7750ac6f709ca2bdfe50bfab756e4c62eb..fad390a9b6970b545f8e8a1a0701915ae02d6216 100644
--- a/source/RobotAPI/libraries/armem_gui/query_widgets/SnapshotForm.h
+++ b/source/RobotAPI/libraries/armem_gui/query_widgets/SnapshotForm.h
@@ -2,7 +2,7 @@
 
 #include <QWidget>
 
-#include <RobotAPI/libraries/armem/client/QueryBuilder.h>
+#include <RobotAPI/libraries/armem/client/query/Builder.h>
 
 
 class QCheckBox;
diff --git a/source/RobotAPI/libraries/armem_gui/query_widgets/SnapshotSelectorWidget.h b/source/RobotAPI/libraries/armem_gui/query_widgets/SnapshotSelectorWidget.h
index e98ca2ff5e6eaf032571ade67fe24b7904da5e77..2ace0f18a4a8860d48b2fa42ca9478ad54a7663c 100644
--- a/source/RobotAPI/libraries/armem_gui/query_widgets/SnapshotSelectorWidget.h
+++ b/source/RobotAPI/libraries/armem_gui/query_widgets/SnapshotSelectorWidget.h
@@ -5,7 +5,7 @@
 #include <QWidget>
 
 #include <RobotAPI/libraries/armem/core/DataMode.h>
-#include <RobotAPI/libraries/armem/client/QueryBuilder.h>
+#include <RobotAPI/libraries/armem/client/query/Builder.h>
 
 #include "SnapshotForm.h"