diff --git a/source/RobotAPI/gui-plugins/ArMemMemoryViewer/ArMemMemoryViewerWidget.ui b/source/RobotAPI/gui-plugins/ArMemMemoryViewer/ArMemMemoryViewerWidget.ui
index 3e94dc5e5c3e13bd866c92c428f5d619317806ac..819331b5f27f58c036bb867e8a17dda8a0c8b977 100644
--- a/source/RobotAPI/gui-plugins/ArMemMemoryViewer/ArMemMemoryViewerWidget.ui
+++ b/source/RobotAPI/gui-plugins/ArMemMemoryViewer/ArMemMemoryViewerWidget.ui
@@ -15,39 +15,43 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <layout class="QHBoxLayout" name="ltmControlWidgetLayout">
-     <property name="spacing">
-      <number>6</number>
-     </property>
+    <layout class="QHBoxLayout" name="topRowLayout">
      <item>
-      <spacer name="horizontalSpacer_2">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
+      <layout class="QHBoxLayout" name="updateWidgetLayout">
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
      </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="updateWidgetLayout">
      <item>
-      <spacer name="horizontalSpacer">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
+      <layout class="QHBoxLayout" name="ltmControlWidgetLayout">
+       <property name="spacing">
+        <number>6</number>
        </property>
-      </spacer>
+       <item>
+        <spacer name="horizontalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>40</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+      </layout>
      </item>
     </layout>
    </item>
diff --git a/source/RobotAPI/gui-plugins/ArMemMemoryViewer/ArMemMemoryViewerWidgetController.cpp b/source/RobotAPI/gui-plugins/ArMemMemoryViewer/ArMemMemoryViewerWidgetController.cpp
index f313b6951c2f201251787ec6a6e6b4b5b0026e4c..83d1d8743a3b6ed0ebfeca5c704c96334b22108a 100644
--- a/source/RobotAPI/gui-plugins/ArMemMemoryViewer/ArMemMemoryViewerWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/ArMemMemoryViewer/ArMemMemoryViewerWidgetController.cpp
@@ -41,9 +41,9 @@ namespace armarx
         widget.setupUi(getWidget());
 
         viewer = std::make_unique<MemoryViewer>(
-                     widget.ltmControlWidgetLayout,
 
                      widget.updateWidgetLayout,
+                     widget.ltmControlWidgetLayout,
 
                      widget.memoryGroupBox,
                      widget.treesLayout,
diff --git a/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp b/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp
index 3f40956a61149b1aca6af0b0fa2a9c3f129a18da..447b35332a60a3442b63e07a2c5e129b5b7b83d1 100644
--- a/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp
+++ b/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp
@@ -27,36 +27,43 @@
 namespace armarx::armem::gui
 {
     MemoryViewer::MemoryViewer(
-        QBoxLayout* ltmControlWidgetLayout,
         QBoxLayout* updateWidgetLayout,
-        QGroupBox* _memoryGroupBox, QLayout* memoryGroupBoxParentLayout,
-        QGroupBox* _instanceGroupBox, QLayout* instanceGroupBoxParentLayout,
-        QLabel* statusLabel)
+        QBoxLayout* ltmControlWidgetLayout,
+        QGroupBox* memoryGroupBox, QLayout* memoryGroupBoxParentLayout,
+        QGroupBox* instanceGroupBox, QLayout* instanceGroupBoxParentLayout,
+        QLabel* statusLabel
+    )
     {
         Logging::setTag("MemoryViewer");
 
         this->statusLabel = statusLabel;
         this->statusLabel->clear();
 
-        // LTM Control
-        this->ltmControlWidgetLayout = ltmControlWidgetLayout;
-        ltmControlWidget = new armem::gui::LTMControlWidget();
-        ltmControlWidgetLayout->insertWidget(0, ltmControlWidget);
-
         // Update timer
         this->updateWidgetLayout = updateWidgetLayout;
         updateWidget = new armem::gui::PeriodicUpdateWidget(2.0, 60);
         updateWidgetLayout->insertWidget(0, updateWidget);
 
+        // LTM Control
+        if (ltmControlWidgetLayout)
+        {
+            this->ltmControlWidgetLayout = ltmControlWidgetLayout;
+            ltmControlWidget = new armem::gui::LTMControlWidget();
+            ltmControlWidgetLayout->addWidget(ltmControlWidget);
+        }
+
+        // Memory View
         memoryGroup = new armem::gui::MemoryGroupBox();
-        armarx::gui::replaceWidget(_memoryGroupBox, memoryGroup, memoryGroupBoxParentLayout);
-        ARMARX_CHECK_NULL(_memoryGroupBox);
+        armarx::gui::replaceWidget(memoryGroupBox, memoryGroup, memoryGroupBoxParentLayout);
+        ARMARX_CHECK_NULL(memoryGroupBox);
 
+        // Instance View
         this->instanceGroup = new armem::gui::InstanceGroupBox();
-        armarx::gui::replaceWidget(_instanceGroupBox, instanceGroup, instanceGroupBoxParentLayout);
+        armarx::gui::replaceWidget(instanceGroupBox, instanceGroup, instanceGroupBoxParentLayout);
         this->instanceGroup->setStatusLabel(statusLabel);
-        ARMARX_CHECK_NULL(_instanceGroupBox);
+        ARMARX_CHECK_NULL(instanceGroupBox);
 
+        // Connections
         //connect(this, &This::connected, this, &This::updateMemory);
 
         connect(ltmControlWidget, &armem::gui::LTMControlWidget::store, this, &This::store);
diff --git a/source/RobotAPI/libraries/armem_gui/MemoryViewer.h b/source/RobotAPI/libraries/armem_gui/MemoryViewer.h
index c2c2e6f4c7d251f23f19cb2f7275878940a603d5..19ab5000d9d662080b80e621144650fd887a0bcd 100644
--- a/source/RobotAPI/libraries/armem_gui/MemoryViewer.h
+++ b/source/RobotAPI/libraries/armem_gui/MemoryViewer.h
@@ -44,10 +44,10 @@ namespace armarx::armem::gui
     public:
 
         MemoryViewer(
-            QBoxLayout* ltmControlWidgetLayout,
             QBoxLayout* updateWidgetLayout,
-            QGroupBox* _memoryGroupBox, QLayout* memoryGroupBoxParentLayout,
-            QGroupBox* _instanceGroupBox, QLayout* instanceGroupBoxParentLayout,
+            QBoxLayout* ltmControlWidgetLayout,
+            QGroupBox* memoryGroupBox, QLayout* memoryGroupBoxParentLayout,
+            QGroupBox* instanceGroupBox, QLayout* instanceGroupBoxParentLayout,
             QLabel* statusLabel
         );
 
@@ -106,15 +106,15 @@ namespace armarx::armem::gui
         std::map<std::string, armem::client::Reader> memoryReaders;
         std::map<std::string, std::optional<armem::wm::Memory>> memoryData;
 
-        QLayout* ltmControlWidgetLayout;
-        armem::gui::LTMControlWidget* ltmControlWidget;
+        QLayout* updateWidgetLayout = nullptr;
+        armem::gui::PeriodicUpdateWidget* updateWidget = nullptr;
 
-        QLayout* updateWidgetLayout;
-        armem::gui::PeriodicUpdateWidget* updateWidget;
+        QLayout* ltmControlWidgetLayout = nullptr;
+        armem::gui::LTMControlWidget* ltmControlWidget = nullptr;
 
-        armem::gui::MemoryGroupBox* memoryGroup;
+        armem::gui::MemoryGroupBox* memoryGroup = nullptr;
 
-        armem::gui::InstanceGroupBox* instanceGroup;
+        armem::gui::InstanceGroupBox* instanceGroup = nullptr;
 
         QLabel* statusLabel = nullptr;
 
diff --git a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp
index 3d4c50f66c6263ec474acd552233b86f895a7862..a410033a4dcdda6b0e17f0de7ab35e4f9a044f12 100644
--- a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp
+++ b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp
@@ -74,7 +74,7 @@ namespace armarx::armem::gui::memory
         });
         workingmemoryCoreSegmentBuilder.setUpdateItemFn([this](const std::string&, const wm::CoreSegment & coreSeg, QTreeWidgetItem * coreSegItem)
         {
-            updateTypedContainerItem(coreSeg, coreSegItem);
+            updateContainerItem(coreSeg, coreSegItem);
             updateChildren(coreSeg, coreSegItem);
             return true;
         });
@@ -86,7 +86,7 @@ namespace armarx::armem::gui::memory
         });
         workingmemoryProvSegmentBuilder.setUpdateItemFn([this](const std::string&, const wm::ProviderSegment & provSeg, QTreeWidgetItem * provSegItem)
         {
-            updateTypedContainerItem(provSeg, provSegItem);
+            updateContainerItem(provSeg, provSegItem);
             updateChildren(provSeg, provSegItem);
             return true;
         });
@@ -279,28 +279,26 @@ namespace armarx::armem::gui::memory
 
     template <class... T>
     void TreeWidget::updateContainerItem(
-        const armem::wm::detail::MemoryContainer<T...>& container, QTreeWidgetItem* item)
+        const base::detail::MemoryContainerBase<T...>& container, QTreeWidgetItem* item)
     {
         updateItemItem(container, item);
         item->setText(int(Columns::SIZE), QString::number(container.size()));
-    }
 
-    template <class... T>
-    void TreeWidget::updateTypedContainerItem(
-        const armem::wm::detail::TypedEntityContainer<T...>& container, QTreeWidgetItem* item)
-    {
-        updateContainerItem(container, item);
-        std::string typeName;
-        if (container.aronType())
-        {
-            typeName = container.aronType()->getName();
-            typeName = instance::sanitizeTypeName(typeName);
-        }
-        else
+        if constexpr(std::is_base_of_v<base::detail::AronTyped, base::detail::MemoryContainerBase<T...>>)
         {
-            typeName = "(no Aron type)";
+            const base::detail::AronTyped& cast = dynamic_cast<const base::detail::AronTyped&>(container);
+            std::string typeName;
+            if (cast.aronType())
+            {
+                typeName = cast.aronType()->getName();
+                typeName = instance::sanitizeTypeName(typeName);
+            }
+            else
+            {
+                typeName = "(no Aron type)";
+            }
+            item->setText(int(Columns::TYPE), QString::fromStdString(typeName));
         }
-        item->setText(int(Columns::TYPE), QString::fromStdString(typeName));
     }
 
 }
diff --git a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h
index 1ce80192013f4d045ff84b4f461589bbd4a43297..2bcf0fa1b6135534407044a3ce341b86afeab442 100644
--- a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h
+++ b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h
@@ -71,9 +71,7 @@ namespace armarx::armem::gui::memory
 
         void updateItemItem(const armem::base::detail::MemoryItem& level, QTreeWidgetItem* item);
         template <class... T>
-        void updateContainerItem(const armem::wm::detail::MemoryContainer<T...>& container, QTreeWidgetItem* item);
-        template <class... T>
-        void updateTypedContainerItem(const armem::wm::detail::TypedEntityContainer<T...>& container, QTreeWidgetItem* item);
+        void updateContainerItem(const armem::base::detail::MemoryContainerBase<T...>& container, QTreeWidgetItem* item);
 
 
     private: