diff --git a/source/RobotAPI/libraries/armem/client/util/SimpleReaderBase.cpp b/source/RobotAPI/libraries/armem/client/util/SimpleReaderBase.cpp
index 6c3afb9a2adcc3f08495bc8c979d33ebc11742f2..ce25109502b1da09cb01399396a5c7bca92ed50f 100644
--- a/source/RobotAPI/libraries/armem/client/util/SimpleReaderBase.cpp
+++ b/source/RobotAPI/libraries/armem/client/util/SimpleReaderBase.cpp
@@ -1,14 +1,18 @@
 #include "SimpleReaderBase.h"
 
-#include "RobotAPI/libraries/armem/client/ComponentPlugin.h"
+#include <RobotAPI/libraries/armem/core/error.h>
+#include <RobotAPI/libraries/armem/client/MemoryNameSystem.h>
+
 
 namespace armarx::armem::client::util
 {
-    SimpleReaderBase::SimpleReaderBase(ComponentPluginUser& memoryClient) :
-        component(memoryClient)
+
+    SimpleReaderBase::SimpleReaderBase(MemoryNameSystem& memoryNameSystem) :
+        memoryNameSystem(memoryNameSystem)
     {
     }
 
+
     void SimpleReaderBase::registerPropertyDefinitions(
         armarx::PropertyDefinitionsPtr& def)
     {
@@ -20,36 +24,40 @@ namespace armarx::armem::client::util
         def->optional(props.coreSegmentName, prefix + "CoreSegment");
     }
 
+
     void SimpleReaderBase::connect()
     {
         // Wait for the memory to become available and add it as dependency.
-        ARMARX_IMPORTANT << "Writer: Waiting for memory '" << props.memoryName
+        ARMARX_IMPORTANT << "SimpleReaderBase: Waiting for memory '" << props.memoryName
                          << "' ...";
-        auto result = component.useMemory(props.memoryName);
-        if (not result.success)
+        try
+        {
+            memoryReaderClient = memoryNameSystem.useReader(MemoryID().withMemoryName(props.memoryName));
+            ARMARX_IMPORTANT << "SimpleReaderBase: Connected to memory '" << props.memoryName << "'";
+        }
+        catch (const armem::error::CouldNotResolveMemoryServer& e)
         {
-            ARMARX_ERROR << result.errorMessage;
+            ARMARX_ERROR << e.what();
             return;
         }
-
-        ARMARX_IMPORTANT << "SimpleReaderBase: Connected to memory '"
-                         << props.memoryName;
-
-        memoryReaderClient.setReadingMemory(result.proxy);
     }
 
+
     std::mutex& SimpleReaderBase::memoryReaderMutex()
     {
         return memoryMutex;
     }
 
+
     const armem::client::Reader& SimpleReaderBase::memoryReader() const
     {
         return memoryReaderClient;
     }
 
+
     const SimpleReaderBase::Properties& SimpleReaderBase::properties() const
     {
         return props;
     }
-} // namespace armarx::armem::client::util
\ No newline at end of file
+
+} // namespace armarx::armem::client::util
diff --git a/source/RobotAPI/libraries/armem/client/util/SimpleReaderBase.h b/source/RobotAPI/libraries/armem/client/util/SimpleReaderBase.h
index 4e2c8edf24d8b99362e81225b439f1ea7ed56522..a78db401d3f578d7be9f9c86542a37f72326aabc 100644
--- a/source/RobotAPI/libraries/armem/client/util/SimpleReaderBase.h
+++ b/source/RobotAPI/libraries/armem/client/util/SimpleReaderBase.h
@@ -23,14 +23,14 @@
 
 #include <mutex>
 
-#include "ArmarXCore/core/application/properties/PropertyDefinitionContainer.h"
+#include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h>
 
-#include "RobotAPI/libraries/armem/client/Reader.h"
+#include <RobotAPI/libraries/armem/client/Reader.h>
 
 
 namespace armarx::armem::client
 {
-    class ComponentPluginUser;
+    class MemoryNameSystem;
 }
 
 namespace armarx::armem::client::util
@@ -39,13 +39,16 @@ namespace armarx::armem::client::util
     class SimpleReaderBase
     {
     public:
-        SimpleReaderBase(ComponentPluginUser& memoryClient);
+
+        SimpleReaderBase(MemoryNameSystem& memoryNameSystem);
         virtual ~SimpleReaderBase() = default;
 
         void registerPropertyDefinitions(armarx::PropertyDefinitionsPtr& def);
         void connect();
 
+
     protected:
+
         // Properties
         struct Properties
         {
@@ -61,13 +64,15 @@ namespace armarx::armem::client::util
         std::mutex& memoryReaderMutex();
         const armem::client::Reader& memoryReader() const;
 
+
     private:
+
         Properties props;
 
         armem::client::Reader memoryReaderClient;
         std::mutex memoryMutex;
 
-        ComponentPluginUser& component;
+        MemoryNameSystem& memoryNameSystem;
     };
 
 } // namespace armarx::armem::client::util
diff --git a/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.cpp b/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.cpp
index a7ac78e00496cf890b97f11523f200c5fc9c3ab3..ca399bf8f64a2fd347d17c31587d33639cded032 100644
--- a/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.cpp
+++ b/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.cpp
@@ -1,14 +1,17 @@
 #include "SimpleWriterBase.h"
 
-#include "RobotAPI/libraries/armem/client/ComponentPlugin.h"
+#include <RobotAPI/libraries/armem/core/error.h>
+#include <RobotAPI/libraries/armem/client/MemoryNameSystem.h>
+
 
 namespace armarx::armem::client::util
 {
-    SimpleWriterBase::SimpleWriterBase(ComponentPluginUser& component) :
-        component(component)
+    SimpleWriterBase::SimpleWriterBase(MemoryNameSystem& memoryNameSystem) :
+        memoryNameSystem(memoryNameSystem)
     {
     }
 
+
     void
     SimpleWriterBase::registerPropertyDefinitions(armarx::PropertyDefinitionsPtr& def)
     {
@@ -26,36 +29,40 @@ namespace armarx::armem::client::util
                       "Name of this provider");
     }
 
+
     void SimpleWriterBase::connect()
     {
         // Wait for the memory to become available and add it as dependency.
         ARMARX_IMPORTANT << "SimpleWriterBase: Waiting for memory '"
                          << props.memoryName << "' ...";
-        auto result = component.useMemory(props.memoryName);
-        if (not result.success)
+        try
         {
-            ARMARX_ERROR << result.errorMessage;
+            memoryWriterClient = memoryNameSystem.useWriter(MemoryID().withMemoryName(props.memoryName));
+            ARMARX_IMPORTANT << "SimpleWriterBase: Connected to memory '" << props.memoryName << "'";
+        }
+        catch (const armem::error::CouldNotResolveMemoryServer& e)
+        {
+            ARMARX_ERROR << e.what();
             return;
         }
-
-        ARMARX_IMPORTANT << "SimpleWriterBase: Connected to memory '"
-                         << props.memoryName;
-
-        memoryWriterClient.setWritingMemory(result.proxy);
-        // memoryReader.setReadingMemory(result.proxy);
     }
 
+
     std::mutex& SimpleWriterBase::memoryWriterMutex()
     {
         return memoryMutex;
     }
 
+
     armem::client::Writer& SimpleWriterBase::memoryWriter()
     {
         return memoryWriterClient;
     }
+
+
     const SimpleWriterBase::Properties& SimpleWriterBase::properties() const
     {
         return props;
     }
-} // namespace armarx::armem::client::util
\ No newline at end of file
+
+} // namespace armarx::armem::client::util
diff --git a/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.h b/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.h
index 55829b2c7bbc3dc5e9758156ad7c4f7e14956db1..1413299a3081f36dfaa83cce425c50994e7018c2 100644
--- a/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.h
+++ b/source/RobotAPI/libraries/armem/client/util/SimpleWriterBase.h
@@ -23,15 +23,14 @@
 
 #include <mutex>
 
-#include "ArmarXCore/core/application/properties/PropertyDefinitionContainer.h"
+#include <ArmarXCore/core/application/properties/PropertyDefinitionContainer.h>
 
-// #include "RobotAPI/libraries/armem/client/Reader.h"
-#include "RobotAPI/libraries/armem/client/Writer.h"
+#include <RobotAPI/libraries/armem/client/Writer.h>
 
 
 namespace armarx::armem::client
 {
-    class ComponentPluginUser;
+    class MemoryNameSystem;
 }
 
 namespace armarx::armem::client::util
@@ -40,15 +39,15 @@ namespace armarx::armem::client::util
     class SimpleWriterBase
     {
     public:
-        SimpleWriterBase(ComponentPluginUser& component);
+
+        SimpleWriterBase(MemoryNameSystem& memoryNameSystem);
         virtual ~SimpleWriterBase() = default;
 
         void registerPropertyDefinitions(armarx::PropertyDefinitionsPtr& def);
         void connect();
 
+
     protected:
-        std::mutex& memoryWriterMutex();
-        armem::client::Writer& memoryWriter();
 
         struct Properties
         {
@@ -62,16 +61,19 @@ namespace armarx::armem::client::util
         virtual std::string propertyPrefix() const   = 0;
         virtual Properties defaultProperties() const = 0;
 
+        std::mutex& memoryWriterMutex();
+        armem::client::Writer& memoryWriter();
+
+
     private:
+
         Properties props;
 
         armem::client::Writer memoryWriterClient;
         std::mutex memoryMutex;
 
-        // armem::client::Reader memoryReader;
-        // std::mutex memoryReaderMutex;
+        MemoryNameSystem& memoryNameSystem;
 
-        ComponentPluginUser& component;
     };
 
-} // namespace armarx::armem::client::util
\ No newline at end of file
+} // namespace armarx::armem::client::util