diff --git a/source/RobotAPI/libraries/armem/core/base/MemoryBase.h b/source/RobotAPI/libraries/armem/core/base/MemoryBase.h
index 69cd01fc128338e3d251a2ca99e54849c962dc9e..5fe6f875a7adb42db1b5d4ff49adb5c842e2fb6d 100644
--- a/source/RobotAPI/libraries/armem/core/base/MemoryBase.h
+++ b/source/RobotAPI/libraries/armem/core/base/MemoryBase.h
@@ -238,7 +238,7 @@ namespace armarx::armem::base
          * @param update The update.
          * @return The resulting entity snapshot's ID.
          */
-        UpdateResult update(const EntityUpdate& update)
+        virtual UpdateResult update(const EntityUpdate& update)
         {
             this->_checkContainerName(update.entityID.memoryName, this->name());
 
diff --git a/source/RobotAPI/libraries/armem/core/workingmemory/Memory.cpp b/source/RobotAPI/libraries/armem/core/workingmemory/Memory.cpp
index 3d2efd2249f969308b126608d01533500f3bfa73..623858a440abfae4e3281bad5eba644cafd44678 100644
--- a/source/RobotAPI/libraries/armem/core/workingmemory/Memory.cpp
+++ b/source/RobotAPI/libraries/armem/core/workingmemory/Memory.cpp
@@ -3,6 +3,28 @@
 
 namespace armarx::armem::wm
 {
+
+    Memory::Base::UpdateResult Memory::update(const EntityUpdate& update)
+    {
+        this->_checkContainerName(update.entityID.memoryName, this->name());
+
+        auto it = this->_container.find(update.entityID.coreSegmentName);
+        if (it != this->_container.end())
+        {
+            Base::UpdateResult ret;
+            {
+                std::scoped_lock lock(it->second.mutex());
+                ret = it->second.update(update);
+            }
+            ret.memoryUpdateType = UpdateType::UpdatedExisting;
+            return ret;
+        }
+        else
+        {
+            throw armem::error::MissingEntry::create<CoreSegment>(update.entityID.coreSegmentName, *this);
+        }
+    }
+
     Commit Memory::toCommit() const
     {
         Commit c;
diff --git a/source/RobotAPI/libraries/armem/core/workingmemory/Memory.h b/source/RobotAPI/libraries/armem/core/workingmemory/Memory.h
index 3c64c0841b46a5c95f7f7365af26a1b20226f4dc..b2db9f7bc61aa18b0169a1e4f622d6dc5251ae33 100644
--- a/source/RobotAPI/libraries/armem/core/workingmemory/Memory.h
+++ b/source/RobotAPI/libraries/armem/core/workingmemory/Memory.h
@@ -27,6 +27,10 @@ namespace armarx::armem::wm
         Memory& operator=(const Memory& other) = default;
         Memory& operator=(Memory&& other) = default;
 
+
+        virtual Base::UpdateResult update(const EntityUpdate& update) override;
+
+
         /**
          * @brief Convert the content of this memory into a commit
          * @return The resulting commit