diff --git a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp
index 5e95d6cb264a63600214ce0ec384e4b5dc0131bf..781eed48ee2c236444b4480065f51f246a797f2a 100644
--- a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp
+++ b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.cpp
@@ -49,6 +49,7 @@ namespace armarx::armem::server::obj
         memory.name() = defaultMemoryName;
         defs->optional(memory.name(), prefix + "MemoryName", "Name of this memory server.");
 
+        classSegment.defineProperties(defs, prefix + "cls.");
         instance::SegmentAdapter::defineProperties(defs, prefix + "inst.");
 
         return defs;
@@ -56,7 +57,8 @@ namespace armarx::armem::server::obj
 
     ObjectMemory::ObjectMemory() :
         server::ComponentPluginUser(),
-        instance::SegmentAdapter(server::ComponentPluginUser::iceMemory, server::ComponentPluginUser::memoryMutex)
+        instance::SegmentAdapter(server::ComponentPluginUser::iceMemory, server::ComponentPluginUser::memoryMutex),
+        classSegment(server::ComponentPluginUser::iceMemory)
     {
     }
 
@@ -70,6 +72,23 @@ namespace armarx::armem::server::obj
         memory.name() = defaultMemoryName;
 
         instance::SegmentAdapter::init();
+
+        try
+        {
+            classSegment.init();
+        }
+        catch (const LocalException& e)
+        {
+            ARMARX_ERROR << "Failed to init class segment. Reason: \n" << e.what();
+        }
+        catch (const std::exception& e)
+        {
+            ARMARX_ERROR << "Failed to init class segment. Reason: \n" << e.what();
+        }
+        catch (...)
+        {
+            ARMARX_ERROR << "Failed to init class segment for unknown reason.";
+        }
     }
 
     void ObjectMemory::onConnectComponent()
diff --git a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.h b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.h
index 52062816fbdf18079bba724d2a025d9ee0f55e8d..0a53588c1e3fa4f5ceef174620628611eaddc3f1 100644
--- a/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.h
+++ b/source/RobotAPI/components/armem/server/ObjectMemory/ObjectMemory.h
@@ -22,6 +22,7 @@
 
 #pragma once
 
+#include <memory>
 #include <mutex>
 
 #include <VirtualRobot/VirtualRobot.h>
@@ -30,11 +31,14 @@
 
 #include <RobotAPI/interface/armem/server/ObjectMemoryInterface.h>
 
-#include <RobotAPI/libraries/armem/server/ComponentPlugin.h>
-#include <RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.h>
 #include <RobotAPI/libraries/RobotAPIComponentPlugins/ArVizComponentPlugin.h>
 #include <RobotAPI/libraries/RobotAPIComponentPlugins/RobotStateComponentPlugin.h>
 
+#include <RobotAPI/libraries/armem/server/ComponentPlugin.h>
+
+#include <RobotAPI/libraries/armem_objects/server/class/Segment.h>
+#include <RobotAPI/libraries/armem_objects/server/instance/SegmentAdapter.h>
+
 
 #define ICE_CURRENT_ARG const Ice::Current& = Ice::emptyCurrent
 
@@ -105,6 +109,9 @@ namespace armarx::armem::server::obj
         VirtualRobot::RobotPtr robot;
 
 
+        clazz::Segment classSegment;
+
+
         struct RemoteGuiTab : armarx::RemoteGui::Client::Tab
         {
             instance::SegmentAdapter::RemoteGui instance;