diff --git a/source/RobotAPI/libraries/armem_gui/CMakeLists.txt b/source/RobotAPI/libraries/armem_gui/CMakeLists.txt
index 46d1d14165082c0699fe074490a3c590e5c86543..37c18f5612466714cfede37105c7800667fd9575 100644
--- a/source/RobotAPI/libraries/armem_gui/CMakeLists.txt
+++ b/source/RobotAPI/libraries/armem_gui/CMakeLists.txt
@@ -16,15 +16,17 @@ set(LIBRARIES
 set(SOURCES
     MemoryViewer.cpp
 
-    PeriodicUpdateWidget.cpp
-    LTMControlWidget.cpp
     gui_utils.cpp
     lifecycle.cpp
 
+    LTMControlWidget.cpp
+    PeriodicUpdateWidget.cpp
+
+
     instance/GroupBox.cpp
     instance/ImageView.cpp
     instance/InstanceView.cpp
-    instance/InstanceViewWithToolBar.cpp
+    instance/WidgetsWithToolbar.cpp
     instance/sanitize_typename.cpp
     instance/serialize_path.cpp
 
@@ -49,16 +51,17 @@ set(SOURCES
 set(HEADERS
     MemoryViewer.h
 
-    PeriodicUpdateWidget.h
-    LTMControlWidget.h
-    TreeWidgetBuilder.h
     gui_utils.h
     lifecycle.h
 
+    LTMControlWidget.h
+    PeriodicUpdateWidget.h
+    TreeWidgetBuilder.h
+
     instance/GroupBox.h
     instance/ImageView.h
     instance/InstanceView.h
-    instance/InstanceViewWithToolBar.h
+    instance/WidgetsWithToolbar.h
     instance/sanitize_typename.h
     instance/serialize_path.h
 
diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
index 8e82b4a7e7457a31865f28819888b825ae2806c8..fbb6f669510458188e88ad598cc16e2d76276359 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
+++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp
@@ -29,7 +29,7 @@
 #include <RobotAPI/libraries/armem_gui/instance/tree_builders/DataTreeBuilder.h>
 #include <RobotAPI/libraries/armem_gui/instance/tree_builders/TypedDataTreeBuilder.h>
 
-#include "InstanceViewWithToolBar.h"
+#include "WidgetsWithToolbar.h"
 
 
 namespace armarx::armem::gui::instance
@@ -80,6 +80,7 @@ namespace armarx::armem::gui::instance
         {
             item->setExpanded(true);
         }
+        treeItemMetadata->setExpanded(false);
 
         tree->setContextMenuPolicy(Qt::CustomContextMenu);
         connect(tree, &QTreeWidget::customContextMenuRequested, this, &This::prepareTreeContextMenu);
@@ -146,13 +147,20 @@ namespace armarx::armem::gui::instance
     void InstanceView::addInstanceView(const wm::EntityInstance& instance, aron::typenavigator::ObjectNavigatorPtr aronType)
     {
         ARMARX_IMPORTANT << "Adding instance view with toolbar for instance: " << instance.id();
-        InstanceViewWithToolBar* child = new InstanceViewWithToolBar();
-        child->view->setStatusLabel(statusLabel);
-        child->view->setUseTypeInfo(useTypeInfo);
+        InstanceView* view = new InstanceView;
+        view->setStatusLabel(statusLabel);
+        view->setUseTypeInfo(useTypeInfo);
+
+        WidgetsWithToolbar* child = new WidgetsWithToolbar();
+        child->addWidget(view);
+
 
         splitter->addWidget(child);
 
-        child->view->update(instance, aronType);
+        // Propagate this signal upwards.
+        connect(view, &InstanceView::memoryIdResolutionRequested, this, &This::memoryIdResolutionRequested);
+
+        view->update(instance, aronType);
     }
 
 
@@ -283,7 +291,18 @@ namespace armarx::armem::gui::instance
         }
         if (!imageView)
         {
-            imageView = ImageView(splitter);
+            WidgetsWithToolbar* toolbar = new WidgetsWithToolbar();
+
+            imageView = new ImageView();
+            imageView->toolbar = toolbar;
+            toolbar->addWidget(imageView);
+
+            splitter->addWidget(toolbar);
+
+            connect(toolbar, &WidgetsWithToolbar::closing, [this]()
+            {
+                imageView = nullptr;
+            });
         }
         imageView->elementPath = elementPath;
         updateImageView(currentInstance->data());
@@ -291,9 +310,8 @@ namespace armarx::armem::gui::instance
 
     void InstanceView::removeImageView()
     {
-        imageView->group->hide();
-        imageView->group->deleteLater();
-        imageView = std::nullopt;
+        imageView->toolbar->close();
+        imageView = nullptr;
     }
 
     void InstanceView::requestMemoryIdResolution(const aron::Path& elementPath)
@@ -405,28 +423,25 @@ namespace armarx::armem::gui::instance
 
         std::stringstream title;
         title << "Image element '" << imageView->elementPath.toString() << "'"; // of entity instance " << currentInstance->id();
-        imageView->group->setTitle(QString::fromStdString(title.str()));
+        imageView->setTitle(QString::fromStdString(title.str()));
         imageView->view->setImage(QImage(imageData->getData(), shape.at(0), shape.at(1), format));
     }
 
 
-    InstanceView::ImageView::ImageView(QSplitter* parent)
+    InstanceView::ImageView::ImageView()
     {
-        group = new QGroupBox();
-        parent->addWidget(group);
-
-        group->setLayout(new QHBoxLayout());
+        setLayout(new QHBoxLayout());
         int margin = 2;
-        group->layout()->setContentsMargins(margin, margin, margin, margin);
+        layout()->setContentsMargins(margin, margin, margin, margin);
         if (false)
         {
-            QFont font = group->font();
+            QFont font = this->font();
             font.setPointSizeF(font.pointSize() * 0.75);
-            group->setFont(font);
+            setFont(font);
         }
 
         view = new instance::ImageView();
-        group->layout()->addWidget(view);
+        layout()->addWidget(view);
     }
 
 }
diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h
index 371112ee51b44b1174971c1648958ae36904072e..504b0e9eaef4d7225a15b90598d0b7e51ad02692 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h
+++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h
@@ -3,6 +3,7 @@
 #include <optional>
 
 #include <QWidget>
+#include <QGroupBox>
 
 #include <RobotAPI/libraries/aron/core/navigator/type/container/Object.h>
 
@@ -19,6 +20,7 @@ class QTreeWidgetItem;
 namespace armarx::armem::gui::instance
 {
     class ImageView;
+    class WidgetsWithToolbar;
 
 
     class InstanceView : public QWidget
@@ -89,16 +91,17 @@ namespace armarx::armem::gui::instance
         QTreeWidgetItem* treeItemData;
 
 
-        class ImageView
+        class ImageView : public QGroupBox
         {
         public:
-            ImageView(QSplitter* parent);
+            ImageView();
 
-            QGroupBox* group;
             instance::ImageView* view;
             aron::Path elementPath;
+
+            WidgetsWithToolbar* toolbar;
         };
-        std::optional<ImageView> imageView;
+        ImageView* imageView = nullptr;
 
         QLabel* statusLabel = nullptr;
 
diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceViewWithToolBar.cpp b/source/RobotAPI/libraries/armem_gui/instance/WidgetsWithToolbar.cpp
similarity index 67%
rename from source/RobotAPI/libraries/armem_gui/instance/InstanceViewWithToolBar.cpp
rename to source/RobotAPI/libraries/armem_gui/instance/WidgetsWithToolbar.cpp
index 0f0493a23ece7af2a7756e387a367408c3fa5873..b41ce7649aa21303658ed3a400f691e5efca1d0e 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/InstanceViewWithToolBar.cpp
+++ b/source/RobotAPI/libraries/armem_gui/instance/WidgetsWithToolbar.cpp
@@ -20,7 +20,7 @@
 *             GNU General Public License
 */
 
-#include "InstanceViewWithToolBar.h"
+#include "WidgetsWithToolbar.h"
 
 #include <QAction>
 #include <QHBoxLayout>
@@ -36,32 +36,44 @@
 namespace armarx::armem::gui::instance
 {
 
-    InstanceViewWithToolBar::InstanceViewWithToolBar(QWidget* parent) : QWidget(parent)
+    WidgetsWithToolbar::WidgetsWithToolbar(QWidget* parent) : QWidget(parent)
     {
         const int margin = 0;
         this->setContentsMargins(margin, margin, margin, margin);
 
-        QHBoxLayout* layout = new QHBoxLayout();
-        this->setLayout(layout);
-        layout->setContentsMargins(margin, margin, margin, margin);
-        layout->setSpacing(0);
+        _layout = new QHBoxLayout();
+        this->setLayout(_layout);
+        _layout->setContentsMargins(margin, margin, margin, margin);
+        _layout->setSpacing(0);
 
 
-        view = new InstanceView();
-
         toolbar = new QToolBar();
         toolbar->setOrientation(Qt::Orientation::Vertical);
         toolbar->setContentsMargins(margin, margin, margin, margin);
 
         QAction* action = toolbar->addAction(QIcon(":/icons/dialog-close.ico"), "Close", [this]()
         {
-            ARMARX_IMPORTANT << "Closing instance view ...";
-            this->deleteLater();
+            this->close();
         });
         action->setToolTip("Remove this instance view");
 
-        layout->addWidget(view);
-        layout->addWidget(toolbar);
+        _layout->addWidget(toolbar);
+    }
+
+
+    void WidgetsWithToolbar::addWidget(QWidget* widget)
+    {
+        ARMARX_CHECK_GREATER_EQUAL(_layout->count(), 1);
+        _layout->insertWidget(_layout->count() - 1, widget);
+    }
+
+    void WidgetsWithToolbar::close()
+    {
+        // ARMARX_IMPORTANT << "Closing instance view ...";
+        emit closing();
+
+        this->hide();
+        this->deleteLater();
     }
 
 }
diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceViewWithToolBar.h b/source/RobotAPI/libraries/armem_gui/instance/WidgetsWithToolbar.h
similarity index 81%
rename from source/RobotAPI/libraries/armem_gui/instance/InstanceViewWithToolBar.h
rename to source/RobotAPI/libraries/armem_gui/instance/WidgetsWithToolbar.h
index c486eeee4d1c7c00759a40a69dbc1de47ec96e3b..8d2f2a00aa0d2ee74d47f95ce88e49b85b3392e4 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/InstanceViewWithToolBar.h
+++ b/source/RobotAPI/libraries/armem_gui/instance/WidgetsWithToolbar.h
@@ -31,24 +31,28 @@ class QToolBar;
 
 namespace armarx::armem::gui::instance
 {
-
-    class InstanceView;
-
-    class InstanceViewWithToolBar : public QWidget
+    class WidgetsWithToolbar : public QWidget
     {
         Q_OBJECT
-        using This = InstanceViewWithToolBar;
+        using This = WidgetsWithToolbar;
 
     public:
 
-        InstanceViewWithToolBar(QWidget* parent = nullptr);
+        WidgetsWithToolbar(QWidget* parent = nullptr);
 
+        void addWidget(QWidget* widget);
 
 
     public slots:
 
+        void close();
+
+
     signals:
 
+        void closing();
+
+
     protected slots:
 
     signals:
@@ -59,13 +63,12 @@ namespace armarx::armem::gui::instance
 
     public:
 
-        InstanceView* view;
-
         QToolBar* toolbar;
 
 
     private:
 
+        QHBoxLayout* _layout;
 
     };
 }