diff --git a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp
index cf4181bd6796bfe105e123c18872cbbcef7155d4..77943d887c6833b87a730b1ce45b926273795ad2 100644
--- a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp
+++ b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.cpp
@@ -36,24 +36,17 @@
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 #include <ArmarXCore/core/logging/Logging.h>
 #include <ArmarXCore/core/services/tasks/PeriodicTask.h>
-#include <ArmarXCore/core/system/ArmarXDataPath.h>
 #include <ArmarXCore/core/time/CycleUtil.h>
 
-#include <RobotAPI/libraries/armem/client/query/Builder.h>
-#include <RobotAPI/libraries/armem/client/query/query_fns.h>
 #include <RobotAPI/libraries/armem/core/Time.h>
-#include <RobotAPI/libraries/armem/core/wm/ice_conversions.h>
-#include <RobotAPI/libraries/armem/server/MemoryRemoteGui.h>
 #include <RobotAPI/libraries/armem_objects/types.h>
 
 namespace armarx::articulated_object
 {
-    ArticulatedObjectLocalizerExample::ArticulatedObjectLocalizerExample() :
-        articulatedObjectWriter(
-            new ::armarx::armem::articulated_object::ArticulatedObjectWriter(memoryNameSystem())),
-        articulatedObjectReader(
-            new ::armarx::armem::articulated_object::ArticulatedObjectReader(memoryNameSystem()))
+    ArticulatedObjectLocalizerExample::ArticulatedObjectLocalizerExample()
     {
+        addPlugin(articulatedObjectReaderPlugin);
+        addPlugin(articulatedObjectWriterPlugin);
     }
 
     armarx::PropertyDefinitionsPtr
@@ -69,9 +62,6 @@ namespace armarx::articulated_object
         defs->optional(p.obj.dataset, "p.obj.dataset", "");
         defs->optional(p.obj.className, "p.obj.class", "");
 
-        // Reader will override some properties of writer.
-        articulatedObjectWriter->registerPropertyDefinitions(defs);
-        articulatedObjectReader->registerPropertyDefinitions(defs);
 
         return defs;
     }
@@ -85,16 +75,16 @@ namespace armarx::articulated_object
     void
     ArticulatedObjectLocalizerExample::onInitComponent()
     {
+        auto& articulatedObjectReader = articulatedObjectReaderPlugin->get();
+        auto& articulatedObjectWriter = articulatedObjectWriterPlugin->get();
+        
         // Reader overwrote property registered property of articulatedObjectWriter.
-        articulatedObjectWriter->setProviderName(articulatedObjectReader->getProviderName());
+        articulatedObjectWriter.setProviderName(articulatedObjectReader.getProviderName());
     }
 
     void
     ArticulatedObjectLocalizerExample::onConnectComponent()
     {
-        articulatedObjectWriter->connect();
-        articulatedObjectReader->connect();
-
         ARMARX_IMPORTANT << "Running example.";
         start = armem::Time::Now();
 
@@ -119,9 +109,11 @@ namespace armarx::articulated_object
     VirtualRobot::RobotPtr
     ArticulatedObjectLocalizerExample::createArticulatedObject()
     {
+        auto& articulatedObjectReader = articulatedObjectReaderPlugin->get();
+        
         const std::string dishwasherName = p.obj.dataset + "/" + p.obj.className;
 
-        const auto descriptions = articulatedObjectReader->queryDescriptions(armem::Time::Now());
+        const auto descriptions = articulatedObjectReader.queryDescriptions(armem::Time::Now());
 
         ARMARX_INFO << "Found " << descriptions.size() << " articulated object descriptions";
 
@@ -190,7 +182,8 @@ namespace armarx::articulated_object
         articulatedObject->setGlobalPose(simox::math::pose(Eigen::Vector3f(1000, 0, 0)));
         articulatedObject->setJointValues(jointValues);
 
-        articulatedObjectWriter->storeArticulatedObject(articulatedObject, now);
+        auto& articulatedObjectWriter = articulatedObjectWriterPlugin->get();
+        articulatedObjectWriter.storeArticulatedObject(articulatedObject, now);
     }
 
 } // namespace armarx::articulated_object
diff --git a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.h b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.h
index 603462ee4d374082b9d3515aa3ad8bc59038d88b..384068048dd1ab8d1457065d15873de08ff7b82b 100644
--- a/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.h
+++ b/source/RobotAPI/components/ArticulatedObjectLocalizerExample/ArticulatedObjectLocalizerExample.h
@@ -3,18 +3,19 @@
 
 #include <VirtualRobot/VirtualRobot.h>
 
-#include <ArmarXCore/core/services/tasks/PeriodicTask.h>
 #include <ArmarXCore/core/Component.h>
+#include <ArmarXCore/core/services/tasks/PeriodicTask.h>
 #include <ArmarXCore/interface/observers/ObserverInterface.h>
 #include <ArmarXCore/util/tasks.h>
 
 #include <ArmarXGui/libraries/ArmarXGuiComponentPlugins/LightweightRemoteGuiComponentPlugin.h>
 
 #include "RobotAPI/libraries/ArmarXObjects/ObjectID.h"
-#include <RobotAPI/libraries/armem/core/Time.h>
+#include "RobotAPI/libraries/armem/client/plugins/ReaderWriterPlugin.h"
 #include <RobotAPI/interface/armem/mns/MemoryNameSystemInterface.h>
 #include <RobotAPI/interface/armem/server/MemoryInterface.h>
 #include <RobotAPI/libraries/armem/client/plugins.h>
+#include <RobotAPI/libraries/armem/core/Time.h>
 #include <RobotAPI/libraries/armem/core/wm/memory_definitions.h>
 #include <RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectReader.h>
 #include <RobotAPI/libraries/armem_objects/client/articulated_object/ArticulatedObjectWriter.h>
@@ -64,9 +65,13 @@ namespace armarx::articulated_object
 
         armarx::DebugObserverInterfacePrx debugObserver;
 
-        std::unique_ptr<::armarx::armem::articulated_object::ArticulatedObjectWriter> articulatedObjectWriter;
-        std::unique_ptr<::armarx::armem::articulated_object::ArticulatedObjectReader>
-        articulatedObjectReader;
+        armem::client::plugins::ReaderWriterPlugin<
+            ::armarx::armem::articulated_object::ArticulatedObjectWriter>*
+            articulatedObjectWriterPlugin = nullptr;
+            
+        armem::client::plugins::ReaderWriterPlugin<
+            ::armarx::armem::articulated_object::ArticulatedObjectReader>*
+            articulatedObjectReaderPlugin = nullptr;
 
         struct Properties
         {