diff --git a/source/RobotAPI/components/armem/addon/LegacyRobotStateMemoryAdapter/LegacyRobotStateMemoryAdapter.cpp b/source/RobotAPI/components/armem/addon/LegacyRobotStateMemoryAdapter/LegacyRobotStateMemoryAdapter.cpp
index ae751bb1ac1bfb0ba8e51a4fc9fc11b28c0e3cf2..c9afa372dc20c08fc6e80ce2666214618d366286 100644
--- a/source/RobotAPI/components/armem/addon/LegacyRobotStateMemoryAdapter/LegacyRobotStateMemoryAdapter.cpp
+++ b/source/RobotAPI/components/armem/addon/LegacyRobotStateMemoryAdapter/LegacyRobotStateMemoryAdapter.cpp
@@ -96,7 +96,7 @@ namespace armarx::armem
 
         armem::EntityUpdate entityUpdate;
         entityUpdate.entityID = propEntityID;
-        entityUpdate.timeCreated = Time(Duration::MicroSeconds(_timestampUpdateFirstModifiedInUs));  // we take the oldest timestamp
+        entityUpdate.referencedTime = Time(Duration::MicroSeconds(_timestampUpdateFirstModifiedInUs));  // we take the oldest timestamp
 
         entityUpdate.instancesData =
         {
@@ -128,7 +128,7 @@ namespace armarx::armem
 
             armem::EntityUpdate locUpdate;
             locUpdate.entityID = locEntityID;
-            locUpdate.timeCreated = Time(Duration::MicroSeconds(_timestampUpdateFirstModifiedInUs));
+            locUpdate.referencedTime = Time(Duration::MicroSeconds(_timestampUpdateFirstModifiedInUs));
             locUpdate.instancesData =
             {
                transform.toAron()
@@ -282,7 +282,7 @@ namespace armarx::armem
         entityUpdate.entityID.entityName = "Armar3";
 
         entityUpdate.instancesData = { desc.toAron() };
-        entityUpdate.timeCreated = armem::Time::Now();
+        entityUpdate.referencedTime = armem::Time::Now();
         auto res = memoryWriter.commit(c);
         if (!res.allSuccess())
         {
diff --git a/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.cpp b/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.cpp
index c072f6fce5ef567fafb8c804e479747a895e80c6..cde81dc6801e7205867c6ff6cd679c69a1db9d92 100644
--- a/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.cpp
+++ b/source/RobotAPI/components/armem/client/ExampleMemoryClient/ExampleMemoryClient.cpp
@@ -218,9 +218,9 @@ namespace armarx
         // Prepare the update with some empty instances.
         armem::EntityUpdate update;
         update.entityID = entityID;
-        update.timeCreated = armem::Time::Now();
+        update.referencedTime = armem::Time::Now();
 
-        double diff = (update.timeCreated - runStarted).toMilliSecondsDouble() / 1000;
+        double diff = (update.referencedTime - runStarted).toMilliSecondsDouble() / 1000;
 
         auto dict1 = std::make_shared<aron::data::Dict>();
         auto dict2 = std::make_shared<aron::data::Dict>();
@@ -265,7 +265,7 @@ namespace armarx
         {
             armem::EntityUpdate& update = commit.add();
             update.entityID = entityID;
-            update.timeCreated = armem::Time::Now() + armem::Duration::Seconds(i);
+            update.referencedTime = armem::Time::Now() + armem::Duration::Seconds(i);
             for (int j = 0; j < i; ++j)
             {
                 update.instancesData.push_back(std::make_shared<aron::data::Dict>());
@@ -387,7 +387,7 @@ namespace armarx
         {
             armem::EntityUpdate& update = commit.add();
             update.entityID = exampleDataProviderID.withEntityName("default");
-            update.timeCreated = time;
+            update.referencedTime = time;
 
             armem::example::ExampleData data;
             toAron(data.memoryID, armem::MemoryID());
@@ -401,7 +401,7 @@ namespace armarx
         {
             armem::EntityUpdate& update = commit.add();
             update.entityID = exampleDataProviderID.withEntityName("the answer");
-            update.timeCreated = time;
+            update.referencedTime = time;
 
             armem::example::ExampleData data;
             data.the_bool = true;
@@ -488,7 +488,7 @@ namespace armarx
         {
             armem::EntityUpdate& update = commit.add();
             update.entityID = linkedDataProviderID.withEntityName("yet_more_data");
-            update.timeCreated = time;
+            update.referencedTime = time;
 
             armem::example::LinkedData data;
             data.yet_another_int = 42;
@@ -545,7 +545,7 @@ namespace armarx
         {
             armem::EntityUpdate& update = commit.add();
             update.entityID = exampleDataProviderID.withEntityName("id to the_answer");
-            update.timeCreated = time;
+            update.referencedTime = time;
 
             armem::example::ExampleData data;
             armem::toAron(data.memoryID, theAnswerSnapshotID);
@@ -556,7 +556,7 @@ namespace armarx
         {
             armem::EntityUpdate& update = commit.add();
             update.entityID = exampleDataProviderID.withEntityName("id to self");
-            update.timeCreated = time;
+            update.referencedTime = time;
 
             armem::example::ExampleData data;
             armem::toAron(data.memoryID, update.entityID.withTimestamp(time));
@@ -568,7 +568,7 @@ namespace armarx
         {
             armem::EntityUpdate& update = commit.add();
             update.entityID = exampleDataProviderID.withEntityName("id to previous snapshot");
-            update.timeCreated = time - armem::Duration::Seconds(1);  // 1 sec in the past
+            update.referencedTime = time - armem::Duration::Seconds(1);  // 1 sec in the past
 
             armem::example::ExampleData data;
             armem::toAron(data.memoryID, armem::MemoryID());  // First entry - invalid link
@@ -579,7 +579,7 @@ namespace armarx
         {
             armem::EntityUpdate& update = commit.add();
             update.entityID = exampleDataProviderID.withEntityName("id to previous snapshot");
-            update.timeCreated = time;
+            update.referencedTime = time;
 
             armem::example::ExampleData data;
             armem::toAron(data.memoryID, update.entityID.withTimestamp(time - armem::Duration::Seconds(1)));
@@ -634,7 +634,7 @@ namespace armarx
         {
             armem::EntityUpdate& update = commit.add();
             update.entityID = exampleDataProviderID.withEntityName("link to yet_more_data");
-            update.timeCreated = time;
+            update.referencedTime = time;
 
             armem::example::ExampleData data;
             armem::toAron(data.memoryID, armem::MemoryID());
@@ -686,7 +686,7 @@ namespace armarx
         {
             armem::EntityUpdate& update = commit.add();
             update.entityID = exampleDataProviderID.withEntityName("some_new_fancy_entity_id");
-            update.timeCreated = time;
+            update.referencedTime = time;
 
             auto currentFolder = std::filesystem::current_path();
             auto opencv_img = cv::imread((currentFolder / "images" / (std::to_string(imageCounter + 1) + ".jpg")).string());
@@ -708,7 +708,7 @@ namespace armarx
         {
             armem::EntityUpdate& update = commit.add();
             update.entityID = exampleDataProviderID.withEntityName("unexpected_data");
-            update.timeCreated = time;
+            update.referencedTime = time;
 
             armem::example::ExampleData data;
             toAron(data.memoryID, armem::MemoryID()); // ////1/1
diff --git a/source/RobotAPI/components/armem/client/ObjectInstanceToIndex/ObjectInstanceToIndex.cpp b/source/RobotAPI/components/armem/client/ObjectInstanceToIndex/ObjectInstanceToIndex.cpp
index fedf604b04009ee1b1b3ef18e36df93f7a57b6a4..23b426f37c9dc8942a621cde3b5746e6cdb52ae3 100644
--- a/source/RobotAPI/components/armem/client/ObjectInstanceToIndex/ObjectInstanceToIndex.cpp
+++ b/source/RobotAPI/components/armem/client/ObjectInstanceToIndex/ObjectInstanceToIndex.cpp
@@ -196,7 +196,7 @@ namespace armarx
 
                 armem::EntityUpdate& update = commit.add();
                 update.entityID = provSegID.withEntityName(instance.id().str());
-                update.timeCreated = instance.id().timestamp;
+                update.referencedTime = instance.id().timestamp;
                 update.instancesData = { spatial.toAron() };
 
                 return true;
diff --git a/source/RobotAPI/components/armem/client/ObjectInstanceToIndex/impl/ObjectInstanceToIndex.cpp b/source/RobotAPI/components/armem/client/ObjectInstanceToIndex/impl/ObjectInstanceToIndex.cpp
index 4498d01cec8f60ba81e864438671dc254b2bf5e9..34901591b175f4b5e09dcef339868bbe488d5b50 100644
--- a/source/RobotAPI/components/armem/client/ObjectInstanceToIndex/impl/ObjectInstanceToIndex.cpp
+++ b/source/RobotAPI/components/armem/client/ObjectInstanceToIndex/impl/ObjectInstanceToIndex.cpp
@@ -75,7 +75,7 @@ namespace armarx::armem::objects
                 armem::EntityUpdate& update = commit.add();
                 update.entityID = indexSpatialProviderSegmentID.withEntityName(
                     objectInstanceID.getEntityID().str());
-                update.timeCreated = objectPose.timestamp;
+                update.referencedTime = objectPose.timestamp;
                 update.instancesData = {spatial.toAron()};
             }
 
@@ -114,7 +114,7 @@ namespace armarx::armem::objects
                 armem::EntityUpdate& update = commit.add();
                 update.entityID = indexNamedProviderSegmentID.withEntityName(
                     objectInstanceID.getEntityID().str());
-                update.timeCreated = objectPose.timestamp;
+                update.referencedTime = objectPose.timestamp;
                 update.instancesData = {named.toAron()};
             }
         }
diff --git a/source/RobotAPI/components/armem/client/RobotStatePredictionClientExample/RobotStatePredictionClient.cpp b/source/RobotAPI/components/armem/client/RobotStatePredictionClientExample/RobotStatePredictionClient.cpp
index 3d98d0f2717747a91f7a56c3e0c547cbb0088fbd..492c2c14214d5b1a31a8c0998843a5b799ab495b 100644
--- a/source/RobotAPI/components/armem/client/RobotStatePredictionClientExample/RobotStatePredictionClient.cpp
+++ b/source/RobotAPI/components/armem/client/RobotStatePredictionClientExample/RobotStatePredictionClient.cpp
@@ -163,7 +163,7 @@ namespace armarx::armem::robot_state
                 {
                     armem::EntityUpdate update;
                     update.entityID = entityID;
-                    update.timeCreated = predictedTime;
+                    update.referencedTime = predictedTime;
                     update.instancesData = {result.prediction};
                     coreSegment->update(update);
                 }
diff --git a/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.cpp b/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.cpp
index 77135658d4a93d47e0b4474002b589cf569de67f..981489f8621918a733208a0dc7c6c20d274ecfe9 100644
--- a/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.cpp
+++ b/source/RobotAPI/components/armem/server/ExampleMemory/ExampleMemory.cpp
@@ -197,7 +197,7 @@ namespace armarx
                         .withProviderSegmentName(memoryID.providerSegmentName)
                         .withEntityName(memoryID.entityName);
                     update.entityID = newID;
-                    update.timeCreated = armem::Time::Now();
+                    update.referencedTime = armem::Time::Now();
                     update.instancesData = { instance->data() };
 
                     armem::Commit newCommit;
diff --git a/source/RobotAPI/interface/armem/commit.ice b/source/RobotAPI/interface/armem/commit.ice
index 17260a2136d2cc4c24d1ecd06f5f77ecbcb7f8c0..4a7008293fbe1bd2080ebf808f1bd28621792303 100644
--- a/source/RobotAPI/interface/armem/commit.ice
+++ b/source/RobotAPI/interface/armem/commit.ice
@@ -34,7 +34,7 @@ module armarx
             {
                 armem::data::MemoryID entityID;
                 aron::data::dto::AronDictSeq instancesData;
-                armarx::core::time::dto::DateTime timeCreated;
+                armarx::core::time::dto::DateTime referencedTime;
 
                 float confidence = 1.0;
                 armarx::core::time::dto::DateTime timeSent;
diff --git a/source/RobotAPI/interface/armem/memory.ice b/source/RobotAPI/interface/armem/memory.ice
index 617f7043f76019a2c474f588127dbcbd9c4f3991..63801dd4da540ae46fef76e993a862e4979409c7 100644
--- a/source/RobotAPI/interface/armem/memory.ice
+++ b/source/RobotAPI/interface/armem/memory.ice
@@ -38,9 +38,11 @@ module armarx
             /// Ice Twin of `armarx::armem::EntityInstanceMetadata`.
             class EntityInstanceMetadata
             {
-                armarx::core::time::dto::DateTime timeCreated;
-                armarx::core::time::dto::DateTime timeSent;
-                armarx::core::time::dto::DateTime timeArrived;
+                armarx::core::time::dto::DateTime referencedTime;
+                armarx::core::time::dto::DateTime sentTime;
+                armarx::core::time::dto::DateTime arrivedTime;
+                armarx::core::time::dto::DateTime lastAccessedTime;
+                long accessed = 0;
 
                 float confidence = 1.0;
             };
diff --git a/source/RobotAPI/libraries/GraspingUtility/GraspCandidateWriter.cpp b/source/RobotAPI/libraries/GraspingUtility/GraspCandidateWriter.cpp
index 76200b0ab1772d68cd30482e577ae870e711af10..7aa20ba28af1b49404118cfedb3abd006d784738 100644
--- a/source/RobotAPI/libraries/GraspingUtility/GraspCandidateWriter.cpp
+++ b/source/RobotAPI/libraries/GraspingUtility/GraspCandidateWriter.cpp
@@ -170,7 +170,7 @@ namespace armarx::armem
         armem::EntityUpdate update;
         update.entityID = entityID;
         update.instancesData = instances;
-        update.timeCreated = timestamp;
+        update.referencedTime = timestamp;
 
         ARMARX_DEBUG << "Committing " << update << " at time " << timestamp;
         armem::EntityUpdateResult updateResult = memoryWriter.commit(update);
diff --git a/source/RobotAPI/libraries/armem/client/Writer.cpp b/source/RobotAPI/libraries/armem/client/Writer.cpp
index 3c4edce62f6cbc0b2d2dc908e673fbe06afe6f53..e9b06f66e1e297296a2f47c39cdf6474c0015795 100644
--- a/source/RobotAPI/libraries/armem/client/Writer.cpp
+++ b/source/RobotAPI/libraries/armem/client/Writer.cpp
@@ -84,12 +84,12 @@ namespace armarx::armem::client
     EntityUpdateResult Writer::commit(
         const MemoryID& entityID,
         const std::vector<aron::data::DictPtr>& instancesData,
-        Time timeCreated)
+        Time referencedTime)
     {
         EntityUpdate update;
         update.entityID = entityID;
         update.instancesData = instancesData;
-        update.timeCreated = timeCreated;
+        update.referencedTime = referencedTime;
         return commit(update);
     }
 
diff --git a/source/RobotAPI/libraries/armem/client/Writer.h b/source/RobotAPI/libraries/armem/client/Writer.h
index 1d898bf6e3bc7382e4a4a22318507a3b29ee2cd7..6c4b223ce12e0ee80cd5564e2d2d3ad688661cbc 100644
--- a/source/RobotAPI/libraries/armem/client/Writer.h
+++ b/source/RobotAPI/libraries/armem/client/Writer.h
@@ -49,7 +49,7 @@ namespace armarx::armem::client
         EntityUpdateResult commit(
             const MemoryID& entityID,
             const std::vector<aron::data::DictPtr>& instancesData,
-            Time timeCreated);
+            Time referencedTime);
 
         // with bare-ice types
         data::CommitResult commit(const data::Commit& commit);
diff --git a/source/RobotAPI/libraries/armem/core/Commit.cpp b/source/RobotAPI/libraries/armem/core/Commit.cpp
index 3c311d2249c3dc7ebe6baee5779c9337b6e19a01..341d160ec7852bb9d397d283289a4944c1f98409 100644
--- a/source/RobotAPI/libraries/armem/core/Commit.cpp
+++ b/source/RobotAPI/libraries/armem/core/Commit.cpp
@@ -14,7 +14,7 @@ namespace armarx::armem
     {
         return os << "Entity update: "
                << "\n- success:    \t" << rhs.entityID
-               << "\n- timestamp:  \t" << toDateTimeMilliSeconds(rhs.timeCreated)
+               << "\n- timestamp:  \t" << toDateTimeMilliSeconds(rhs.referencedTime)
                << "\n- #instances: \t" << rhs.instancesData.size()
                << "\n"
                ;
@@ -25,7 +25,7 @@ namespace armarx::armem
         return os << "Entity update result: "
                << "\n- success:       \t" << (rhs.success ? "true" : "false")
                << "\n- snapshotID:    \t" << rhs.snapshotID
-               << "\n- time arrived:  \t" << toDateTimeMilliSeconds(rhs.timeArrived)
+               << "\n- time arrived:  \t" << toDateTimeMilliSeconds(rhs.arrivedTime)
                << "\n- error message: \t" << rhs.errorMessage
                << "\n"
                ;
diff --git a/source/RobotAPI/libraries/armem/core/Commit.h b/source/RobotAPI/libraries/armem/core/Commit.h
index 8a1da207528940d0db22dd004faae5b15e3d07f3..81d0413849549af39abb5f2733e76d53565a6f3b 100644
--- a/source/RobotAPI/libraries/armem/core/Commit.h
+++ b/source/RobotAPI/libraries/armem/core/Commit.h
@@ -36,7 +36,7 @@ namespace armarx::armem
          * @brief Time when this entity update was created (e.g. time of image recording).
          * This is the key of the entity's history.
          */
-        Time timeCreated = Time::Invalid();
+        Time referencedTime = Time::Invalid();
 
 
         // OPTIONAL
@@ -52,14 +52,14 @@ namespace armarx::armem
          *
          * Set automatically when sending the commit.
          */
-        Time timeSent = Time::Invalid();
+        Time sentTime = Time::Invalid();
 
         /**
          * @brief Time when this update arrived at the memory server.
          *
          * Set by memory server on arrival.
          */
-        Time timeArrived = Time::Invalid();
+        Time arrivedTime = Time::Invalid();
 
 
         friend std::ostream& operator<<(std::ostream& os, const EntityUpdate& rhs);
@@ -74,7 +74,7 @@ namespace armarx::armem
         bool success = false;
 
         MemoryID snapshotID;
-        Time timeArrived = Time::Invalid();
+        Time arrivedTime = Time::Invalid();
 
         std::string errorMessage;
 
diff --git a/source/RobotAPI/libraries/armem/core/base/EntityBase.h b/source/RobotAPI/libraries/armem/core/base/EntityBase.h
index 9c9a8c88a535eb919029c16305f2af72e999423d..7b6972a93bf7dcad9d804a03136869472b364082 100644
--- a/source/RobotAPI/libraries/armem/core/base/EntityBase.h
+++ b/source/RobotAPI/libraries/armem/core/base/EntityBase.h
@@ -552,11 +552,11 @@ namespace armarx::armem::base
 
             EntitySnapshotT* snapshot;
 
-            auto it = this->_container.find(update.timeCreated);
+            auto it = this->_container.find(update.referencedTime);
             if (it == this->_container.end())
             {
                 // Insert into history.
-                snapshot = &addSnapshot(update.timeCreated);
+                snapshot = &addSnapshot(update.referencedTime);
                 // ret.removedSnapshots = this->truncate();
                 ret.entityUpdateType = UpdateType::InsertedNew;
             }
diff --git a/source/RobotAPI/libraries/armem/core/base/EntityInstanceBase.cpp b/source/RobotAPI/libraries/armem/core/base/EntityInstanceBase.cpp
index 1cc2e9544d00ce96d65658acaf853c670418bdce..a2cabd58bd92564c68374f0bf61ab06ef5990135 100644
--- a/source/RobotAPI/libraries/armem/core/base/EntityInstanceBase.cpp
+++ b/source/RobotAPI/libraries/armem/core/base/EntityInstanceBase.cpp
@@ -3,11 +3,17 @@
 
 namespace armarx::armem::base
 {
+    void EntityInstanceMetadata::access() const
+    {
+        numAccessed++;
+        lastAccessedTime = armarx::core::time::DateTime::Now();
+    }
+
     bool EntityInstanceMetadata::operator==(const EntityInstanceMetadata& other) const
     {
-        return timeCreated == other.timeCreated
-               && timeSent == other.timeSent
-               && timeArrived == other.timeArrived
+        return referencedTime == other.referencedTime
+               && sentTime == other.sentTime
+               && arrivedTime == other.arrivedTime
                && std::abs(confidence - other.confidence) < 1e-6f;
     }
 }
@@ -16,10 +22,11 @@ namespace armarx::armem::base
 std::ostream& armarx::armem::base::operator<<(std::ostream& os, const EntityInstanceMetadata& d)
 {
     os << "EntityInstanceMetadata: "
-       << "\n- t_create =   \t" << armem::toStringMicroSeconds(d.timeCreated) << " us"
-       << "\n- t_sent =     \t" << armem::toStringMicroSeconds(d.timeSent) << " us"
-       << "\n- t_arrived =  \t" << armem::toStringMicroSeconds(d.timeArrived) << " us"
-       << "\n- confidence = \t" << d.confidence << " us"
+       << "\n - t_referenced = \t" << armem::toStringMicroSeconds(d.referencedTime) << " us"
+       << "\n - t_sent       = \t" << armem::toStringMicroSeconds(d.sentTime) << " us"
+       << "\n - t_arrived    = \t" << armem::toStringMicroSeconds(d.arrivedTime) << " us"
+       << "\n - t_accessed   = \t" << armem::toStringMicroSeconds(d.lastAccessedTime) << " us (" << d.numAccessed << ")"
+       << "\n - confidence   = \t" << d.confidence << " us"
        ;
     return os;
 }
diff --git a/source/RobotAPI/libraries/armem/core/base/EntityInstanceBase.h b/source/RobotAPI/libraries/armem/core/base/EntityInstanceBase.h
index 02b2bcae49014e801c59d001fe9150dcae7a1b95..2dadcbc6784ac89dff3658c4d3c4c5282d3e7ef1 100644
--- a/source/RobotAPI/libraries/armem/core/base/EntityInstanceBase.h
+++ b/source/RobotAPI/libraries/armem/core/base/EntityInstanceBase.h
@@ -14,6 +14,16 @@ namespace armarx::armem::base
      */
     struct NoData
     {
+        virtual ~NoData() = default;
+
+        bool operator==(const NoData& other)
+        {
+            return true;
+        }
+        bool operator!=(const NoData& other)
+        {
+            return false;
+        }
     };
 
 
@@ -22,22 +32,34 @@ namespace armarx::armem::base
      */
     struct EntityInstanceMetadata
     {
-        /// Time when this value was created.
-        Time timeCreated;
+
+        virtual ~EntityInstanceMetadata() = default;
+
+        /**
+         * @brief Time this instance refers to.
+         *
+         * For example, the physical time point when an image was captured.
+         * If the image is processed, the result should have the same
+         * referencedTime as the image.
+         */
+        Time referencedTime = Time::Invalid();
+
         /// Time when this value was sent to the memory.
-        Time timeSent;
+        Time sentTime = Time::Invalid();
         /// Time when this value has arrived at the memory.
-        Time timeArrived;
+        Time arrivedTime = Time::Invalid();
 
         /// An optional confidence, may be used for things like decay.
         float confidence = 1.0;
 
-        /// An optional value indicating the last access
-        Time lastAccessed = Time::Invalid();
+        /// An optional value indicating the time of last access.
+        mutable Time lastAccessedTime = Time::Invalid();
 
-        /// A counter how often the instance has been accessed
-        unsigned long accessed = 0;
+        /// A counter how often the instance has been accessed.
+        mutable unsigned long numAccessed = 0;
 
+        /// Called whenever the entity instance this metadata belongs to is accessed (e.g. queried).
+        void access() const;
 
         bool operator==(const EntityInstanceMetadata& other) const;
         inline bool operator!=(const EntityInstanceMetadata& other) const
@@ -91,11 +113,11 @@ namespace armarx::armem::base
 
         // Data
 
-        EntityInstanceMetadata& metadata()
+        MetadataT& metadata()
         {
             return _metadata;
         }
-        const EntityInstanceMetadata& metadata() const
+        const MetadataT& metadata() const
         {
             return _metadata;
         }
diff --git a/source/RobotAPI/libraries/armem/core/base/EntitySnapshotBase.h b/source/RobotAPI/libraries/armem/core/base/EntitySnapshotBase.h
index c983dd8dec8a9a351b0a4cd1efc9d00320f59a1c..b7048a6328990d6be2152c0559466cf1ff142b9e 100644
--- a/source/RobotAPI/libraries/armem/core/base/EntitySnapshotBase.h
+++ b/source/RobotAPI/libraries/armem/core/base/EntitySnapshotBase.h
@@ -223,7 +223,7 @@ namespace armarx::armem::base
 
         void update(const EntityUpdate& update)
         {
-            detail::throwIfNotEqual(time(), update.timeCreated);
+            detail::throwIfNotEqual(time(), update.referencedTime);
 
             this->_container.clear();
             for (int index = 0; index < int(update.instancesData.size()); ++index)
diff --git a/source/RobotAPI/libraries/armem/core/base/ice_conversions.cpp b/source/RobotAPI/libraries/armem/core/base/ice_conversions.cpp
index 6ec40abd7ec808b8aca5aaf3cb4a93a5772e17b1..42620f2d928b91f7941600315a9970b16111618c 100644
--- a/source/RobotAPI/libraries/armem/core/base/ice_conversions.cpp
+++ b/source/RobotAPI/libraries/armem/core/base/ice_conversions.cpp
@@ -56,16 +56,20 @@ namespace armarx::armem
     void base::toIce(data::EntityInstanceMetadata& ice, const EntityInstanceMetadata& metadata)
     {
         ice.confidence = metadata.confidence;
-        toIce(ice.timeArrived, metadata.timeArrived);
-        toIce(ice.timeCreated, metadata.timeCreated);
-        toIce(ice.timeSent, metadata.timeSent);
+        toIce(ice.arrivedTime, metadata.arrivedTime);
+        toIce(ice.referencedTime, metadata.referencedTime);
+        toIce(ice.sentTime, metadata.sentTime);
+        toIce(ice.lastAccessedTime, metadata.lastAccessedTime);
+        ice.accessed = metadata.numAccessed;
     }
     void base::fromIce(const data::EntityInstanceMetadata& ice, EntityInstanceMetadata& metadata)
     {
         metadata.confidence = ice.confidence;
-        fromIce(ice.timeArrived, metadata.timeArrived);
-        fromIce(ice.timeCreated, metadata.timeCreated);
-        fromIce(ice.timeSent, metadata.timeSent);
+        fromIce(ice.arrivedTime, metadata.arrivedTime);
+        fromIce(ice.referencedTime, metadata.referencedTime);
+        fromIce(ice.sentTime, metadata.sentTime);
+        fromIce(ice.lastAccessedTime, metadata.lastAccessedTime);
+        metadata.numAccessed = ice.accessed;
     }
 
 
diff --git a/source/RobotAPI/libraries/armem/core/ice_conversions.cpp b/source/RobotAPI/libraries/armem/core/ice_conversions.cpp
index dfd25e3ba39ca2bc9a18be1b45684d004255297f..5e1ace16263e1bcdd11a760e8aba7c5216afc36d 100644
--- a/source/RobotAPI/libraries/armem/core/ice_conversions.cpp
+++ b/source/RobotAPI/libraries/armem/core/ice_conversions.cpp
@@ -87,10 +87,10 @@ namespace armarx
         std::transform(ice.instancesData.begin(), ice.instancesData.end(), std::back_inserter(update.instancesData),
                        aron::data::Dict::FromAronDictDTO);
 
-        fromIce(ice.timeCreated, update.timeCreated);
+        fromIce(ice.referencedTime, update.referencedTime);
 
         update.confidence = ice.confidence;
-        fromIce(ice.timeSent, update.timeSent);
+        fromIce(ice.timeSent, update.sentTime);
     }
 
     void armem::toIce(data::EntityUpdate& ice, const EntityUpdate& update)
@@ -102,17 +102,17 @@ namespace armarx
         std::transform(update.instancesData.begin(), update.instancesData.end(), std::back_inserter(ice.instancesData),
                        aron::data::Dict::ToAronDictDTO);
 
-        toIce(ice.timeCreated, update.timeCreated);
+        toIce(ice.referencedTime, update.referencedTime);
 
         ice.confidence = update.confidence;
-        toIce(ice.timeSent, update.timeSent);
+        toIce(ice.timeSent, update.sentTime);
     }
 
     void armem::fromIce(const data::EntityUpdateResult& ice, EntityUpdateResult& result)
     {
         result.success = ice.success;
         fromIce(ice.snapshotID, result.snapshotID);
-        fromIce(ice.timeArrived, result.timeArrived);
+        fromIce(ice.timeArrived, result.arrivedTime);
         result.errorMessage = ice.errorMessage;
     }
 
@@ -120,7 +120,7 @@ namespace armarx
     {
         ice.success = result.success;
         toIce(ice.snapshotID, result.snapshotID);
-        toIce(ice.timeArrived, result.timeArrived);
+        toIce(ice.timeArrived, result.arrivedTime);
         ice.errorMessage = result.errorMessage;
     }
 
@@ -137,7 +137,7 @@ namespace armarx
     void armem::fromIce(const data::EntityUpdate& ice, EntityUpdate& update, Time timeArrived)
     {
         fromIce(ice, update);
-        update.timeArrived = timeArrived;
+        update.arrivedTime = timeArrived;
     }
 
     void armem::fromIce(const actions::data::MenuPtr& ice, actions::Menu& menu)
diff --git a/source/RobotAPI/libraries/armem/core/operations.cpp b/source/RobotAPI/libraries/armem/core/operations.cpp
index 51729c613b6d10e5903a92818d9e1b4fa507fa11..5ac621a9ec9bd0e1ca9bf3ef6a6ca0e16ceb5d49 100644
--- a/source/RobotAPI/libraries/armem/core/operations.cpp
+++ b/source/RobotAPI/libraries/armem/core/operations.cpp
@@ -25,7 +25,7 @@ namespace armarx
     {
         EntityUpdate up;
         up.entityID = snapshot.id().getEntityID();
-        up.timeCreated = snapshot.time();
+        up.referencedTime = snapshot.time();
         up.instancesData = getAronData(snapshot);
         return up;
     }
diff --git a/source/RobotAPI/libraries/armem/core/wm/aron_conversions.cpp b/source/RobotAPI/libraries/armem/core/wm/aron_conversions.cpp
index d24ce36b544670f5e24e72177f64b839be52fc0d..e2ceb0f2ac5e77f23d0a8a330b9b7837699691fa 100644
--- a/source/RobotAPI/libraries/armem/core/wm/aron_conversions.cpp
+++ b/source/RobotAPI/libraries/armem/core/wm/aron_conversions.cpp
@@ -6,7 +6,7 @@
 namespace armarx::armem
 {
     constexpr const char* DATA_WRAPPER_TIME_STORED_FIELD     = "__WRITER_METADATA__TIME_STORED";
-    constexpr const char* DATA_WRAPPER_TIME_CREATED_FIELD    = "__ENTITY_METADATA__TIME_CREATED";
+    constexpr const char* DATA_WRAPPER_TIME_REFERENCED_FIELD = "__ENTITY_METADATA__TIME_REFERENCED";
     constexpr const char* DATA_WRAPPER_TIME_SENT_FIELD       = "__ENTITY_METADATA__TIME_SENT";
     constexpr const char* DATA_WRAPPER_TIME_ARRIVED_FIELD    = "__ENTITY_METADATA__TIME_ARRIVED";
     constexpr const char* DATA_WRAPPER_CONFIDENCE_FIELD      = "__ENTITY_METADATA__CONFIDENCE";
@@ -22,14 +22,14 @@ void armarx::armem::from_aron(const aron::data::DictPtr& metadata, const aron::d
 
     e.data() = data;
 
-    auto timeCreated = aron::data::Long::DynamicCastAndCheck(metadata->getElement(DATA_WRAPPER_TIME_CREATED_FIELD));
-    m.timeCreated = Time(Duration::MicroSeconds(timeCreated->toAronLongDTO()->value));
+    auto referencedTime = aron::data::Long::DynamicCastAndCheck(metadata->getElement(DATA_WRAPPER_TIME_REFERENCED_FIELD));
+    m.referencedTime = Time(Duration::MicroSeconds(referencedTime->toAronLongDTO()->value));
 
     auto timeSent = aron::data::Long::DynamicCastAndCheck(metadata->getElement(DATA_WRAPPER_TIME_SENT_FIELD));
-    m.timeSent = Time(Duration::MicroSeconds(timeSent->toAronLongDTO()->value));
+    m.sentTime = Time(Duration::MicroSeconds(timeSent->toAronLongDTO()->value));
 
     auto timeArrived = aron::data::Long::DynamicCastAndCheck(metadata->getElement(DATA_WRAPPER_TIME_ARRIVED_FIELD));
-    m.timeArrived = Time(Duration::MicroSeconds(timeArrived->toAronLongDTO()->value));
+    m.arrivedTime = Time(Duration::MicroSeconds(timeArrived->toAronLongDTO()->value));
 
     auto confidence = aron::data::Double::DynamicCastAndCheck(metadata->getElement(DATA_WRAPPER_CONFIDENCE_FIELD));
     m.confidence = static_cast<float>(confidence->toAronDoubleDTO()->value);
@@ -41,24 +41,24 @@ void armarx::armem::to_aron(aron::data::DictPtr& metadata, aron::data::DictPtr&
     data = e.data();
     metadata = std::make_shared<aron::data::Dict>();
 
-    auto timeWrapped = std::make_shared<aron::data::Long>();
+    auto timeWrapped = std::make_shared<aron::data::Long>(armarx::aron::Path(std::vector<std::string>{DATA_WRAPPER_TIME_STORED_FIELD}));
     timeWrapped->setValue(Time::Now().toMicroSecondsSinceEpoch());
     metadata->addElement(DATA_WRAPPER_TIME_STORED_FIELD, timeWrapped);
 
     const wm::EntityInstanceMetadata& m = e.metadata();
-    auto timeCreated = std::make_shared<aron::data::Long>();
-    timeCreated->setValue(m.timeCreated.toMicroSecondsSinceEpoch());
-    metadata->addElement(DATA_WRAPPER_TIME_CREATED_FIELD, timeCreated);
+    auto referencedTime = std::make_shared<aron::data::Long>(armarx::aron::Path(std::vector<std::string>{DATA_WRAPPER_TIME_REFERENCED_FIELD}));
+    referencedTime->setValue(m.referencedTime.toMicroSecondsSinceEpoch());
+    metadata->addElement(DATA_WRAPPER_TIME_REFERENCED_FIELD, referencedTime);
 
-    auto timeSent = std::make_shared<aron::data::Long>();
-    timeSent->setValue(m.timeSent.toMicroSecondsSinceEpoch());
+    auto timeSent = std::make_shared<aron::data::Long>(armarx::aron::Path(std::vector<std::string>{DATA_WRAPPER_TIME_SENT_FIELD}));
+    timeSent->setValue(m.sentTime.toMicroSecondsSinceEpoch());
     metadata->addElement(DATA_WRAPPER_TIME_SENT_FIELD, timeSent);
 
-    auto timeArrived = std::make_shared<aron::data::Long>();
-    timeArrived->setValue(m.timeArrived.toMicroSecondsSinceEpoch());
+    auto timeArrived = std::make_shared<aron::data::Long>(armarx::aron::Path(std::vector<std::string>{DATA_WRAPPER_TIME_ARRIVED_FIELD}));
+    timeArrived->setValue(m.arrivedTime.toMicroSecondsSinceEpoch());
     metadata->addElement(DATA_WRAPPER_TIME_ARRIVED_FIELD, timeArrived);
 
-    auto confidence = std::make_shared<aron::data::Double>();
+    auto confidence = std::make_shared<aron::data::Double>(armarx::aron::Path(std::vector<std::string>{DATA_WRAPPER_CONFIDENCE_FIELD}));
     confidence->setValue(static_cast<double>(m.confidence));
     metadata->addElement(DATA_WRAPPER_CONFIDENCE_FIELD, confidence);
 }
diff --git a/source/RobotAPI/libraries/armem/core/wm/memory_definitions.cpp b/source/RobotAPI/libraries/armem/core/wm/memory_definitions.cpp
index 0758020be61e3326c6b870b8bffae8d06e318a79..bfc408ac99a98a5bf1826f37334e1c331196ed1b 100644
--- a/source/RobotAPI/libraries/armem/core/wm/memory_definitions.cpp
+++ b/source/RobotAPI/libraries/armem/core/wm/memory_definitions.cpp
@@ -37,9 +37,9 @@ namespace armarx::armem::wm
 
         this->_metadata.confidence = update.confidence;
 
-        this->_metadata.timeCreated = update.timeCreated;
-        this->_metadata.timeSent = update.timeSent;
-        this->_metadata.timeArrived = update.timeArrived;
+        this->_metadata.referencedTime = update.referencedTime;
+        this->_metadata.sentTime = update.sentTime;
+        this->_metadata.arrivedTime = update.arrivedTime;
     }
 
 }
diff --git a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
index 63b9bba20d1575cc3377109b856d57a09bc4aae8..b70d98e4fb09a9d209c151dfcede09c551828367 100644
--- a/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
+++ b/source/RobotAPI/libraries/armem/server/MemoryToIceAdapter.cpp
@@ -187,7 +187,7 @@ namespace armarx::armem::server
 
                 result.success = true;
                 result.snapshotID = updateResult.id;
-                result.timeArrived = update.timeArrived;
+                result.arrivedTime = update.arrivedTime;
 
                 for (const auto& snapshot : updateResult.removedSnapshots)
                 {
diff --git a/source/RobotAPI/libraries/armem/server/query_proc/ltm/detail/EntityQueryProcessorBase.h b/source/RobotAPI/libraries/armem/server/query_proc/ltm/detail/EntityQueryProcessorBase.h
index d9f64fc7a42508ddf297490d4ce8481a054fdb9a..42b87df82d95dcf6e264319dc5b6a7e868dbde94 100644
--- a/source/RobotAPI/libraries/armem/server/query_proc/ltm/detail/EntityQueryProcessorBase.h
+++ b/source/RobotAPI/libraries/armem/server/query_proc/ltm/detail/EntityQueryProcessorBase.h
@@ -27,6 +27,7 @@ namespace armarx::armem::server::query_proc::ltm::detail
 
 
     protected:
+        // default addResultSnapshot method. Always copies the data
         void addResultSnapshot(ResultEntityT& result, const EntitySnapshotT& snapshot) const override
         {
             ResultSnapshotT s;
diff --git a/source/RobotAPI/libraries/armem/server/query_proc/wm/detail/EntityQueryProcessorBase.h b/source/RobotAPI/libraries/armem/server/query_proc/wm/detail/EntityQueryProcessorBase.h
index faa3fe544af4dedb4e4226123a1d422a2a1ed200..5fbd2300c13561d64075720d399bc0e4c87633f0 100644
--- a/source/RobotAPI/libraries/armem/server/query_proc/wm/detail/EntityQueryProcessorBase.h
+++ b/source/RobotAPI/libraries/armem/server/query_proc/wm/detail/EntityQueryProcessorBase.h
@@ -2,6 +2,7 @@
 
 #include "../../base/EntityQueryProcessorBase.h"
 
+#include <ArmarXCore/core/logging/Logging.h>
 
 namespace armarx::armem::server::query_proc::wm::detail
 {
@@ -32,7 +33,12 @@ namespace armarx::armem::server::query_proc::wm::detail
     protected:
         void addResultSnapshot(ResultEntityT& result, const EntitySnapshotT& snapshot) const override
         {
-            result.addSnapshot(snapshot);
+            snapshot.forEachInstance([](const typename EntitySnapshotT::EntityInstanceT& instance)
+            {
+                instance.metadata().access();
+            });
+            EntitySnapshotT copy = snapshot;
+            result.addSnapshot(std::move(copy));
         }
     };
 }
diff --git a/source/RobotAPI/libraries/armem/server/query_proc/wm/wm.h b/source/RobotAPI/libraries/armem/server/query_proc/wm/wm.h
index 27e88e82881deb7ba6f47249d385867b134b9621..312a39896aa717fb8d17115dfe4c0c904a524181 100644
--- a/source/RobotAPI/libraries/armem/server/query_proc/wm/wm.h
+++ b/source/RobotAPI/libraries/armem/server/query_proc/wm/wm.h
@@ -53,15 +53,21 @@ namespace armarx::armem::server::query_proc::wm::detail
             bool withData = (dataMode == armem::query::DataMode::WithData);
             if (withData)
             {
-                result.addSnapshot(server::wm::EntitySnapshot{ snapshot });
+                Base::addResultSnapshot(result, snapshot);
             }
             else
             {
+                // 1. access real data
+                snapshot.forEachInstance([](const server::wm::EntityInstance& i)
+                {
+                    i.metadata().access();
+                });
+
+                // 2. create copy and remove data from copy
                 server::wm::EntitySnapshot copy = snapshot;
                 copy.forEachInstance([](server::wm::EntityInstance & i)
                 {
                     i.data() = nullptr;
-                    return true;
                 });
                 result.addSnapshot(std::move(copy));
             }
diff --git a/source/RobotAPI/libraries/armem/server/test/ArMemLTMTest.cpp b/source/RobotAPI/libraries/armem/server/test/ArMemLTMTest.cpp
index edaa7bb5c5d92b57b0edf3918d1674db34337680..fd326aa038d122cb76a26ad34825dcab4f85b933 100644
--- a/source/RobotAPI/libraries/armem/server/test/ArMemLTMTest.cpp
+++ b/source/RobotAPI/libraries/armem/server/test/ArMemLTMTest.cpp
@@ -123,7 +123,7 @@ namespace ArMemLTMTest
                 }
                 update.entityID = armem::MemoryID::fromString(memoryName + "/TestCoreSegment/TestProvider/TestEntity");
                 update.instancesData = q;
-                update.timeCreated = armem::Time::Now();
+                update.referencedTime = armem::Time::Now();
                 BOOST_CHECK_NO_THROW(providerSegment.update(update));
                 BOOST_CHECK_EQUAL(providerSegment.size(), 1);
             }
diff --git a/source/RobotAPI/libraries/armem/server/test/ArMemMemoryTest.cpp b/source/RobotAPI/libraries/armem/server/test/ArMemMemoryTest.cpp
index 8c3052e7d3abebf761431789865f4d0f46633cc7..70a0a2839f7f575d02d876a2721c3b3a6c73b58c 100644
--- a/source/RobotAPI/libraries/armem/server/test/ArMemMemoryTest.cpp
+++ b/source/RobotAPI/libraries/armem/server/test/ArMemMemoryTest.cpp
@@ -653,7 +653,7 @@ struct CopyMoveCtorsOpsTest : public CopyMoveCtorsOpsTestBase
         {
             armem::EntityUpdate update;
             update.entityID = armem::MemoryID("M", "C", "P", "E", armem::Time(armem::Duration::MicroSeconds(123000)), 0);
-            update.timeCreated = update.entityID.timestamp;
+            update.referencedTime = update.entityID.timestamp;
             update.instancesData.emplace_back();
             in.update(update);
         }
@@ -814,7 +814,7 @@ BOOST_AUTO_TEST_CASE(test_segment_setup)
         std::make_shared<aron::data::Dict>(),
         std::make_shared<aron::data::Dict>()
     };
-    update.timeCreated = armem::Time(armem::Duration::MilliSeconds(1000));
+    update.referencedTime = armem::Time(armem::Duration::MilliSeconds(1000));
     BOOST_CHECK_NO_THROW(providerSegment.update(update));
 
     BOOST_CHECK_EQUAL(providerSegment.size(), 1);
@@ -824,25 +824,25 @@ BOOST_AUTO_TEST_CASE(test_segment_setup)
     wm::Entity& entity = providerSegment.getEntity("image");
     BOOST_CHECK_EQUAL(entity.name(), "image");
     BOOST_CHECK_EQUAL(entity.size(), 1);
-    BOOST_CHECK(entity.hasSnapshot(update.timeCreated));
+    BOOST_CHECK(entity.hasSnapshot(update.referencedTime));
 
-    wm::EntitySnapshot& entitySnapshot = entity.getSnapshot(update.timeCreated);
+    wm::EntitySnapshot& entitySnapshot = entity.getSnapshot(update.referencedTime);
     BOOST_CHECK_EQUAL(entitySnapshot.size(), update.instancesData.size());
 
 
     // Another update (on memory).
 
     update.instancesData = { std::make_shared<aron::data::Dict>() };
-    update.timeCreated = armem::Time(armem::Duration::MilliSeconds(2000));
+    update.referencedTime = armem::Time(armem::Duration::MilliSeconds(2000));
     memory.update(update);
     BOOST_CHECK_EQUAL(entity.size(), 2);
-    BOOST_CHECK(entity.hasSnapshot(update.timeCreated));
-    BOOST_CHECK_EQUAL(entity.getSnapshot(update.timeCreated).size(), update.instancesData.size());
+    BOOST_CHECK(entity.hasSnapshot(update.referencedTime));
+    BOOST_CHECK_EQUAL(entity.getSnapshot(update.referencedTime).size(), update.instancesData.size());
 
 
     // A third update (on entity).
     update.instancesData = { std::make_shared<aron::data::Dict>() };
-    update.timeCreated = armem::Time(armem::Duration::MilliSeconds(3000));
+    update.referencedTime = armem::Time(armem::Duration::MilliSeconds(3000));
     entity.update(update);
     BOOST_CHECK_EQUAL(entity.size(), 3);
 
@@ -858,11 +858,11 @@ BOOST_AUTO_TEST_CASE(test_history_size_in_entity)
     update.entityID.entityName = entity.name();
 
     // With unlimited history.
-    update.timeCreated = armem::Time(armem::Duration::MilliSeconds(1000));
+    update.referencedTime = armem::Time(armem::Duration::MilliSeconds(1000));
     entity.update(update);
-    update.timeCreated = armem::Time(armem::Duration::MilliSeconds(2000));
+    update.referencedTime = armem::Time(armem::Duration::MilliSeconds(2000));
     entity.update(update);
-    update.timeCreated = armem::Time(armem::Duration::MilliSeconds(3000));
+    update.referencedTime = armem::Time(armem::Duration::MilliSeconds(3000));
     entity.update(update);
     BOOST_CHECK_EQUAL(entity.size(), 3);
 
@@ -874,7 +874,7 @@ BOOST_AUTO_TEST_CASE(test_history_size_in_entity)
     BOOST_CHECK(entity.hasSnapshot(armem::Time(armem::Duration::MilliSeconds(3000))));
 
 
-    update.timeCreated = armem::Time(armem::Duration::MilliSeconds(4000));
+    update.referencedTime = armem::Time(armem::Duration::MilliSeconds(4000));
     entity.update(update);
     BOOST_CHECK_EQUAL(entity.size(), 2);
     BOOST_CHECK(not entity.hasSnapshot(armem::Time(armem::Duration::MilliSeconds(2000))));
@@ -884,7 +884,7 @@ BOOST_AUTO_TEST_CASE(test_history_size_in_entity)
     // Disable maximum history size.
     entity.setMaxHistorySize(-1);
 
-    update.timeCreated = armem::Time(armem::Duration::MilliSeconds(5000));
+    update.referencedTime = armem::Time(armem::Duration::MilliSeconds(5000));
     entity.update(update);
     BOOST_CHECK_EQUAL(entity.size(), 3);
     BOOST_CHECK(entity.hasSnapshot(armem::Time(armem::Duration::MilliSeconds(3000))));
@@ -907,15 +907,15 @@ BOOST_AUTO_TEST_CASE(test_history_size_in_provider_segment)
     {
         update.entityID.entityName = name;
 
-        update.timeCreated = armem::Time(armem::Duration::MilliSeconds(1000));
+        update.referencedTime = armem::Time(armem::Duration::MilliSeconds(1000));
         providerSegment.update(update);
-        update.timeCreated = armem::Time(armem::Duration::MilliSeconds(2000));
+        update.referencedTime = armem::Time(armem::Duration::MilliSeconds(2000));
         providerSegment.update(update);
-        update.timeCreated = armem::Time(armem::Duration::MilliSeconds(3000));
+        update.referencedTime = armem::Time(armem::Duration::MilliSeconds(3000));
         providerSegment.update(update);
     }
     update.entityID.entityName = entityNames.back();
-    update.timeCreated = armem::Time(armem::Duration::MilliSeconds(4000));
+    update.referencedTime = armem::Time(armem::Duration::MilliSeconds(4000));
     providerSegment.update(update);
 
     BOOST_CHECK_EQUAL(providerSegment.getEntity("A").size(), 3);
@@ -939,11 +939,11 @@ BOOST_AUTO_TEST_CASE(test_history_size_in_provider_segment)
     providerSegment.setMaxHistorySize(2);
 
     update.entityID.entityName = "C";
-    update.timeCreated = armem::Time(armem::Duration::MilliSeconds(1000));
+    update.referencedTime = armem::Time(armem::Duration::MilliSeconds(1000));
     providerSegment.update(update);
-    update.timeCreated = armem::Time(armem::Duration::MilliSeconds(2000));
+    update.referencedTime = armem::Time(armem::Duration::MilliSeconds(2000));
     providerSegment.update(update);
-    update.timeCreated = armem::Time(armem::Duration::MilliSeconds(3000));
+    update.referencedTime = armem::Time(armem::Duration::MilliSeconds(3000));
     providerSegment.update(update);
 
     // Check correctly inherited history size.
@@ -958,7 +958,7 @@ BOOST_AUTO_TEST_CASE(test_history_size_in_provider_segment)
     for (const std::string& name : entityNames)
     {
         update.entityID.entityName = name;
-        update.timeCreated = armem::Time(armem::Duration::MilliSeconds(5000));
+        update.referencedTime = armem::Time(armem::Duration::MilliSeconds(5000));
         providerSegment.update(update);
         BOOST_CHECK_EQUAL(providerSegment.getEntity(name).getMaxHistorySize(), -1);
         BOOST_CHECK_EQUAL(providerSegment.getEntity(name).size(), 3);
diff --git a/source/RobotAPI/libraries/armem/test/ArMemForEachTest.cpp b/source/RobotAPI/libraries/armem/test/ArMemForEachTest.cpp
index f1b5b362318e577dda941c1dd8fff97dd3cf72d7..bf97734a52d7d9db9198101307270c23d8b07383 100644
--- a/source/RobotAPI/libraries/armem/test/ArMemForEachTest.cpp
+++ b/source/RobotAPI/libraries/armem/test/ArMemForEachTest.cpp
@@ -75,7 +75,7 @@ BOOST_AUTO_TEST_CASE(test_forEach)
 
                     EntityUpdate update;
                     update.entityID = eid;
-                    update.timeCreated = sid.timestamp;
+                    update.referencedTime = sid.timestamp;
                     for (size_t i = 0; i <= s; ++i)
                     {
                         const MemoryID iid = sid.withInstanceIndex(int(i));
diff --git a/source/RobotAPI/libraries/armem_grasping/server/KnownGraspProviderSegment.cpp b/source/RobotAPI/libraries/armem_grasping/server/KnownGraspProviderSegment.cpp
index e5c40a12dbb73b0cef3569eb12d80fb1980f95f2..00bd50a3d4721765f2287482bd31f09540d480a3 100644
--- a/source/RobotAPI/libraries/armem_grasping/server/KnownGraspProviderSegment.cpp
+++ b/source/RobotAPI/libraries/armem_grasping/server/KnownGraspProviderSegment.cpp
@@ -127,7 +127,7 @@ namespace armarx::armem::grasping::segment
             {
                 EntityUpdate& update = commit.add();
                 update.entityID = providerID.withEntityName(info.id().str());
-                update.entityID.timestamp = update.timeArrived = update.timeCreated = update.timeSent = now;
+                update.entityID.timestamp = update.arrivedTime = update.referencedTime = update.sentTime = now;
 
                 update.instancesData =
                 {
diff --git a/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp b/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp
index b9c789398b0d8ce5c6fb17e0c2cb44fb5bc5b531..4fdda00748d1201e84181c80e3054938c0143348 100644
--- a/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp
+++ b/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp
@@ -391,7 +391,7 @@ namespace armarx::armem::gui
                 entityUpdate.entityID = memId;
                 entityUpdate.confidence = 1.0;
                 entityUpdate.instancesData = {aron};
-                entityUpdate.timeCreated = now;
+                entityUpdate.referencedTime = now;
                 it->second.commit(comm);
             }
         }
diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
index e2d04e0449c190acacf502bb0b847d785e7f85cd..1c7a40faed6b57b15bcd0a4ddd8677b103e8670d 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
+++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
@@ -50,6 +50,7 @@ namespace armarx::armem::gui::instance
         treeItemMetadata->addChild(new QTreeWidgetItem({"Time Created"}));
         treeItemMetadata->addChild(new QTreeWidgetItem({"Time Sent"}));
         treeItemMetadata->addChild(new QTreeWidgetItem({"Time Arrived"}));
+        treeItemMetadata->addChild(new QTreeWidgetItem({"Time Last Accessed"}));
 
         QList<QTreeWidgetItem*> items = {treeItemInstanceID, treeItemMetadata};
         tree->insertTopLevelItems(0, items);
@@ -110,9 +111,10 @@ namespace armarx::armem::gui::instance
         std::vector<std::string> items =
         {
             std::to_string(metadata.confidence),
-            armem::toDateTimeMilliSeconds(metadata.timeCreated),
-            armem::toDateTimeMilliSeconds(metadata.timeSent),
-            armem::toDateTimeMilliSeconds(metadata.timeArrived)
+            armem::toDateTimeMilliSeconds(metadata.referencedTime),
+            armem::toDateTimeMilliSeconds(metadata.sentTime),
+            armem::toDateTimeMilliSeconds(metadata.arrivedTime),
+            armem::toDateTimeMilliSeconds(metadata.lastAccessedTime) + " (" + std::to_string(metadata.numAccessed) + " times total)"
         };
         ARMARX_CHECK_EQUAL(static_cast<size_t>(treeItemMetadata->childCount()), items.size());
         int i = 0;
diff --git a/source/RobotAPI/libraries/armem_laser_scans/client/common/Writer.cpp b/source/RobotAPI/libraries/armem_laser_scans/client/common/Writer.cpp
index 08f456b165d08e52c9c3ce0aed649aa96ec8f863..9a7aa7e5aa8a97032bd5ab9dcbe245b693a52cc3 100644
--- a/source/RobotAPI/libraries/armem_laser_scans/client/common/Writer.cpp
+++ b/source/RobotAPI/libraries/armem_laser_scans/client/common/Writer.cpp
@@ -83,7 +83,7 @@ namespace armarx::armem::laser_scans::client
         dict->addElement("scan", toAron(laserScan));
 
         update.instancesData = {dict};
-        update.timeCreated = timestamp;
+        update.referencedTime = timestamp;
 
         ARMARX_DEBUG << "Committing " << update << " at time " << timestamp;
         armem::EntityUpdateResult updateResult = memoryWriter.commit(update);
diff --git a/source/RobotAPI/libraries/armem_motions/server/MotionSegment.cpp b/source/RobotAPI/libraries/armem_motions/server/MotionSegment.cpp
index 8e9621c5a711816c2e84762d9a9d59f10f333f03..76c811b3f05438c5d880da647afc54eb461dd114 100644
--- a/source/RobotAPI/libraries/armem_motions/server/MotionSegment.cpp
+++ b/source/RobotAPI/libraries/armem_motions/server/MotionSegment.cpp
@@ -76,9 +76,9 @@ namespace armarx::armem::server::motions::mdb::segment
                     auto& snapshot = entity.addSnapshot(op->createdDate);
 
                     armem::wm::EntityInstance& instance = snapshot.addInstance();
-                    instance.metadata().timeCreated = op->createdDate;
-                    instance.metadata().timeSent = Time::Now();
-                    instance.metadata().timeArrived = Time::Now();
+                    instance.metadata().referencedTime = op->createdDate;
+                    instance.metadata().sentTime = Time::Now();
+                    instance.metadata().arrivedTime = Time::Now();
                     instance.metadata().confidence = 1.0;
                     instance.data() = op->toAron();
                 }
diff --git a/source/RobotAPI/libraries/armem_mps/server/MotionPrimitives/Segment.cpp b/source/RobotAPI/libraries/armem_mps/server/MotionPrimitives/Segment.cpp
index a45cd788ff673d0e5a9c78e5a92940d0d2daf3c9..23b68572384fb24b7b4f28729fe1041f60d8c307 100644
--- a/source/RobotAPI/libraries/armem_mps/server/MotionPrimitives/Segment.cpp
+++ b/source/RobotAPI/libraries/armem_mps/server/MotionPrimitives/Segment.cpp
@@ -87,9 +87,9 @@ namespace armarx::armem::server::motions::mps::segment
             ss << "Found valid instance at: " << pathToInfoJson << ". The motionID is: ";
 
             armem::wm::EntityInstance instance;
-            instance.metadata().timeCreated = armem::Time::Now();  //op->createdDate;
-            instance.metadata().timeSent = armem::Time::Now();
-            instance.metadata().timeArrived = armem::Time::Now();
+            instance.metadata().referencedTime = armem::Time::Now();  //op->createdDate;
+            instance.metadata().sentTime = armem::Time::Now();
+            instance.metadata().arrivedTime = armem::Time::Now();
             instance.metadata().confidence = 1.0;
 
             if(taskspace)
diff --git a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp
index fbce08b6323e1a1235bd000aadbd4e73ff6cbf8c..80c3168c5fc5e7c893c2813082171e5cd9c6319b 100644
--- a/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp
+++ b/source/RobotAPI/libraries/armem_objects/client/articulated_object/Writer.cpp
@@ -154,7 +154,7 @@ namespace armarx::armem::articulated_object
         toAron(aronArticulatedObjectDescription, obj.description);
 
         update.instancesData = {aronArticulatedObjectDescription.toAron()};
-        update.timeCreated   = timestamp;
+        update.referencedTime   = timestamp;
 
         ARMARX_DEBUG << "Committing " << update << " at time " << timestamp;
         armem::EntityUpdateResult updateResult = memoryWriter.commit(update);
@@ -233,7 +233,7 @@ namespace armarx::armem::articulated_object
         objectInstance.pose.objectID = cs;
 
         update.instancesData = {objectInstance.toAron()};
-        update.timeCreated   = timestamp;
+        update.referencedTime   = timestamp;
 
         ARMARX_DEBUG << "Committing " << update << " at time " << timestamp;
         armem::EntityUpdateResult updateResult = memoryWriter.commit(update);
diff --git a/source/RobotAPI/libraries/armem_objects/client/attachment/Writer.cpp b/source/RobotAPI/libraries/armem_objects/client/attachment/Writer.cpp
index 69f5806c2bb6dc4cbfae1f196d4f967c04ab9a12..9a59562ec531ce44644b4bda5ed2a8e9a0c6ac3e 100644
--- a/source/RobotAPI/libraries/armem_objects/client/attachment/Writer.cpp
+++ b/source/RobotAPI/libraries/armem_objects/client/attachment/Writer.cpp
@@ -82,7 +82,7 @@ namespace armarx::armem::attachment
         toAron(aronAttachment, attachment);
 
         update.instancesData = {aronAttachment.toAron()};
-        update.timeCreated   = timestamp;
+        update.referencedTime   = timestamp;
 
         ARMARX_DEBUG << "Committing " << update << " at time " << timestamp;
         armem::EntityUpdateResult updateResult = memoryWriter.commit(update);
@@ -126,7 +126,7 @@ namespace armarx::armem::attachment
         toAron(aronAttachment, attachment);
 
         update.instancesData = {aronAttachment.toAron()};
-        update.timeCreated   = timestamp;
+        update.referencedTime   = timestamp;
 
         ARMARX_DEBUG << "Committing " << update << " at time " << timestamp;
         armem::EntityUpdateResult updateResult = memoryWriter.commit(update);
diff --git a/source/RobotAPI/libraries/armem_objects/client/instance/ObjectWriter.cpp b/source/RobotAPI/libraries/armem_objects/client/instance/ObjectWriter.cpp
index 84b1e4613b8b4bbe8a72938949d503276500e407..8ee596b27069f82c9ff19d63efcd40e7cc819699 100644
--- a/source/RobotAPI/libraries/armem_objects/client/instance/ObjectWriter.cpp
+++ b/source/RobotAPI/libraries/armem_objects/client/instance/ObjectWriter.cpp
@@ -64,8 +64,8 @@ namespace armarx::armem::obj::instance
         e.entityID.coreSegmentName = properties.coreSegmentName;
         e.entityID.providerSegmentName = provider;
         e.entityID.entityName = inst.pose.objectID.dataset + "/" + inst.pose.objectID.className + "/" + inst.pose.objectID.instanceName;
-        e.timeCreated = t;
-        e.timeSent = armem::Time::Now();
+        e.referencedTime = t;
+        e.sentTime = armem::Time::Now();
         e.instancesData = { inst.toAron() };
 
         auto res = memoryWriter.commit(c);
diff --git a/source/RobotAPI/libraries/armem_objects/server/class/Segment.cpp b/source/RobotAPI/libraries/armem_objects/server/class/Segment.cpp
index 4dcf3262724cd6a9626a967f9582d4514a478d89..c841afc4dc6afe2629802871399944a0ef39da04 100644
--- a/source/RobotAPI/libraries/armem_objects/server/class/Segment.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/class/Segment.cpp
@@ -95,7 +95,7 @@ namespace armarx::armem::server::obj::clazz
 
             EntityUpdate& update = commit.add();
             update.entityID = providerID.withEntityName(info.id().str());
-            update.timeArrived = update.timeCreated = update.timeSent = now;
+            update.arrivedTime = update.referencedTime = update.sentTime = now;
 
             arondto::ObjectClass objectClass = objectClassFromInfo(info);
             update.instancesData =
diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp
index c17ce69020b2b7f2c363219339754919fc805723..b0726c001d978f7f98e5517e69248c6a9b4fd47f 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/Segment.cpp
@@ -335,8 +335,8 @@ namespace armarx::armem::server::obj::instance
                                             providerName.empty() ? pose.providerName : providerName);
 
             update.entityID = providerID.withEntityName(pose.objectID.str());
-            update.timeArrived = now;
-            update.timeCreated = pose.timestamp;
+            update.arrivedTime = now;
+            update.referencedTime = pose.timestamp;
             update.confidence = pose.confidence;
 
             arondto::ObjectInstance dto;
@@ -781,7 +781,7 @@ namespace armarx::armem::server::obj::instance
             armem::Commit commit;
             armem::EntityUpdate & update = commit.add();
             update.entityID = objectEntity->id();
-            update.timeCreated = now;
+            update.referencedTime = now;
             {
                 arondto::ObjectInstance updated = data;
                 toAron(updated.pose.attachment, info);
@@ -889,7 +889,7 @@ namespace armarx::armem::server::obj::instance
         armem::Commit commit;
         armem::EntityUpdate & update = commit.add();
         update.entityID = entity.id();
-        update.timeCreated = now;
+        update.referencedTime = now;
         {
             arondto::ObjectInstance updated;
             if (commitAttachedPose and data.pose.attachmentValid)
diff --git a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotWriter.cpp b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotWriter.cpp
index 579a335212beaeedcf61e2b77e279461345375f1..cfa84fb3f50ad95db2f82b29114cd2606250a2c4 100644
--- a/source/RobotAPI/libraries/armem_robot_state/client/common/RobotWriter.cpp
+++ b/source/RobotAPI/libraries/armem_robot_state/client/common/RobotWriter.cpp
@@ -85,7 +85,7 @@ namespace armarx::armem::robot_state
         toAron(aronDescription, description);
 
         update.instancesData = {aronDescription.toAron()};
-        update.timeCreated = timestamp;
+        update.referencedTime = timestamp;
 
         ARMARX_DEBUG << "Committing " << update << " at time " << timestamp;
         armem::EntityUpdateResult updateResult = memoryWriter.commit(update);
@@ -129,7 +129,7 @@ namespace armarx::armem::robot_state
         }
 
         update.instancesData = {aronTransform.toAron()};
-        update.timeCreated = timestamp;
+        update.referencedTime = timestamp;
 
         ARMARX_DEBUG << "Committing " << update << " at time " << timestamp;
         armem::EntityUpdateResult updateResult = memoryWriter.commit(update);
@@ -163,7 +163,7 @@ namespace armarx::armem::robot_state
         aronProprioception.joints.position = jointMap;
 
         update.instancesData = {aronProprioception.toAron()};
-        update.timeCreated = timestamp;
+        update.referencedTime = timestamp;
 
         ARMARX_DEBUG << "Committing " << update << " at time " << timestamp;
         armem::EntityUpdateResult updateResult = memoryWriter.commit(update);
diff --git a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.cpp b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.cpp
index 932f55b0a6ea2ff74762a62ffa74f88d0ff18422..9f93ae53156e0da1e126ed7cc922905eb2f0796b 100644
--- a/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.cpp
+++ b/source/RobotAPI/libraries/armem_robot_state/client/localization/TransformWriter.cpp
@@ -98,7 +98,7 @@ namespace armarx::armem::client::robot_state::localization
 
         armem::EntityUpdate update;
         update.entityID = entityID;
-        update.timeCreated = timestamp;
+        update.referencedTime = timestamp;
 
         arondto::Transform aronTransform;
         toAron(aronTransform, transform);
diff --git a/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp b/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp
index af2381c78d334e62ea39eb22978492ad66a32f1a..7a8f6ae0369050000b2a1b8f4df57ec4de4f050a 100644
--- a/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp
+++ b/source/RobotAPI/libraries/armem_robot_state/server/description/Segment.cpp
@@ -58,7 +58,7 @@ namespace armarx::armem::server::robot_state::description
 
         EntityUpdate update;
         update.entityID = providerID.withEntityName("description");
-        update.timeArrived = update.timeCreated = update.timeSent = now;
+        update.arrivedTime = update.referencedTime = update.sentTime = now;
 
         arondto::RobotDescription dto;
         robot::toAron(dto, robotDescription);
diff --git a/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp b/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp
index 3fbf097937386a7d4973b55a22f76419d3f5d5eb..a503bae532af41ee91809d394c22cd74f4aab071 100644
--- a/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp
+++ b/source/RobotAPI/libraries/armem_robot_state/server/localization/Segment.cpp
@@ -187,7 +187,7 @@ namespace armarx::armem::server::robot_state::localization
 
         EntityUpdate update;
         update.entityID = providerID.withEntityName(transform.header.parentFrame + "," + transform.header.frame);
-        update.timeArrived = update.timeCreated = update.timeSent = timestamp;
+        update.arrivedTime = update.referencedTime = update.sentTime = timestamp;
 
         arondto::Transform aronTransform;
         toAron(aronTransform, transform);
diff --git a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/RobotStateWriter.cpp b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/RobotStateWriter.cpp
index 847ec98c82966408545a50bf9d7fa93fc7081d9f..0c5ac1284fba2003474b9f885682de280a5b4403 100644
--- a/source/RobotAPI/libraries/armem_robot_state/server/proprioception/RobotStateWriter.cpp
+++ b/source/RobotAPI/libraries/armem_robot_state/server/proprioception/RobotStateWriter.cpp
@@ -159,7 +159,7 @@ namespace armarx::armem::server::robot_state::proprioception
             up.entityID = properties.robotUnitProviderID.withEntityName(
                 properties.robotUnitProviderID.providerSegmentName);
             up.entityID.coreSegmentName =::armarx::armem::robot_state::constants::proprioceptionCoreSegment;
-            up.timeCreated = data.timestamp;
+            up.referencedTime = data.timestamp;
             up.instancesData = {data.proprioception};
         }
 
@@ -169,7 +169,7 @@ namespace armarx::armem::server::robot_state::proprioception
             up.entityID = properties.robotUnitProviderID.withEntityName(
                 properties.robotUnitProviderID.providerSegmentName);
             up.entityID.coreSegmentName = ::armarx::armem::robot_state::constants::exteroceptionCoreSegment;
-            up.timeCreated = data.timestamp;
+            up.referencedTime = data.timestamp;
             up.instancesData = {data.exteroception};
         }
 
diff --git a/source/RobotAPI/libraries/armem_skills/server/segment/ExecutableSkillLibrarySegment.cpp b/source/RobotAPI/libraries/armem_skills/server/segment/ExecutableSkillLibrarySegment.cpp
index ec84a4f91658a5b5ed7c8a50416a1b634142a491..df0f6da140cce0cca44a8a25c1b5d70fa96aa8a4 100644
--- a/source/RobotAPI/libraries/armem_skills/server/segment/ExecutableSkillLibrarySegment.cpp
+++ b/source/RobotAPI/libraries/armem_skills/server/segment/ExecutableSkillLibrarySegment.cpp
@@ -49,7 +49,7 @@ namespace armarx::skills::segment
             armem::Commit commit;
             auto& entityUpdate = commit.add();
             entityUpdate.confidence = 1.0;
-            entityUpdate.timeCreated = armem::Time::Now();
+            entityUpdate.referencedTime = armem::Time::Now();
             entityUpdate.instancesData = {skillDescription.toAron()};
             entityUpdate.entityID = provId.withEntityName(skillDescription.skillName);
 
diff --git a/source/RobotAPI/libraries/armem_skills/server/segment/SkillEventSegment.cpp b/source/RobotAPI/libraries/armem_skills/server/segment/SkillEventSegment.cpp
index 51c72a4caa79ca48823dc06670d90989cf2c2d07..1fa0989e8938206462674f93d9646f48b065123f 100644
--- a/source/RobotAPI/libraries/armem_skills/server/segment/SkillEventSegment.cpp
+++ b/source/RobotAPI/libraries/armem_skills/server/segment/SkillEventSegment.cpp
@@ -54,7 +54,7 @@ namespace armarx::skills::segment
         armem::Commit comm;
         auto& entityUpdate = comm.add();
         entityUpdate.confidence = 1.0;
-        entityUpdate.timeCreated = armem::Time::Now();
+        entityUpdate.referencedTime = armem::Time::Now();
         entityUpdate.instancesData = { aron };
         entityUpdate.entityID = commitId;
 
diff --git a/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp b/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp
index f8333282e1c09b206ef8829cbda44c64bde470ec..818f3d13bb4315ebf69909c744c042b1ac268a39 100644
--- a/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp
+++ b/source/RobotAPI/libraries/armem_skills/server/segment/SkillExecutionRequestSegment.cpp
@@ -66,7 +66,7 @@ namespace armarx::skills::segment
             entityUpdate.entityID = skillExecutionMemID;
             entityUpdate.instancesData = { aron };
             entityUpdate.confidence = 1.0;
-            entityUpdate.timeCreated = armem::Time::Now();
+            entityUpdate.referencedTime = armem::Time::Now();
         }
 
         {
@@ -79,7 +79,7 @@ namespace armarx::skills::segment
             entityUpdate.entityID = skillExecutionMemID;
             entityUpdate.instancesData = { aron };
             entityUpdate.confidence = 1.0;
-            entityUpdate.timeCreated = armem::Time::Now();
+            entityUpdate.referencedTime = armem::Time::Now();
         }
 
 
diff --git a/source/RobotAPI/libraries/armem_skills/server/segment/StatechartListenerSegment.cpp b/source/RobotAPI/libraries/armem_skills/server/segment/StatechartListenerSegment.cpp
index 46629f7cd066751e6286cb38cb081f5442b6b869..b2c5a53472a39c9dcf02f65323ff189caa3ae7b6 100644
--- a/source/RobotAPI/libraries/armem_skills/server/segment/StatechartListenerSegment.cpp
+++ b/source/RobotAPI/libraries/armem_skills/server/segment/StatechartListenerSegment.cpp
@@ -31,7 +31,7 @@ namespace armarx::skills::segment
         armem::EntityUpdate update;
         update.entityID = segmentPtr->id().withEntityName(entityName);
 
-        update.timeCreated = transitionTime;
+        update.referencedTime = transitionTime;
         skills::arondto::Statechart::Transition data;
         armem::toAron(data, t);
         update.instancesData.push_back(data.toAron());
diff --git a/source/RobotAPI/libraries/armem_system_state/server/CPUSegment.cpp b/source/RobotAPI/libraries/armem_system_state/server/CPUSegment.cpp
index fa392c615789ffac9e8ae2b9fd70eda0052e6d27..9886fdbe2b73326ca8b614ab0ed039d52e4e2b6e 100644
--- a/source/RobotAPI/libraries/armem_system_state/server/CPUSegment.cpp
+++ b/source/RobotAPI/libraries/armem_system_state/server/CPUSegment.cpp
@@ -63,7 +63,7 @@ namespace armarx::armem::server::systemstate::segment
         EntityUpdate update;
         update.entityID = providerId.withEntityName("CurrentCpuLoad");
         update.confidence = 1.0;
-        update.timeCreated = armem::Time::Now();
+        update.referencedTime = armem::Time::Now();
         update.instancesData = { data };
 
         segmentPtr->update(update);
diff --git a/source/RobotAPI/libraries/armem_system_state/server/RAMSegment.cpp b/source/RobotAPI/libraries/armem_system_state/server/RAMSegment.cpp
index f02b8f4fa263687d52336012322ca640ecd84f1d..a201c4731c14a211cfb670608f8839acf19482d1 100644
--- a/source/RobotAPI/libraries/armem_system_state/server/RAMSegment.cpp
+++ b/source/RobotAPI/libraries/armem_system_state/server/RAMSegment.cpp
@@ -54,7 +54,7 @@ namespace armarx::armem::server::systemstate::segment
         EntityUpdate update;
         update.entityID = providerId.withEntityName("CurrentMemoryLoad");
         update.confidence = 1.0;
-        update.timeCreated = armem::Time::Now();
+        update.referencedTime = armem::Time::Now();
         update.instancesData = { data };
 
         segmentPtr->update(update);
diff --git a/source/RobotAPI/libraries/armem_vision/client/laser_scanner_features/Writer.cpp b/source/RobotAPI/libraries/armem_vision/client/laser_scanner_features/Writer.cpp
index 0b24561dd5507efeef77793a5285b5a3eb2b00c9..8ae7ba4379288420d3578d7f30ae9bc9c58c559d 100644
--- a/source/RobotAPI/libraries/armem_vision/client/laser_scanner_features/Writer.cpp
+++ b/source/RobotAPI/libraries/armem_vision/client/laser_scanner_features/Writer.cpp
@@ -91,7 +91,7 @@ namespace armarx::armem::vision::laser_scanner_features::client
         ARMARX_TRACE;
 
         update.instancesData = {dto.toAron()};
-        update.timeCreated = timestamp;
+        update.referencedTime = timestamp;
 
         ARMARX_DEBUG << "Committing " << update << " at time " << timestamp;
 
diff --git a/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.cpp b/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.cpp
index e781a2582e511b59f3ebefe9cde4a35d425da60a..a682162553005783d3ad74e42d78bffefbc09ae2 100644
--- a/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.cpp
+++ b/source/RobotAPI/libraries/armem_vision/client/occupancy_grid/Writer.cpp
@@ -41,7 +41,7 @@ namespace armarx::armem::vision::occupancy_grid::client
         dict->addElement("grid", toAron(grid.grid));
 
         update.instancesData = {dict};
-        update.timeCreated   = iceTimestamp;
+        update.referencedTime   = iceTimestamp;
 
         ARMARX_DEBUG << "Committing " << update << " at time " << iceTimestamp;
         armem::EntityUpdateResult updateResult = memoryWriter().commit(update);