diff --git a/source/RobotAPI/libraries/armem_gui/CMakeLists.txt b/source/RobotAPI/libraries/armem_gui/CMakeLists.txt
index 4b49856774ca0fd7236ad259b2b2346094c0501b..a3fe99e2f0423cb2c03e5ed44dc53d6fb47be9d5 100644
--- a/source/RobotAPI/libraries/armem_gui/CMakeLists.txt
+++ b/source/RobotAPI/libraries/armem_gui/CMakeLists.txt
@@ -10,7 +10,7 @@ set(LIBRARIES
     # ArmarXGui
     SimpleConfigDialog
     # RobotAPI
-    armem
+    aroneigenconverter armem
 )
 
 set(SOURCES
diff --git a/source/RobotAPI/libraries/armem_gui/instance/TreeDataVisitorBase.cpp b/source/RobotAPI/libraries/armem_gui/instance/TreeDataVisitorBase.cpp
index 39ba3d5e35de1247790dfb7c0e8837096b3b1b77..70a84dd7d2b75aaa388992f397e5d4475b83b37f 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/TreeDataVisitorBase.cpp
+++ b/source/RobotAPI/libraries/armem_gui/instance/TreeDataVisitorBase.cpp
@@ -62,7 +62,7 @@ namespace armarx::armem::gui
         return true;
     }
 
-    void TreeDataVisitorBase::streamValueText(aron::visitor::DataVisitor::BoolDataNavigator& n, std::stringstream& ss)
+    void TreeDataVisitorBase::streamValueText(aron::visitor::DataVisitor::BoolDataNavigator& n, std::stringstream& ss) const
     {
         if (n.getValue())
         {
@@ -74,12 +74,12 @@ namespace armarx::armem::gui
         }
     }
 
-    void TreeDataVisitorBase::streamValueText(aron::visitor::DataVisitor::StringDataNavigator& n, std::stringstream& ss)
+    void TreeDataVisitorBase::streamValueText(aron::visitor::DataVisitor::StringDataNavigator& n, std::stringstream& ss) const
     {
         ss << "'" << n.getValue() << "'";
     }
 
-    void TreeDataVisitorBase::streamValueText(aron::visitor::DataVisitor::NDArrayDataNavigator& n, std::stringstream& ss)
+    void TreeDataVisitorBase::streamValueText(aron::visitor::DataVisitor::NDArrayDataNavigator& n, std::stringstream& ss) const
     {
         ss << "shape " << aron::datanavigator::NDArrayNavigator::DimensionsToString(n.getDimensions());
     }
diff --git a/source/RobotAPI/libraries/armem_gui/instance/TreeDataVisitorBase.h b/source/RobotAPI/libraries/armem_gui/instance/TreeDataVisitorBase.h
index edee542196cdb82f6f1532a5ccbfc238160f41b1..cb6d4152afbf376ed4b1b63cb0a0e9bbf03ebf53 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/TreeDataVisitorBase.h
+++ b/source/RobotAPI/libraries/armem_gui/instance/TreeDataVisitorBase.h
@@ -40,7 +40,7 @@ namespace armarx::armem::gui
             return true;
         }
 
-        QStringList makeValueRowStrings(const std::string& key, const std::string& value, const std::string& typeName)
+        QStringList makeValueRowStrings(const std::string& key, const std::string& value, const std::string& typeName) const
         {
             QStringList cols;
             cols.insert(columnKey, QString::fromStdString(key));
@@ -50,7 +50,7 @@ namespace armarx::armem::gui
         }
 
         template <class Navigator>
-        QStringList makeValueRowStrings(const std::string& key, Navigator& n, const std::string& typeName)
+        QStringList makeValueRowStrings(const std::string& key, Navigator& n, const std::string& typeName) const
         {
             std::stringstream value;
             streamValueText(n, value);
@@ -58,13 +58,13 @@ namespace armarx::armem::gui
         }
 
         template <class Navigator>
-        void streamValueText(Navigator& n, std::stringstream& ss)
+        void streamValueText(Navigator& n, std::stringstream& ss) const
         {
             ss << n.getValue();
         }
-        void streamValueText(aron::visitor::DataVisitor::BoolDataNavigator& n, std::stringstream& ss);
-        void streamValueText(aron::visitor::DataVisitor::StringDataNavigator& n, std::stringstream& ss);
-        void streamValueText(aron::visitor::DataVisitor::NDArrayDataNavigator& n, std::stringstream& ss);
+        void streamValueText(aron::visitor::DataVisitor::BoolDataNavigator& n, std::stringstream& ss) const;
+        void streamValueText(aron::visitor::DataVisitor::StringDataNavigator& n, std::stringstream& ss) const;
+        void streamValueText(aron::visitor::DataVisitor::NDArrayDataNavigator& n, std::stringstream& ss) const;
 
 
     public:
diff --git a/source/RobotAPI/libraries/armem_gui/instance/TreeTypedDataVisitor.cpp b/source/RobotAPI/libraries/armem_gui/instance/TreeTypedDataVisitor.cpp
index 3d1ac1390975cd1acec518578c1fb11a48d52b2e..4dd70e8ac952addaf0da1bc4336bffd30fefca36 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/TreeTypedDataVisitor.cpp
+++ b/source/RobotAPI/libraries/armem_gui/instance/TreeTypedDataVisitor.cpp
@@ -1,9 +1,13 @@
 #include "TreeTypedDataVisitor.h"
 
+#include <iomanip>      // std::setprecision
+
 #include <SimoxUtility/algorithm/string.h>
 
 #include <ArmarXCore/core/exceptions/local/ExpressionException.h>
 
+#include <RobotAPI/libraries/aron/core/Exception.h>
+#include <RobotAPI/libraries/aron/converter/eigen/EigenConverter.h>
 #include <RobotAPI/libraries/armem/core.h>
 
 
@@ -25,11 +29,43 @@ namespace armarx::armem::gui
         return n;
     }
 
-    QTreeWidgetItem* TreeTypedDataVisitor::makeItem(const std::string& key, LongDataNavigator& data, const TimeTypeNavigator& type)
+    QTreeWidgetItem* TreeTypedDataVisitor::makeItem(const std::string& key, NDArrayDataNavigator& data, const PoseTypeNavigator& type) const
+    {
+        QTreeWidgetItem* item = makeItem<NDArrayDataNavigator, PoseTypeNavigator>(key, data, type);
+        // ToDo: Do something special.
+        return item;
+    }
+
+    void TreeTypedDataVisitor::streamValueText(LongDataNavigator& data, const TimeTypeNavigator& type, std::stringstream& ss) const
     {
+        (void) type;
         armem::Time time = armem::Time::microSeconds(data.getValue());
         armem::toDateTimeMilliSeconds(time);
-        return new QTreeWidgetItem(this->makeValueRowStrings(key, armem::toDateTimeMilliSeconds(time), sanitizeTypeName(type.getName())));
+        ss << armem::toDateTimeMilliSeconds(time);
+    }
+
+    void TreeTypedDataVisitor::streamValueText(NDArrayDataNavigator& data, const PoseTypeNavigator& type, std::stringstream& ss) const
+    {
+        (void) type;
+        const Eigen::Matrix4f pose = aron::converter::AronEigenConverter::ConvertToMatrix4f(data);
+        ss << std::setprecision(2) << std::fixed;
+        ss << pose.format(Eigen::IOFormat(Eigen::StreamPrecision, 0, " ", "\n", "", "", "", ""));
+    }
+
+    void TreeTypedDataVisitor::streamValueText(NDArrayDataNavigator& data, const PositionTypeNavigator& type, std::stringstream& ss) const
+    {
+        (void) type;
+        const Eigen::Vector3f pos = aron::converter::AronEigenConverter::ConvertToVector3f(data);
+        ss << std::setprecision(2) << std::fixed;
+        ss << pos.format(Eigen::IOFormat(Eigen::StreamPrecision, 0, " ", " ", "", "", "(", ")"));
+    }
+
+    void TreeTypedDataVisitor::streamValueText(NDArrayDataNavigator& data, const OrientationTypeNavigator& type, std::stringstream& ss) const
+    {
+        (void) type;
+        const Eigen::Quaternionf quat = aron::converter::AronEigenConverter::ConvertToQuaternionf(data);
+        ss << std::setprecision(2) << std::fixed;
+        ss << quat.w() << " | " << quat.x() << " " << quat.x() << " " << quat.y() << " " << quat.z();
     }
 
     QStringList TreeTypedDataVisitor::serializePath(const aron::Path& path)
@@ -56,7 +92,4 @@ namespace armarx::armem::gui
         return path;
     }
 
-
-
-
 }
diff --git a/source/RobotAPI/libraries/armem_gui/instance/TreeTypedDataVisitor.h b/source/RobotAPI/libraries/armem_gui/instance/TreeTypedDataVisitor.h
index 9d34023138d0c23ecf8b0f0a4433020184adb6cf..9e38a1324f4e1dcd22499702fef39a534805f45e 100644
--- a/source/RobotAPI/libraries/armem_gui/instance/TreeTypedDataVisitor.h
+++ b/source/RobotAPI/libraries/armem_gui/instance/TreeTypedDataVisitor.h
@@ -138,17 +138,55 @@ namespace armarx::armem::gui
 
                 item->setData(columnKey, Qt::UserRole, serializePath(data.getPath()));
                 item->setData(columnType, Qt::UserRole, int(type.getDescriptor()));
+
+                if (false)
+                {
+                    QFont font;
+                    font.setFamily("Consolas");
+                    font.setStyleHint(QFont::Monospace);
+                    font.setFixedPitch(true);
+                    font.setPointSize(10);
+                    item->setFont(columnValue, font);
+                }
             }
             return true;
         }
 
-        template <class DataNavigatorT>
-        QTreeWidgetItem* makeItem(const std::string& key, DataNavigatorT& data, const TypeNavigator& type)
+        template <class DataNavigatorT, class TypeNavigatorT>
+        QTreeWidgetItem* makeItem(const std::string& key, DataNavigatorT& data, const TypeNavigatorT& type) const
+        {
+            std::stringstream ss;
+            try
+            {
+                this->streamValueText(data, type, ss);
+            }
+            catch (const aron::error::AronException& e)
+            {
+                ss << "x ";
+                TreeDataVisitorBase::streamValueText(data, ss);
+                std::stringstream es;
+                es << e.what();
+                ss << simox::alg::replace_all(es.str(), "\n", " | ");
+            }
+            return new QTreeWidgetItem(this->makeValueRowStrings(key, ss.str(), sanitizeTypeName(type.getName())));
+        }
+
+        QTreeWidgetItem* makeItem(const std::string& key, NDArrayDataNavigator& data, const PoseTypeNavigator& type) const;
+
+
+        template <class DataNavigatorT, class TypeNavigatorT>
+        void streamValueText(DataNavigatorT& data, const TypeNavigatorT& type, std::stringstream& ss) const
         {
-            return new QTreeWidgetItem(this->makeValueRowStrings(key, data, sanitizeTypeName(type.getName())));
+            // Fallback to type-agnostic (but data-aware).
+            (void) type;
+            TreeDataVisitorBase::streamValueText(data, ss);
         }
 
-        QTreeWidgetItem* makeItem(const std::string& key, LongDataNavigator& data, const TimeTypeNavigator& type);
+        using TreeDataVisitorBase::streamValueText;
+        void streamValueText(LongDataNavigator& data, const TimeTypeNavigator& type, std::stringstream& ss) const;
+        void streamValueText(NDArrayDataNavigator& data, const PoseTypeNavigator& type, std::stringstream& ss) const;
+        void streamValueText(NDArrayDataNavigator& data, const PositionTypeNavigator& type, std::stringstream& ss) const;
+        void streamValueText(NDArrayDataNavigator& data, const OrientationTypeNavigator& type, std::stringstream& ss) const;
 
 
     public: