diff --git a/source/RobotAPI/components/armem/server/ExampleMemory/test/ExampleMemoryTest.cpp b/source/RobotAPI/components/armem/server/ExampleMemory/test/ExampleMemoryTest.cpp
index bb1988874e0d7a57f8f6e0511e8137643ca9dfec..b269993f79bd5c5d39c590e1359cb5790fd9b4dc 100644
--- a/source/RobotAPI/components/armem/server/ExampleMemory/test/ExampleMemoryTest.cpp
+++ b/source/RobotAPI/components/armem/server/ExampleMemory/test/ExampleMemoryTest.cpp
@@ -36,14 +36,6 @@
 using armarx::armem::example::ExampleData;
 namespace armem = armarx::armem;
 
-/*
-BOOST_AUTO_TEST_CASE(test_ExampleData)
-{
-    ExampleData data;
-    BOOST_CHECK(true);
-}
-*/
-
 
 BOOST_AUTO_TEST_CASE(test_ExampleData_type)
 {
@@ -55,5 +47,5 @@ BOOST_AUTO_TEST_CASE(test_ExampleData_type)
     armem::wm::CoreSegment& core = memory.addCoreSegment("ExampleData", type);
     armem::wm::ProviderSegment& prov = core.addProviderSegment("Provider");
 
-    BOOST_CHECK_EQUAL(core.aronType, prov.aronType);
+    BOOST_CHECK_EQUAL(core.aronType(), prov.aronType());
 }
diff --git a/source/RobotAPI/libraries/armem/core/base/EntityInstanceBase.h b/source/RobotAPI/libraries/armem/core/base/EntityInstanceBase.h
index c8609ac6280dcab6edb4d5bba6a96b08741cb282..d385ee26bb9a17f73535d15b68822c17c5bfd278 100644
--- a/source/RobotAPI/libraries/armem/core/base/EntityInstanceBase.h
+++ b/source/RobotAPI/libraries/armem/core/base/EntityInstanceBase.h
@@ -19,12 +19,12 @@ namespace armarx::armem::base
 
     public:
 
-        EntityInstanceBase& operator=(const EntityInstanceBase& other)
         using DerivedT = _DerivedT;
 
 
     public:
 
+        EntityInstanceBase& operator=(const EntityInstanceBase& other)
         {
             //other._copySelf(*this);
             return *this;
diff --git a/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.cpp b/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.cpp
index 43831ad04c5faf634ab6699b17622e0be4014d37..28bcf696369fedfa9bd39ab9cce3f694033211d6 100644
--- a/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.cpp
+++ b/source/RobotAPI/libraries/armem/core/diskmemory/EntityInstance.cpp
@@ -18,7 +18,7 @@ namespace armarx::armem::d_ltm
     }
 
     EntityInstance::EntityInstance(const EntityInstance& other) :
-        base::detail::MemoryItem(other.id)
+        base::detail::MemoryItem(other.id())
     {
     }
 
@@ -40,7 +40,7 @@ namespace armarx::armem::d_ltm
 
     bool EntityInstance::equalsDeep(const EntityInstance& other) const
     {
-        return id == other.id;
+        return id() == other.id();
     }
 
     void EntityInstance::update(const EntityUpdate& update, int index)
@@ -73,7 +73,7 @@ namespace armarx::armem::d_ltm
 
     std::filesystem::path EntityInstance::_fullPath(const std::filesystem::path& path) const
     {
-        return path / id.memoryName / id.coreSegmentName / id.providerSegmentName / id.entityName / std::to_string(id.timestamp.toMicroSeconds()) / std::to_string(id.instanceIndex);
+        return path / id().memoryName / id().coreSegmentName / id().providerSegmentName / id().entityName / std::to_string(id().timestamp.toMicroSeconds()) / std::to_string(id().instanceIndex);
     }
 
     wm::EntityInstance EntityInstance::convert(const aron::typenavigator::NavigatorPtr& expectedStructure) const
@@ -143,7 +143,7 @@ namespace armarx::armem::d_ltm
 
     wm::EntityInstance EntityInstance::unwrapData(const aron::datanavigator::DictNavigatorPtr& dataWrapped) const
     {
-        wm::EntityInstance e(id);
+        wm::EntityInstance e(id());
         wm::EntityInstanceMetadata& metadata = e.metadata();
 
         if (dataWrapped->hasElement(DATA_WRAPPER_DATA_FIELD))
@@ -193,7 +193,7 @@ namespace armarx::armem::d_ltm
         dataWrapped->addElement(DATA_WRAPPER_TIME_ARRIVED_FIELD, timeArrived);
 
         auto confidence = std::make_shared<aron::datanavigator::DoubleNavigator>();
-        confidence->setValue(metadata.confidence);
+        confidence->setValue(static_cast<double>(metadata.confidence));
         dataWrapped->addElement(DATA_WRAPPER_CONFIDENCE_FIELD, confidence);
 
         return dataWrapped;
diff --git a/source/RobotAPI/libraries/armem/core/longtermmemory/EntityInstance.cpp b/source/RobotAPI/libraries/armem/core/longtermmemory/EntityInstance.cpp
index 424dd732d74b777bb96b786302dc1a49782b8ec5..17535db36fda2e165df2e7a41489193699ac4754 100644
--- a/source/RobotAPI/libraries/armem/core/longtermmemory/EntityInstance.cpp
+++ b/source/RobotAPI/libraries/armem/core/longtermmemory/EntityInstance.cpp
@@ -18,7 +18,7 @@ namespace armarx::armem::ltm
     }
 
     EntityInstance::EntityInstance(const EntityInstance& other) :
-        MemoryItem(other.id),
+        MemoryItem(other.id()),
         _metadata(other._metadata)
     {
     }
diff --git a/source/RobotAPI/libraries/armem/core/workingmemory/EntityInstance.cpp b/source/RobotAPI/libraries/armem/core/workingmemory/EntityInstance.cpp
index 125dde02214783caa6abe9668b24b04dc407c42a..cc2aed88a9dd43f326cde8cc8448bbee466369b0 100644
--- a/source/RobotAPI/libraries/armem/core/workingmemory/EntityInstance.cpp
+++ b/source/RobotAPI/libraries/armem/core/workingmemory/EntityInstance.cpp
@@ -19,7 +19,7 @@ namespace armarx::armem::wm
     }
 
     EntityInstance::EntityInstance(const EntityInstance& other) :
-        base::detail::MemoryItem(other.id),
+        base::detail::MemoryItem(other.id()),
         _metadata(other._metadata),
         _data(other._data)
     {
diff --git a/source/RobotAPI/libraries/armem/test/ArMemIceConversionsTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemIceConversionsTest.cpp
index 36d8ac9cfa55816a086985f0de6f6f6c99155273..a835f39bef74f745b22c4ee167e4755a031fec50 100644
--- a/source/RobotAPI/libraries/armem/test/ArMemIceConversionsTest.cpp
+++ b/source/RobotAPI/libraries/armem/test/ArMemIceConversionsTest.cpp
@@ -54,10 +54,10 @@ BOOST_AUTO_TEST_CASE(test_entity)
     armem::data::EntityPtr ice;
     armem::toIce(ice, entity);
 
-    BOOST_CHECK_EQUAL(ice->id().memoryName, entity.id.memoryName);
-    BOOST_CHECK_EQUAL(ice->id().coreSegmentName, entity.id.coreSegmentName);
-    BOOST_CHECK_EQUAL(ice->id().providerSegmentName, entity.id.providerSegmentName);
-    BOOST_CHECK_EQUAL(ice->id().entityName, entity.id.entityName);
+    BOOST_CHECK_EQUAL(ice->id.memoryName, entity.id().memoryName);
+    BOOST_CHECK_EQUAL(ice->id.coreSegmentName, entity.id().coreSegmentName);
+    BOOST_CHECK_EQUAL(ice->id.providerSegmentName, entity.id().providerSegmentName);
+    BOOST_CHECK_EQUAL(ice->id.entityName, entity.id().entityName);
 
     BOOST_CHECK_EQUAL(ice->history.size(), entity.history().size());
 
diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
index 8092012654c0bb9b9980279dce41467ba390d928..97c7befe6092f8e0525327e6c1b9599ee4ddcd1d 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
+++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
@@ -98,7 +98,7 @@ namespace armarx::armem::gui::instance
             instance = &memory.getEntityInstance(id);
             if (useTypeInfo)
             {
-                aronType = memory.getCoreSegment(id.coreSegmentName).getProviderSegment(id.providerSegmentName).aronType;
+                aronType = memory.getCoreSegment(id.coreSegmentName).getProviderSegment(id.providerSegmentName).aronType();
             }
         }
         catch (const armem::error::ArMemError& e)
@@ -124,7 +124,7 @@ namespace armarx::armem::gui::instance
     {
         if (currentInstance)
         {
-            updateInstanceID(currentInstance->id);
+            updateInstanceID(currentInstance->id());
             updateMetaData(currentInstance->metadata());
             updateData(currentInstance->data(), currentAronType);
             updateImageView(currentInstance->data());
diff --git a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp
index 20f0a2f1a4f17cac00d91dd5705b6e8c37d95304..192ec825e85de0782b1839db975dc088ee62c399 100644
--- a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp
+++ b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp
@@ -261,11 +261,11 @@ namespace armarx::armem::gui::memory
         columns.insert(int(Columns::SIZE), "");
         columns.insert(int(Columns::TYPE), "");
         columns.insert(int(Columns::LEVEL), QString::fromStdString(simox::alg::capitalize_words(memoryItem.getLevelName())));
-        columns.insert(int(Columns::ID), QString::fromStdString(memoryItem.id.str()));
+        columns.insert(int(Columns::ID), QString::fromStdString(memoryItem.id().str()));
 
         QTreeWidgetItem* item = new QTreeWidgetItem(columns);
         item->setData(int(Columns::LEVEL), Qt::UserRole, QString::fromStdString(memoryItem.getLevelName()));
-        item->setData(int(Columns::ID), Qt::UserRole, QString::fromStdString(memoryItem.id.str()));
+        item->setData(int(Columns::ID), Qt::UserRole, QString::fromStdString(memoryItem.id().str()));
         item->setTextAlignment(int(Columns::SIZE), Qt::AlignRight);
         return item;
     }
@@ -289,9 +289,9 @@ namespace armarx::armem::gui::memory
     {
         updateContainerItem(container, item);
         std::string typeName;
-        if (container.aronType)
+        if (container.aronType())
         {
-            typeName = container.aronType->getName();
+            typeName = container.aronType()->getName();
 
             std::string del = "::";
             size_t find = typeName.rfind(del);
diff --git a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp
index b9682ddebf691e850cc604c610a4d98d33610aa5..d035b2b7926376c0e16e38bcfd6d8182f4609d87 100644
--- a/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp
+++ b/source/RobotAPI/libraries/armem_robot_mapping/MappingDataReader.cpp
@@ -29,6 +29,7 @@
 #include <RobotAPI/libraries/armem/core/workingmemory/CoreSegment.h>
 #include <RobotAPI/libraries/armem/core/workingmemory/EntityInstance.h>
 #include <RobotAPI/libraries/armem/core/workingmemory/Memory.h>
+#include <RobotAPI/libraries/armem/core/workingmemory/Entity.h>
 #include <RobotAPI/libraries/armem/core/workingmemory/ProviderSegment.h>
 #include <RobotAPI/interface/armem/mns/MemoryNameSystemInterface.h>
 #include <RobotAPI/libraries/armem/util/util.h>
@@ -38,11 +39,6 @@
 #include <RobotAPI/libraries/armem_robot_mapping/types.h>
 
 
-namespace armarx::armem
-{
-    class Entity;
-}  // namespace armarx
-
 namespace armarx::armem
 {
 
@@ -108,7 +104,7 @@ namespace armarx::armem
             .coreSegments().withName(properties.mappingMemoryName)
             .providerSegments().withName(query.agent)
             .entities().withNames(query.sensorList)
-            .snapshots().timeRange(query.timeRange.min,query.timeRange.max);
+            .snapshots().timeRange(query.timeRange.min, query.timeRange.max);
             // clang-format on
         }
 
@@ -116,7 +112,7 @@ namespace armarx::armem
 
     }
 
-    std::vector<LaserScanStamped> asLaserScans(const std::map<std::string, Entity>& entities)
+    std::vector<LaserScanStamped> asLaserScans(const std::map<std::string, wm::Entity>& entities)
     {
         std::vector<LaserScanStamped> outV;
 
@@ -125,7 +121,7 @@ namespace armarx::armem
             ARMARX_WARNING << "No entities!";
         }
 
-        const auto convert = [](const arondto::LaserScanStamped & aronLaserScanStamped, const EntityInstance & ei) -> LaserScanStamped
+        const auto convert = [](const arondto::LaserScanStamped & aronLaserScanStamped, const wm::EntityInstance & ei) -> LaserScanStamped
         {
             LaserScanStamped laserScanStamped;
             fromAron(aronLaserScanStamped, laserScanStamped);
@@ -145,16 +141,16 @@ namespace armarx::armem
         // loop over all entities and their snapshots
         for (const auto &[s, entity] : entities)
         {
-            if (entity.history.empty())
+            if (entity.empty())
             {
                 ARMARX_WARNING << "Empty history for " << s;
             }
 
-            ARMARX_INFO << "History size: " << entity.history.size();
+            ARMARX_INFO << "History size: " << entity.size();
 
-            for (const auto &[ss, entitySnapshot] : entity.history)
+            for (const auto &[ss, entitySnapshot] : entity)
             {
-                for (const auto& entityInstance : entitySnapshot.instances)
+                for (const auto& entityInstance : entitySnapshot.instances())
                 {
                     const auto o = tryCast<arondto::LaserScanStamped>(entityInstance);