diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/CMakeLists.txt b/source/RobotAPI/gui-plugins/SkillManagerPlugin/CMakeLists.txt
index 9450ff9ebb1ace95ca7a96d8bc631ecde8a2a145..e3c6112a1dda404dd72af32403f9512f9eccd014 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/CMakeLists.txt
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/CMakeLists.txt
@@ -11,13 +11,15 @@ set(SOURCES
     aronTreeWidget/visitors/AronTreeWidgetModalCreator.cpp
     aronTreeWidget/visitors/AronTreeWidgetContextMenu.cpp
     aronTreeWidget/Data.cpp
-    aronTreeWidget/NDArrayHelper.cpp
     aronTreeWidget/EditMatrixWidget.cpp
-    aronTreeWidget/QuaternionWidget.cpp
     aronTreeWidget/AronTreeWidgetItem.cpp
     aronTreeWidget/AronTreeWidgetController.cpp
-    aronTreeWidget/modal/text/AronTreeWidgetTextInputModalController.cpp
     aronTreeWidget/modal/AronTreeWidgetModal.cpp
+    aronTreeWidget/modal/int_long/AronTreeWidgetIntInputModalController.cpp
+    aronTreeWidget/modal/float_double/AronTreeWidgetFloatInputModalController.cpp
+    aronTreeWidget/modal/bool/AronTreeWidgetBoolInputModalController.cpp
+    aronTreeWidget/modal/text/AronTreeWidgetTextInputModalController.cpp
+    aronTreeWidget/modal/dict/AronTreeWidgetDictInputModalController.cpp
     SkillManagerMonitorWidgetController.cpp
 )
 
@@ -28,19 +30,25 @@ set(HEADERS
     aronTreeWidget/visitors/AronTreeWidgetModalCreator.h
     aronTreeWidget/visitors/AronTreeWidgetContextMenu.h
     aronTreeWidget/Data.h
-    aronTreeWidget/NDArrayHelper.h
     aronTreeWidget/EditMatrixWidget.h
-    aronTreeWidget/QuaternionWidget.h
     aronTreeWidget/AronTreeWidgetItem.h
     aronTreeWidget/AronTreeWidgetController.h
     aronTreeWidget/modal/AronTreeWidgetModal.h
+    aronTreeWidget/modal/int_long/AronTreeWidgetIntInputModalController.h
+    aronTreeWidget/modal/float_double/AronTreeWidgetFloatInputModalController.h
+    aronTreeWidget/modal/bool/AronTreeWidgetBoolInputModalController.h
     aronTreeWidget/modal/text/AronTreeWidgetTextInputModalController.h
+    aronTreeWidget/modal/dict/AronTreeWidgetDictInputModalController.h
     SkillManagerMonitorWidgetController.h
 )
 
 set(GUI_UIS
     SkillManagerMonitorWidget.ui
+    aronTreeWidget/modal/int_long/AronTreeWidgetIntInputModal.ui
+    aronTreeWidget/modal/float_double/AronTreeWidgetFloatInputModal.ui
+    aronTreeWidget/modal/bool/AronTreeWidgetBoolInputModal.ui
     aronTreeWidget/modal/text/AronTreeWidgetTextInputModal.ui
+    aronTreeWidget/modal/dict/AronTreeWidgetDictInputModal.ui
 )
 
 # Add more libraries you depend on here, e.g. ${QT_LIBRARIES}.
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
index b90e4f6b5c76022d1a87c7afc0f484cf1993d01f..0811cfffe3b243b57a656b1f88beaa40bbfe916f 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
@@ -181,6 +181,11 @@ namespace armarx
         if (!connected)
             return;
 
+        // TODO: this can hang the whole gui! (if the skills do not respond in time.) Move into Future calculation?
+        // for example set to pending in GUI while calculating, update on this thread once results are there.
+        // (GUIs do not like to be called from seperate threads)
+        // The Furure can calculate a set of actions to perform on gui elements?
+
         // remove non-existing ones
         auto managerSkills = manager->getSkillDescriptions();
         std::vector<std::string> removedProviders;
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/AronTreeWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/AronTreeWidgetController.cpp
index 2bffc07e7b8aacdad7bb2eabda044795a7714277..3399138ef033c86698345f4e068c7fc0a57d7ab4 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/AronTreeWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/AronTreeWidgetController.cpp
@@ -127,31 +127,16 @@ namespace armarx
     AronTreeWidgetController::onTreeWidgetItemChanged(QTreeWidgetItem* item, int column)
     {
         auto* aronElem = AronTreeWidgetItem::DynamicCast(item);
-        auto* parent = AronTreeWidgetItem::DynamicCast(item->parent());
-
-        if (!aronElem || !parent)
+        if (column != 1 || !aronElem)
         {
             return;
         }
-        if (column == 1)
-        {
-            // Try to convert the type into aron to find errors
-            AronTreeWidgetConverterVisitor v(item->parent(), item->parent()->indexOfChild(item));
-            aron::type::visit(v, aronElem->aronType);
-            // set the state accordingly
-            aronElem->setValueErrorState(!v.isConversionSuccessful());
-        }
-        else if (column == 0)
-        {
-            // check if the element is child of a dict. If so, validate uniqueness of keys
-            if (parent->aronType->getDescriptor() == aron::type::Descriptor::DICT)
-            {
-                parent->checkKeyValidityOfChildren();
-            }
-            // maybe while editing keys, we try to edit a key that should not change by tabbing.
-            // Catch that here and undo the edit
-            aronElem->preventIllegalKeyChange();
-        }
+        ARMARX_CHECK(item->parent());
+        // Try to convert the type into aron to find errors
+        AronTreeWidgetConverterVisitor v(item->parent(), item->parent()->indexOfChild(item));
+        aron::type::visit(v, aronElem->aronType);
+        // set the state accordingly
+        aronElem->setValueErrorState(!v.isConversionSuccessful());
     }
 
 } // namespace armarx
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/AronTreeWidgetItem.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/AronTreeWidgetItem.cpp
index 7ab2989457d0071b76f8951d3bf77b22b2b1062f..239921ff7f811fb119435a4fdf6c7d02a2b7d5a2 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/AronTreeWidgetItem.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/AronTreeWidgetItem.cpp
@@ -7,14 +7,26 @@
 
 namespace armarx
 {
-    AronTreeWidgetItem*
-    AronTreeWidgetItem::DynamicCast(QTreeWidgetItem* i)
+    AronTreeWidgetItem* AronTreeWidgetItem::DynamicCast(QTreeWidgetItem* i)
     {
         return dynamic_cast<AronTreeWidgetItem*>(i);
     }
 
-    AronTreeWidgetItem*
-    AronTreeWidgetItem::DynamicCastAndCheck(QTreeWidgetItem* i)
+    AronTreeWidgetItem::AronTreeWidgetItem(const AronTreeWidgetItem &other) :
+        QObject(),
+        QTreeWidgetItem(other)
+    {
+        aronType = other.aronType;
+        setValueErrorState(true);
+    }
+
+    AronTreeWidgetItem* AronTreeWidgetItem::copy()
+    {
+        AronTreeWidgetItem* ret = new AronTreeWidgetItem(*this);
+        return ret;
+    }
+
+    AronTreeWidgetItem* AronTreeWidgetItem::DynamicCastAndCheck(QTreeWidgetItem* i)
     {
         if (!i)
         {
@@ -25,123 +37,24 @@ namespace armarx
         return c;
     }
 
-    bool
-    AronTreeWidgetItem::isValueErrorneous()
+    bool AronTreeWidgetItem::isValueErrorneous()
     {
         return itemValueError;
     }
 
-    void
-    AronTreeWidgetItem::setValueErrorState(bool hasError)
+    void AronTreeWidgetItem::setValueErrorState(bool hasError)
     {
         itemValueError = hasError;
-        if (hasError)
-        {
+        if(hasError){
             QTreeWidgetItem::setBackgroundColor(1, Qt::red);
-        }
-        else
-        {
+        }else{
             QTreeWidgetItem::setBackground(1, Qt::white);
         }
     }
 
-    void
-    AronTreeWidgetItem::setKeyErrorState(bool hasError)
+    AronTreeWidgetItem::AronTreeWidgetItem(bool editKey, bool editVal) :
+        col0Editable(editKey), col1Editable(editVal)
     {
-        ARMARX_CHECK(col0Editable); //only editable keys should call this function!
-        keyValueError = hasError;
-        if (hasError)
-        {
-            QTreeWidgetItem::setBackgroundColor(0, Qt::red);
-        }
-        else
-        {
-            QTreeWidgetItem::setBackground(0, Qt::white);
-        }
-    }
-
-
-    void
-    AronTreeWidgetItem::checkKeyValidityOfChildren()
-    {
-        ARMARX_CHECK(aronType->getDescriptor() == aron::type::Descriptor::DICT);
-        // return if check failed
-        if (aronType->getDescriptor() != aron::type::Descriptor::DICT)
-        {
-            return;
-        }
-        // iterate through children; memorize keys
-        std::map<QString, std::vector<int>> found_keys;
-        auto numChildren = childCount();
-        for (int i = 0; i < numChildren; ++i)
-        {
-            auto* casted = AronTreeWidgetItem::DynamicCastAndCheck(child(i));
-            if (!casted)
-            {
-                // soft error here, we already report it above. - Definetly programming error
-                continue;
-            }
-            auto& vec = found_keys[casted->text(0)];
-            vec.push_back(i);
-        }
-        // highlight keys that conflict
-        // memorize children that are not ok
-        std::set<int> errorneous_indices;
-        for (auto [key, vals] : found_keys)
-        {
-            if (vals.size() > 1)
-            {
-                for (int i : vals)
-                {
-                    auto* casted = AronTreeWidgetItem::DynamicCastAndCheck(child(i));
-                    if (!casted)
-                    {
-                        // soft error here, we already report it above. - Definetly programming error
-                        continue;
-                    }
-                    casted->setKeyErrorState(true);
-                    errorneous_indices.emplace(i);
-                }
-            }
-        }
-        // clear potential error state of other elements
-        for (int i = 0; i < numChildren; ++i)
-        {
-            if (errorneous_indices.find(i) != errorneous_indices.end())
-            {
-                continue;
-            }
-            auto* casted = AronTreeWidgetItem::DynamicCastAndCheck(child(i));
-            if (!casted)
-            {
-                // soft error here, we already report it above. - Definetly programming error
-                continue;
-            }
-            casted->setKeyErrorState(false);
-        }
-    }
-
-    void
-    AronTreeWidgetItem::preventIllegalKeyChange()
-    {
-        if (!col0Editable)
-        {
-            setText(0, unchangeableKey);
-        }
-    }
-
-    AronTreeWidgetItem::AronTreeWidgetItem(bool editKey,
-                                           bool editVal,
-                                           QString key,
-                                           aron::type::VariantPtr type) :
-        aronType(type), col0Editable(editKey), col1Editable(editVal)
-    {
-        this->setText(0, key);
-        // add hook to check for edited keys for children of dictionaries
-        if (!editKey)
-        {
-            unchangeableKey = std::move(key);
-        }
     }
 
 } // namespace armarx
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/AronTreeWidgetItem.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/AronTreeWidgetItem.h
index b93f0e3e757a1bb937f8d1f3365bd7d6dd90a621..fe177100283826563ce23dd327ead2c7e494cde7 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/AronTreeWidgetItem.h
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/AronTreeWidgetItem.h
@@ -17,14 +17,18 @@ namespace armarx
     {
         Q_OBJECT
     public:
-        AronTreeWidgetItem(bool editKey, bool editVal, QString key, aron::type::VariantPtr type);
+        AronTreeWidgetItem(const AronTreeWidgetItem& other);
+        AronTreeWidgetItem(bool editKey, bool editVal);
 
         using QTreeWidgetItem::QTreeWidgetItem;
 
+        AronTreeWidgetItem* copy(); // differs from clone!!!!
+
         static AronTreeWidgetItem* DynamicCast(QTreeWidgetItem*);
+
         static AronTreeWidgetItem* DynamicCastAndCheck(QTreeWidgetItem*);
 
-        const aron::type::VariantPtr aronType;
+        aron::type::VariantPtr aronType;
         // if editing the first column should be allowed
         const bool col0Editable = false;
         // if editing the second column should be allowed
@@ -32,19 +36,8 @@ namespace armarx
 
         bool isValueErrorneous();
         void setValueErrorState(bool hasError);
-        void setKeyErrorState(bool hasError);
-
-        // Checks if the children of a dict are unique
-        // should not be called on other types! (does nothing then)
-        void checkKeyValidityOfChildren();
-
-        // because the editable keyword counts for all columns, it is possible to TAB into uneditable keys.
-        // We do not want those to change, so just change them back once they finished editing.
-        void preventIllegalKeyChange();
 
     private:
         bool itemValueError = false;
-        bool keyValueError = false;
-        QString unchangeableKey = "";
     };
 } // namespace armarx
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/EditMatrixWidget.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/EditMatrixWidget.cpp
index 223e5e8d9f71bfa03938c87d20862d1c58c1959a..7a0d9f4e939daf31b7ef838fbfb7fcede7aa9aa1 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/EditMatrixWidget.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/EditMatrixWidget.cpp
@@ -6,7 +6,6 @@
 #include "ArmarXCore/core/exceptions/local/ExpressionException.h"
 #include "ArmarXCore/core/logging/Logging.h"
 
-#include "NDArrayHelper.h"
 #include "visitors/AronTreeWidgetCreator.h"
 
 namespace armarx
@@ -204,24 +203,25 @@ namespace armarx
     EditMatrixWidget::parseElement(size_t row, size_t col)
     {
         std::string str = getText(row, col);
+        // TODO improve! Exceptions in control flow are a *really* bad smell
         try
         {
             switch (elemType)
             {
                 case armarx::aron::type::matrix::INT16:
-                    return NDArrayHelper::toByteVector<int16_t>(str);
+                    return toByteVector<int16_t>(str);
 
                 case armarx::aron::type::matrix::INT32:
-                    return NDArrayHelper::toByteVector<int32_t>(str);
+                    return toByteVector<int32_t>(str);
 
                 case armarx::aron::type::matrix::INT64:
-                    return NDArrayHelper::toByteVector<int64_t>(str);
+                    return toByteVector<int64_t>(str);
 
                 case armarx::aron::type::matrix::FLOAT32:
-                    return NDArrayHelper::toByteVector<float>(str);
+                    return toByteVector<float>(str);
 
                 case armarx::aron::type::matrix::FLOAT64:
-                    return NDArrayHelper::toByteVector<double>(str);
+                    return toByteVector<double>(str);
             }
         }
         catch (const simox::error::SimoxError& err)
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/EditMatrixWidget.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/EditMatrixWidget.h
index 3c3f9f5140d4a9820cc964fd98acf36927d9806b..fd39da5d21569d1b4dd6b30b74c8e2b05af2b06c 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/EditMatrixWidget.h
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/EditMatrixWidget.h
@@ -51,9 +51,21 @@ namespace armarx
         template <typename T>
         static std::vector<unsigned char> toByteVector(const std::string& str);
 
+        // TODO: It would be nice to have this code somewhere else, this way, at least the GUI-responses
+        // are restricted to this Widget (signal & slot stuff)
         aron::type::matrix::ElementType elemType;
 
     private slots:
         void matrixElementChanged();
     };
+
+    template <typename T>
+    std::vector<unsigned char>
+    EditMatrixWidget::toByteVector(const std::string& str)
+    {
+        auto val = simox::alg::to_<T>(str);
+        std::vector<unsigned char> res(sizeof(val), 0);
+        *reinterpret_cast<T*>(res.data()) = val;
+        return res;
+    }
 } // namespace armarx
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/QuaternionWidget.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/QuaternionWidget.cpp
deleted file mode 100644
index 67a5a62a19c25f2c3b15058f8e3b0e9472fad1c5..0000000000000000000000000000000000000000
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/QuaternionWidget.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-#include "QuaternionWidget.h"
-
-#include <QHBoxLayout>
-#include <QLabel>
-#include <QLineEdit>
-
-#include "NDArrayHelper.h"
-namespace armarx
-{
-
-    QuaternionWidget*
-    QuaternionWidget::DynamicCast(QWidget* elem)
-    {
-        return dynamic_cast<QuaternionWidget*>(elem);
-    }
-
-    QuaternionWidget*
-    QuaternionWidget::DynamicCastAndCheck(QWidget* elem)
-    {
-        if (!elem)
-        {
-            return nullptr;
-        }
-        auto* casted = DynamicCast(elem);
-        ARMARX_CHECK_NOT_NULL(casted);
-        return casted;
-    }
-
-    void
-    QuaternionWidget::setText(QuaternionComponents col, const std::string& str)
-    {
-        size_t idx = (size_t)col;
-        xyzw_components.at(idx)->setText(str.c_str());
-        highlightUnparsableEntries();
-    }
-
-    bool
-    QuaternionWidget::hasParseErrors()
-    {
-        return !noParseErrors;
-    }
-
-    armarx::QuaternionWidget::QuaternionWidget(aron::type::quaternion::ElementType elType) :
-        element_type(elType)
-    {
-        auto outerLayout = new QHBoxLayout();
-        auto labelCol1 = new QVBoxLayout();
-        auto labelCol2 = new QVBoxLayout();
-        auto xzEdit = new QVBoxLayout();
-        auto ywEdit = new QVBoxLayout();
-
-        outerLayout->addLayout(labelCol1);
-        outerLayout->addLayout(xzEdit);
-        outerLayout->addLayout(labelCol2);
-        outerLayout->addLayout(ywEdit);
-
-        xyzw_components.reserve(4);
-        for (size_t i = 0; i < 4; ++i)
-        {
-            xyzw_components.push_back(new QLineEdit());
-        }
-
-        // Tabbing order >> Viewing order. Thats why the indeces are a bit switched
-        labelCol1->addWidget(new QLabel("x"));
-        xzEdit->addWidget(xyzw_components.at(0));
-
-        labelCol2->addWidget(new QLabel("z"));
-        ywEdit->addWidget(xyzw_components.at(2));
-
-        labelCol1->addWidget(new QLabel("y"));
-        xzEdit->addWidget(xyzw_components.at(1));
-
-        labelCol2->addWidget(new QLabel("w"));
-        ywEdit->addWidget(xyzw_components.at(3));
-
-        for (const auto& el : xyzw_components)
-        {
-            connect(el, SIGNAL(editingFinished()), this, SLOT(quaternionElementChanged()));
-        }
-
-        setLayout(outerLayout);
-        highlightUnparsableEntries();
-    }
-
-    void
-    QuaternionWidget::highlightUnparsableEntries()
-    {
-        QPalette normalPalette;
-        normalPalette.setColor(QPalette::Base, Qt::white);
-        normalPalette.setColor(QPalette::Text, Qt::black);
-
-        QPalette errorPalette;
-        errorPalette.setColor(QPalette::Base, Qt::red);
-        errorPalette.setColor(QPalette::Text, Qt::black);
-
-        noParseErrors = true;
-        for (size_t i = 0; i < 4; ++i)
-        {
-            bool ok = false;
-            switch (element_type)
-            {
-                case armarx::aron::type::quaternion::FLOAT32:
-                {
-                    float flt;
-                    std::tie(ok, flt) = parseQuatVals<float>((QuaternionComponents)i);
-                    break;
-                }
-
-                case armarx::aron::type::quaternion::FLOAT64:
-                {
-                    double dbl;
-                    std::tie(ok, dbl) = parseQuatVals<double>((QuaternionComponents)i);
-                    break;
-                }
-            }
-            if (ok)
-            {
-                xyzw_components.at(i)->setPalette(normalPalette);
-            }
-            else
-            {
-                xyzw_components.at(i)->setPalette(errorPalette);
-                noParseErrors = false;
-            }
-        }
-    }
-
-    std::vector<unsigned char>
-    QuaternionWidget::parseAllToNDArray()
-    {
-        std::vector<unsigned char> res;
-        bool success = true;
-        if (element_type == aron::type::quaternion::FLOAT32)
-        {
-            res.reserve(16);
-            for (size_t i = 0; i < 4; ++i)
-            {
-                auto bytevec =
-                    NDArrayHelper::toByteVector<float>(xyzw_components.at(i)->text().toStdString());
-                success &= bytevec.size();
-                res.insert(res.end(), bytevec.begin(), bytevec.end());
-            }
-        }
-        else
-        {
-            res.reserve(32);
-            for (size_t i = 0; i < 4; ++i)
-            {
-                auto bytevec = NDArrayHelper::toByteVector<double>(
-                    xyzw_components.at(i)->text().toStdString());
-                success &= !bytevec.empty();
-                res.insert(res.end(), bytevec.begin(), bytevec.end());
-            }
-        }
-        return (success) ? res : std::vector<unsigned char>();
-    }
-
-    void
-    QuaternionWidget::quaternionElementChanged()
-    {
-        highlightUnparsableEntries();
-    }
-} // namespace armarx
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/QuaternionWidget.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/QuaternionWidget.h
deleted file mode 100644
index c75e0fad87b50c8a1225dbdcc4fc901b7c088650..0000000000000000000000000000000000000000
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/QuaternionWidget.h
+++ /dev/null
@@ -1,65 +0,0 @@
-#pragma once
-#include <vector>
-
-#include <QLineEdit>
-#include <QObject>
-#include <QVBoxLayout>
-#include <QWidget>
-
-#include "RobotAPI/libraries/aron/core/type/variant/ndarray/Matrix.h"
-
-
-namespace armarx
-{
-    class QuaternionWidget : public QWidget
-    {
-        Q_OBJECT
-    public:
-        QuaternionWidget(aron::type::quaternion::ElementType);
-
-        static QuaternionWidget* DynamicCast(QWidget*);
-        static QuaternionWidget* DynamicCastAndCheck(QWidget*);
-
-        enum struct QuaternionComponents
-        {
-            X = 0,
-            Y,
-            Z,
-            W
-        };
-        void setText(QuaternionComponents col, const std::string& str);
-        std::string getText(QuaternionComponents col);
-        bool hasParseErrors();
-        std::vector<unsigned char> parseAllToNDArray();
-
-    private:
-        std::vector<QLineEdit*> xyzw_components;
-        aron::type::quaternion::ElementType element_type;
-        bool noParseErrors = true;
-
-        void highlightUnparsableEntries();
-        template <typename T>
-        std::pair<bool, T> parseQuatVals(QuaternionComponents comp);
-
-    private slots:
-        void quaternionElementChanged();
-    };
-
-    template <typename T>
-    std::pair<bool, T>
-    QuaternionWidget::parseQuatVals(QuaternionWidget::QuaternionComponents comp)
-    {
-        // size_t data_size = element_type == aron::type::quaternion::ElementType::FLOAT32 ? 4 : 8;
-        try
-        {
-            T val = simox::alg::to_<T>(xyzw_components.at((size_t)comp)->text().toStdString());
-            return {true, val};
-        }
-        catch (const simox::error::SimoxError& err)
-        {
-            return {false, NAN};
-        }
-    }
-
-
-} // namespace armarx
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/AronTreeWidgetModal.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/AronTreeWidgetModal.cpp
index 8af5b0c9ba513773b7666369080ba4a0dced4a93..8fbd9c5ba1abdb5e2d2175b1ff545579034c7376 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/AronTreeWidgetModal.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/AronTreeWidgetModal.cpp
@@ -2,27 +2,19 @@
 
 namespace armarx
 {
-    AronTreeWidgetModal::AronTreeWidgetModal(const std::string& label,
-                                             AronTreeWidgetItem* item,
-                                             QTreeWidget* parent) :
+    AronTreeWidgetModal::AronTreeWidgetModal(const std::string& label, AronTreeWidgetItem* item, QTreeWidget* parent) :
         QDialog(parent),
-        init(false,
-             false,
-             item->text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_NAME),
-             item->aronType),
         item(item),
         label(label),
         parent(parent)
     {
-        init.setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_NAME,
-                     item->text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_NAME));
-        init.setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE,
-                     item->text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE));
-        init.setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_TYPE,
-                     item->text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_TYPE));
+        init.aronType = item->aronType;
+        init.setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_NAME, item->text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_NAME));
+        init.setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE, item->text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE));
+        init.setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_TYPE, item->text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_TYPE));
         for (int i = 0; i < item->childCount(); ++i)
         {
             init.addChild(item->child(i)->clone());
         }
     }
-} // namespace armarx
+}
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/AronTreeWidgetModal.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/AronTreeWidgetModal.h
index 03c01a9843da2c6a55bf0710dbddb31b16887624..cda9f7e728df6da713fb1e09001bc37e8502b9e6 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/AronTreeWidgetModal.h
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/AronTreeWidgetModal.h
@@ -1,39 +1,34 @@
 #pragma once
 
 #include <stack>
-
-#include <QDialog>
-#include <QTreeWidget>
-
 #include <ArmarXCore/core/system/ImportExportComponent.h>
 
-#include <ArmarXGui/libraries/ArmarXGuiBase/ArmarXComponentWidgetController.h>
-#include <ArmarXGui/libraries/ArmarXGuiBase/ArmarXGuiPlugin.h>
-
 #include "../AronTreeWidgetItem.h"
 #include "../Data.h"
 
+#include <ArmarXGui/libraries/ArmarXGuiBase/ArmarXGuiPlugin.h>
+#include <ArmarXGui/libraries/ArmarXGuiBase/ArmarXComponentWidgetController.h>
+
+#include <QDialog>
+#include <QTreeWidget>
+
 namespace armarx
 {
-    class AronTreeWidgetModal : public QDialog
+    class AronTreeWidgetModal  :
+            public QDialog
     {
         Q_OBJECT
 
     public:
-        AronTreeWidgetModal(const std::string& label,
-                            AronTreeWidgetItem* item,
-                            QTreeWidget* parent);
+        AronTreeWidgetModal(const std::string& label, AronTreeWidgetItem* item, QTreeWidget* parent);
 
     protected slots:
-        virtual void
-        reset()
+        virtual void reset()
         {
-            item->setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_NAME,
-                          init.text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_NAME));
-            item->setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE,
-                          init.text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE));
-            item->setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_TYPE,
-                          init.text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_TYPE));
+            item->aronType = init.aronType;
+            item->setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_NAME, init.text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_NAME));
+            item->setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE, init.text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE));
+            item->setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_TYPE, init.text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_TYPE));
             for (int i = 0; i < item->childCount(); ++i)
             {
                 item->removeChild(item->child(i));
@@ -43,13 +38,13 @@ namespace armarx
                 item->addChild(init.child(i)->clone());
             }
         }
-        virtual void
-        submit()
+        virtual void submit()
         {
             accept();
         }
 
     protected:
+
         AronTreeWidgetItem init;
         AronTreeWidgetItem* item;
 
@@ -59,4 +54,4 @@ namespace armarx
     };
 
     using AronTreeWidgetModalControllerPtr = std::shared_ptr<AronTreeWidgetModal>;
-} // namespace armarx
+}
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/bool/AronTreeWidgetBoolInputModal.ui b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/bool/AronTreeWidgetBoolInputModal.ui
new file mode 100644
index 0000000000000000000000000000000000000000..69f4a5c99b277ba4808ecc45081df86e0ab55ef0
--- /dev/null
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/bool/AronTreeWidgetBoolInputModal.ui
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AronTreeWidgetBoolInputModalWidget</class>
+ <widget class="QWidget" name="AronTreeWidgetBoolInputModalWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1015</width>
+    <height>498</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>SkillManagerMonitorWidget</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QSplitter" name="splitter">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <widget class="QGroupBox" name="groupBoxInput">
+      <property name="title">
+       <string>InputField</string>
+      </property>
+      <layout class="QGridLayout" name="gridLayout">
+       <item row="1" column="0">
+        <widget class="QPushButton" name="pushButtonReset">
+         <property name="text">
+          <string>Reset</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="QPushButton" name="pushButtonSubmit">
+         <property name="text">
+          <string>Submit</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="0" colspan="2">
+        <widget class="QTextEdit" name="textEditInput"/>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/bool/AronTreeWidgetBoolInputModalController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/bool/AronTreeWidgetBoolInputModalController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7bc282597909fef3dcd538724cb2bf52f05893d2
--- /dev/null
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/bool/AronTreeWidgetBoolInputModalController.cpp
@@ -0,0 +1,27 @@
+#include "AronTreeWidgetBoolInputModalController.h"
+
+namespace armarx
+{
+    AronTreeWidgetBoolInputModalController::AronTreeWidgetBoolInputModalController(const std::string& label, AronTreeWidgetItem* item, QTreeWidget* parent) :
+        AronTreeWidgetModal(label, item, parent)
+    {
+        widget.setupUi(this);
+
+        // TODO
+    }
+
+    void AronTreeWidgetBoolInputModalController::submit()
+    {
+        item->setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE, widget.textEditInput->toPlainText());
+
+        AronTreeWidgetModal::submit();
+    }
+
+    void AronTreeWidgetBoolInputModalController::reset()
+    {
+        AronTreeWidgetModal::reset();
+
+        // reset to initial value
+        widget.textEditInput->setPlainText(init.text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE));
+    }
+}
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/bool/AronTreeWidgetBoolInputModalController.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/bool/AronTreeWidgetBoolInputModalController.h
new file mode 100644
index 0000000000000000000000000000000000000000..1a1c60a07665fae06869962bc9a66c84da4cef12
--- /dev/null
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/bool/AronTreeWidgetBoolInputModalController.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include "../AronTreeWidgetModal.h"
+
+#include <RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/bool/ui_AronTreeWidgetBoolInputModal.h>
+
+#include <QDialog>
+
+namespace armarx
+{
+    class AronTreeWidgetBoolInputModalController :
+        public AronTreeWidgetModal
+    {
+
+    public:
+
+        AronTreeWidgetBoolInputModalController(const std::string& label, AronTreeWidgetItem* item, QTreeWidget* parent);
+
+    private slots:
+
+        void submit() final;
+        void reset() final;
+
+    private:
+        Ui::AronTreeWidgetBoolInputModalWidget widget;
+    };
+}
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/dict/AronTreeWidgetDictInputModal.ui b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/dict/AronTreeWidgetDictInputModal.ui
new file mode 100644
index 0000000000000000000000000000000000000000..b9b800ed26a2b2170b8ab06633e8e795b1957be4
--- /dev/null
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/dict/AronTreeWidgetDictInputModal.ui
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AronTreeWidgetDictInputModalWidget</class>
+ <widget class="QWidget" name="AronTreeWidgetDictInputModalWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1015</width>
+    <height>498</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>SkillManagerMonitorWidget</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QSplitter" name="splitter">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <widget class="QGroupBox" name="groupBoxInput">
+      <property name="title">
+       <string>InputField</string>
+      </property>
+      <layout class="QGridLayout" name="gridLayout">
+       <item row="0" column="0" colspan="5">
+        <widget class="QTreeWidget" name="treeWidgetDict">
+         <column>
+          <property name="text">
+           <string>Key</string>
+          </property>
+         </column>
+         <column>
+          <property name="text">
+           <string>Value</string>
+          </property>
+         </column>
+         <column>
+          <property name="text">
+           <string>Type</string>
+          </property>
+         </column>
+        </widget>
+       </item>
+       <item row="1" column="3" colspan="2">
+        <widget class="QPushButton" name="pushButtonAddElement">
+         <property name="text">
+          <string>+ Add element</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="0" colspan="3">
+        <widget class="QLineEdit" name="lineEditKey">
+         <property name="maximumSize">
+          <size>
+           <width>880</width>
+           <height>16777215</height>
+          </size>
+         </property>
+         <property name="text">
+          <string>Enter Key</string>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="0">
+        <widget class="QPushButton" name="pushButtonReset">
+         <property name="text">
+          <string>Reset</string>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1" colspan="4">
+        <widget class="QPushButton" name="pushButtonSubmit">
+         <property name="text">
+          <string>Submit</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/dict/AronTreeWidgetDictInputModalController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/dict/AronTreeWidgetDictInputModalController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..0e96cb6245384234e01f6d312866495f619e51f8
--- /dev/null
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/dict/AronTreeWidgetDictInputModalController.cpp
@@ -0,0 +1,76 @@
+#include "AronTreeWidgetDictInputModalController.h"
+
+#include <RobotAPI/libraries/aron/core/type/variant/All.h>
+
+#include "../../visitors/AronTreeWidgetCreator.h"
+
+namespace armarx
+{
+    AronTreeWidgetDictInputModalController::AronTreeWidgetDictInputModalController(const std::string& label, AronTreeWidgetItem* item, QTreeWidget* parent) :
+        AronTreeWidgetModal(label, item, parent)
+    {
+        widget.setupUi(this);
+
+        // set header
+        widget.groupBoxInput->setTitle(QString::fromStdString(label));
+        reset();
+
+        // connect signals
+        connect(widget.pushButtonAddElement, &QPushButton::clicked,
+                this, &AronTreeWidgetDictInputModalController::addEmptyElement);
+
+        connect(widget.pushButtonReset, &QPushButton::clicked,
+                  this, &AronTreeWidgetDictInputModalController::reset);
+        connect(widget.pushButtonSubmit, &QPushButton::clicked,
+                  this, &AronTreeWidgetDictInputModalController::submit);
+
+    }
+
+    void AronTreeWidgetDictInputModalController::submit()
+    {
+        for (const auto& added : addedItems)
+        {
+            item->addChild(added->copy());
+        }
+
+        AronTreeWidgetModal::submit();
+    }
+
+    void AronTreeWidgetDictInputModalController::reset()
+    {
+        AronTreeWidgetModal::reset();
+
+        // reset to initial value
+        widget.treeWidgetDict->clear();
+        for (int i = 0; i < init.childCount(); ++i)
+        {
+            auto el = init.child(i);
+            widget.treeWidgetDict->addTopLevelItem(el->clone());
+        }
+    }
+
+    void AronTreeWidgetDictInputModalController::addEmptyElement()
+    {
+        QString s = widget.lineEditKey->text();
+        widget.lineEditKey->setText("Enter Key");
+
+        if (widget.treeWidgetDict->findItems(s, Qt::MatchFlag::MatchExactly, 0).empty())
+        {
+            auto t = item->aronType;
+            auto d = aron::type::Dict::DynamicCastAndCheck(t);
+            auto ac = d->getAcceptedType();
+
+            AronTreeWidgetCreatorVisitor v(nullptr);
+            v.setTopLevelWidget(widget.treeWidgetDict);
+            aron::type::visit(v, ac);
+
+            if (v.createdQWidgetItem)
+            {
+                v.createdQWidgetItem->setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_NAME,
+                                              s);
+                addedItems.push_back(v.createdQWidgetItem);
+                widget.treeWidgetDict->addTopLevelItem(v.createdQWidgetItem);
+            }
+        }
+    }
+}
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/dict/AronTreeWidgetDictInputModalController.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/dict/AronTreeWidgetDictInputModalController.h
new file mode 100644
index 0000000000000000000000000000000000000000..f5d94a04b46994220fb0ff9c81e1fff50a9c3091
--- /dev/null
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/dict/AronTreeWidgetDictInputModalController.h
@@ -0,0 +1,36 @@
+#pragma once
+
+#include <stack>
+#include <ArmarXCore/core/system/ImportExportComponent.h>
+
+#include <ArmarXGui/libraries/ArmarXGuiBase/ArmarXGuiPlugin.h>
+#include <ArmarXGui/libraries/ArmarXGuiBase/ArmarXComponentWidgetController.h>
+#include <ArmarXGui/libraries/SimpleConfigDialog/SimpleConfigDialog.h>
+
+#include "../AronTreeWidgetModal.h"
+
+#include <RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/dict/ui_AronTreeWidgetDictInputModal.h>
+
+#include <QDialog>
+
+namespace armarx
+{
+    class AronTreeWidgetDictInputModalController :
+        public AronTreeWidgetModal
+    {
+    public:
+
+        AronTreeWidgetDictInputModalController(const std::string& label, AronTreeWidgetItem* item, QTreeWidget* parent);
+
+    private slots:
+
+        void submit() final;
+        void reset() final;
+
+        void addEmptyElement();
+
+    private:
+        std::vector<AronTreeWidgetItem*> addedItems;
+        Ui::AronTreeWidgetDictInputModalWidget widget;
+    };
+}
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/float_double/AronTreeWidgetFloatInputModal.ui b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/float_double/AronTreeWidgetFloatInputModal.ui
new file mode 100644
index 0000000000000000000000000000000000000000..ba3734066df16e227142f6636d7cb6e39c415646
--- /dev/null
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/float_double/AronTreeWidgetFloatInputModal.ui
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AronTreeWidgetFloatInputModalWidget</class>
+ <widget class="QWidget" name="AronTreeWidgetFloatInputModalWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1015</width>
+    <height>498</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>SkillManagerMonitorWidget</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QSplitter" name="splitter">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <widget class="QGroupBox" name="groupBoxInput">
+      <property name="title">
+       <string>InputField</string>
+      </property>
+      <layout class="QGridLayout" name="gridLayout">
+       <item row="1" column="0">
+        <widget class="QPushButton" name="pushButtonReset">
+         <property name="text">
+          <string>Reset</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="QPushButton" name="pushButtonSubmit">
+         <property name="text">
+          <string>Submit</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="0" colspan="2">
+        <widget class="QTextEdit" name="textEditInput"/>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/float_double/AronTreeWidgetFloatInputModalController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/float_double/AronTreeWidgetFloatInputModalController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ae9cbe6aac34390785cdc410508681ff0b79a9f6
--- /dev/null
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/float_double/AronTreeWidgetFloatInputModalController.cpp
@@ -0,0 +1,27 @@
+#include "AronTreeWidgetFloatInputModalController.h"
+
+namespace armarx
+{
+    AronTreeWidgetFloatInputModalController::AronTreeWidgetFloatInputModalController(const std::string& label, AronTreeWidgetItem* item, QTreeWidget* parent) :
+        AronTreeWidgetModal(label, item, parent)
+    {
+        widget.setupUi(this);
+
+        // TODO
+    }
+
+    void AronTreeWidgetFloatInputModalController::submit()
+    {
+        item->setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE, widget.textEditInput->toPlainText());
+
+        AronTreeWidgetModal::submit();
+    }
+
+    void AronTreeWidgetFloatInputModalController::reset()
+    {
+        AronTreeWidgetModal::reset();
+
+        // reset to initial value
+        widget.textEditInput->setPlainText(init.text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE));
+    }
+}
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/float_double/AronTreeWidgetFloatInputModalController.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/float_double/AronTreeWidgetFloatInputModalController.h
new file mode 100644
index 0000000000000000000000000000000000000000..debd50e9f04eae0d35c161d9124e7876d3eacc6c
--- /dev/null
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/float_double/AronTreeWidgetFloatInputModalController.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include "../AronTreeWidgetModal.h"
+
+#include <RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/float_double/ui_AronTreeWidgetFloatInputModal.h>
+
+#include <QDialog>
+
+namespace armarx
+{
+    class AronTreeWidgetFloatInputModalController :
+        public AronTreeWidgetModal
+    {
+
+    public:
+
+        AronTreeWidgetFloatInputModalController(const std::string& label, AronTreeWidgetItem* item, QTreeWidget* parent);
+
+    private slots:
+
+        void submit() final;
+        void reset() final;
+
+    private:
+        Ui::AronTreeWidgetFloatInputModalWidget widget;
+    };
+}
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/int_long/AronTreeWidgetIntInputModal.ui b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/int_long/AronTreeWidgetIntInputModal.ui
new file mode 100644
index 0000000000000000000000000000000000000000..538a78e766e997ad9811ff11b6036f088de332e2
--- /dev/null
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/int_long/AronTreeWidgetIntInputModal.ui
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>AronTreeWidgetIntInputModalWidget</class>
+ <widget class="QWidget" name="AronTreeWidgetIntInputModalWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1015</width>
+    <height>498</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>SkillManagerMonitorWidget</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QSplitter" name="splitter">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <widget class="QGroupBox" name="groupBoxInput">
+      <property name="title">
+       <string>InputField</string>
+      </property>
+      <layout class="QGridLayout" name="gridLayout">
+       <item row="1" column="0">
+        <widget class="QPushButton" name="pushButtonReset">
+         <property name="text">
+          <string>Reset</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1">
+        <widget class="QPushButton" name="pushButtonSubmit">
+         <property name="text">
+          <string>Submit</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="0" colspan="2">
+        <widget class="QTextEdit" name="textEditInput"/>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/int_long/AronTreeWidgetIntInputModalController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/int_long/AronTreeWidgetIntInputModalController.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..dd9b19e06494c8720f7cc2e172b0caecad3fc7d2
--- /dev/null
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/int_long/AronTreeWidgetIntInputModalController.cpp
@@ -0,0 +1,27 @@
+#include "AronTreeWidgetIntInputModalController.h"
+
+namespace armarx
+{
+    AronTreeWidgetIntInputModalController::AronTreeWidgetIntInputModalController(const std::string& label, AronTreeWidgetItem* item, QTreeWidget* parent) :
+        AronTreeWidgetModal(label, item, parent)
+    {
+        widget.setupUi(this);
+
+        // TODO
+    }
+
+    void AronTreeWidgetIntInputModalController::submit()
+    {
+        item->setText(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE, widget.textEditInput->toPlainText());
+
+        AronTreeWidgetModal::submit();
+    }
+
+    void AronTreeWidgetIntInputModalController::reset()
+    {
+        AronTreeWidgetModal::reset();
+
+        // reset to initial value
+        widget.textEditInput->setPlainText(init.text(aron_tree_widget::constantes::TREE_WIDGET_ITEM_VALUE));
+    }
+}
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/int_long/AronTreeWidgetIntInputModalController.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/int_long/AronTreeWidgetIntInputModalController.h
new file mode 100644
index 0000000000000000000000000000000000000000..1de43a0870b2af8ff4edbc974c13f826d31e67ef
--- /dev/null
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/int_long/AronTreeWidgetIntInputModalController.h
@@ -0,0 +1,27 @@
+#pragma once
+
+#include "../AronTreeWidgetModal.h"
+
+#include <RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/modal/int_long/ui_AronTreeWidgetIntInputModal.h>
+
+#include <QDialog>
+
+namespace armarx
+{
+    class AronTreeWidgetIntInputModalController :
+        public AronTreeWidgetModal
+    {
+
+    public:
+
+        AronTreeWidgetIntInputModalController(const std::string& label, AronTreeWidgetItem* item, QTreeWidget* parent);
+
+    private slots:
+
+        void submit() final;
+        void reset() final;
+
+    private:
+        Ui::AronTreeWidgetIntInputModalWidget widget;
+    };
+}
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetContextMenu.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetContextMenu.cpp
index 76c38e9a27d686d40e7dce7d29380074957f5dde..3f484b85d92717f332aa7d72f8890bebbce443c6 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetContextMenu.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetContextMenu.cpp
@@ -85,12 +85,6 @@ namespace armarx
             currFont.setItalic(true);
             castedContainer->setFont(1, currFont);
         }
-        // if it's a dict, we might have resolved key conflicts this way.
-        else if (castedContainer &&
-                 castedContainer->aronType->getDescriptor() == aron::type::Descriptor::DICT)
-        {
-            castedContainer->checkKeyValidityOfChildren();
-        }
     }
 
 
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetConverter.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetConverter.cpp
index 10fa387251f71fefbacfd95b39d1510ce7163db7..5a5d52c03c9fd37027c55b22a46e4904bad918a1 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetConverter.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetConverter.cpp
@@ -35,8 +35,7 @@
 // qt
 #include <QTreeWidgetItem>
 
-#include "../EditMatrixWidget.h"
-#include "../QuaternionWidget.h"
+#include <RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/EditMatrixWidget.h>
 
 
 namespace armarx
@@ -86,16 +85,7 @@ namespace armarx
 
             if (v.createdAron && !v.errorOccured)
             {
-                // TODO find more elegant solution that does not crash aron code
-                auto key = it->text(0).toStdString();
-                if (createdAronDict->hasElement(key))
-                {
-                    errorOccured = true;
-                }
-                else
-                {
-                    createdAronDict->addElement(key, v.createdAron);
-                }
+                createdAronDict->addElement(it->text(0).toStdString(), v.createdAron);
             }
             else
             {
@@ -152,7 +142,6 @@ namespace armarx
     void
     AronTreeWidgetConverterVisitor::visitAronVariant(const aron::type::TuplePtr& i)
     {
-        // CAUTION; UNTESTED
         auto createdAronTuple = std::make_shared<aron::data::List>(i->getPath());
         createdAron = createdAronTuple;
         auto* currElem = parentItem->child(index);
@@ -232,26 +221,7 @@ namespace armarx
     void
     AronTreeWidgetConverterVisitor::visitAronVariant(const aron::type::QuaternionPtr& i)
     {
-        auto createdQuat = std::make_shared<aron::data::NDArray>(i->getPath());
-        createdAron = createdQuat;
-        int dataSize = i->getElementType() == aron::type::quaternion::ElementType::FLOAT32 ? 4 : 8;
-        createdQuat->setShape({1, 4, dataSize});
-        createdQuat->setType(i->getFullName());
-        auto* currTreeElem = parentItem->child(index);
-        auto* itemWidget = currTreeElem->treeWidget()->itemWidget(currTreeElem, 1);
-        auto* quatWidget = QuaternionWidget::DynamicCastAndCheck(itemWidget);
-        if (quatWidget->hasParseErrors())
-        {
-            errorOccured = true;
-            return;
-        }
-        auto serialized = quatWidget->parseAllToNDArray();
-        if ((int)serialized.size() != dataSize * 4)
-        {
-            ARMARX_ERROR
-                << "serialized quaternions did not return byte sequence of correct length!";
-        }
-        createdQuat->setData(serialized.size(), serialized.data());
+        // TODO
     }
 
     void
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetCreator.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetCreator.cpp
index e7dde099a79a7bab378e82b71270e8ec090dcee2..de92a507c4a030c1f4c26ff784aee2f2c78edfc9 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetCreator.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetCreator.cpp
@@ -23,7 +23,6 @@
 #include <string>
 
 #include "../EditMatrixWidget.h"
-#include "../QuaternionWidget.h"
 
 // base class
 #include "AronTreeWidgetCreator.h"
@@ -31,7 +30,6 @@
 // data
 #include "../AronTreeWidgetItem.h"
 #include "../Data.h"
-#include "AronTreeWidgetContextMenu.h"
 
 namespace armarx
 {
@@ -95,8 +93,9 @@ namespace armarx
             key = std::to_string(parentOfCreatedObj->childCount());
         }
 
-        createdQWidgetItem =
-            new AronTreeWidgetItem(isDictChild, editableValue, QString::fromStdString(key), i);
+        createdQWidgetItem = new AronTreeWidgetItem(isDictChild, editableValue);
+        createdQWidgetItem->aronType = i;
+        createdQWidgetItem->setText(0, QString::fromStdString(key));
         createdQWidgetItem->setText(1, QString::fromStdString(defaul));
         createdQWidgetItem->setText(2, QString::fromStdString(i->getShortName()));
         createdQWidgetItem->setText(
@@ -123,8 +122,9 @@ namespace armarx
             key = i->getPath().getLastElement();
         }
 
-        createdQWidgetItem =
-            new AronTreeWidgetItem(editableValue, false, QString::fromStdString(key), i);
+        createdQWidgetItem = new AronTreeWidgetItem(editableValue, false);
+        createdQWidgetItem->setText(0, QString::fromStdString(key));
+        createdQWidgetItem->aronType = i;
         parentOfCreatedObj->addChild(createdQWidgetItem);
 
         for (const auto& [key, value] : i->getMemberTypes())
@@ -166,7 +166,6 @@ namespace armarx
     void
     AronTreeWidgetCreatorVisitor::visitAronVariant(const aron::type::TuplePtr& tuple)
     {
-        // CAUTION; UNTESTED
         // create default, uneditable tree widget item.
         insertNewTreeViewWidget(tuple, "");
         // attach all children
@@ -185,9 +184,6 @@ namespace armarx
     AronTreeWidgetCreatorVisitor::visitAronVariant(const aron::type::ListPtr& i)
     {
         insertNewTreeViewWidget(i, "");
-        // TODO: Move to external helper class
-        auto txt = AronTreeWidgetContextMenuVisitor::generateNumElementsText(0);
-        createdQWidgetItem->setText(1, txt);
     }
     void
     AronTreeWidgetCreatorVisitor::visitAronVariant(const aron::type::NDArrayPtr& i)
@@ -201,6 +197,7 @@ namespace armarx
         editableValue = true;
         insertNewTreeViewWidget(i, "");
         // TODO add size and type info to 2nd column manually here
+        // TODO: make hello world execution work!
 
         // Widget fiddling source: https://blog.manash.io/quick-qt-6-how-to-add-qpushbutton-or-widgets-to-a-qtreewidget-as-qtreewidgetitem-2ae9f54c0e5f
         // overlay custom widget in column 1
@@ -212,11 +209,7 @@ namespace armarx
     void
     AronTreeWidgetCreatorVisitor::visitAronVariant(const aron::type::QuaternionPtr& i)
     {
-        editableValue = true;
         insertNewTreeViewWidget(i, "");
-        auto* toplevelWidget = createdQWidgetItem->treeWidget();
-        QuaternionWidget* quatWidget = new QuaternionWidget(i->getElementType());
-        toplevelWidget->setItemWidget(createdQWidgetItem, 1, quatWidget);
     }
     void
     AronTreeWidgetCreatorVisitor::visitAronVariant(const aron::type::ImagePtr& i)
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetModalCreator.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetModalCreator.cpp
index edb553e2d840dc0651c191c5d13159c9605d50ce..50a5753b7c5fb2f069885e6c0c242bc055c7fa23 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetModalCreator.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetModalCreator.cpp
@@ -20,14 +20,15 @@
  *             GNU General Public License
  */
 
-#include "AronTreeWidgetModalCreator.h"
-
 #include <string>
 
+#include "AronTreeWidgetModalCreator.h"
+
 #include <SimoxUtility/algorithm/string.h>
 
 // modals
 #include "../modal/text/AronTreeWidgetTextInputModalController.h"
+#include "../modal/dict/AronTreeWidgetDictInputModalController.h"
 
 // qt
 #include <QTreeWidget>
@@ -38,6 +39,7 @@ namespace armarx
 
     void AronTreeWidgetModalCreatorVisitor::visitAronVariant(const aron::type::ObjectPtr& i)
     {
+        // should not happen, right?
     }
 
     void
@@ -103,14 +105,12 @@ namespace armarx
     void
     AronTreeWidgetModalCreatorVisitor::visitAronVariant(const aron::type::StringPtr& i)
     {
-        createdModal =
-            std::make_shared<AronTreeWidgetTextInputModalController>(label, item, parent);
+        createdModal = std::make_shared<AronTreeWidgetTextInputModalController>(label, item, parent);
     }
 
-    void
-    AronTreeWidgetModalCreatorVisitor::visitUnknown(Input&)
+    void AronTreeWidgetModalCreatorVisitor::visitUnknown(Input&)
     {
-        ARMARX_WARNING_S << "Received an unknown type when trying to create a tree view widget "
-                            "modal for a skill argument type.";
+        ARMARX_WARNING_S << "Received an unknown type when trying to create a tree view widget modal for a skill argument type.";
     }
-} // namespace armarx
+}
+
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetSetter.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetSetter.cpp
index 6c03126d63948bd1f89446dc6fabea89755d25e5..63b29b930c468a1c47e0afe1099616ad9686bc51 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetSetter.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/visitors/AronTreeWidgetSetter.cpp
@@ -24,25 +24,11 @@
 
 #include <string>
 
-#include "../EditMatrixWidget.h"
-#include "../QuaternionWidget.h"
+#include <RobotAPI/gui-plugins/SkillManagerPlugin/aronTreeWidget/EditMatrixWidget.h>
+
 #include "AronTreeWidgetContextMenu.h"
 #include "AronTreeWidgetCreator.h"
 
-
-template <typename T>
-std::string
-usString(T number, size_t precision = 3)
-{
-    std::stringstream ss;
-    const char* locale = "C";
-    ss.imbue(std::locale(locale));
-
-    ss << std::fixed << std::setprecision(precision) << number;
-    return ss.str();
-}
-
-
 //visitors
 namespace armarx
 {
@@ -139,7 +125,7 @@ namespace armarx
                 AronTreeWidgetSetterVisitor v(el, x);
                 aron::data::visit(v, value);
                 auto* currChild = el->child(x);
-                std::string listNum = usString(x);
+                std::string listNum = std::to_string(x);
                 currChild->setText(0, listNum.c_str());
 
                 ++x;
@@ -163,15 +149,11 @@ namespace armarx
         auto* castedEl = AronTreeWidgetItem::DynamicCast(parentItem->child(index));
         ARMARX_CHECK(castedEl);
         auto matrixCast = aron::type::Matrix::DynamicCast(castedEl->aronType);
-        auto quaternionCast = aron::type::Quaternion::DynamicCast(castedEl->aronType);
         auto* rootWidget = castedEl->treeWidget();
         ARMARX_CHECK(rootWidget);
-        EditMatrixWidget* matrixWidget =
+        EditMatrixWidget* widget =
             EditMatrixWidget::DynamicCast(rootWidget->itemWidget(castedEl, 1));
-        QuaternionWidget* quaternionWidget =
-            QuaternionWidget::DynamicCast(rootWidget->itemWidget(castedEl, 1));
-
-        if (matrixCast && matrixWidget)
+        if (matrixCast && widget)
         {
             auto elemType = matrixCast->getElementType();
             auto* rawData = arr->getData();
@@ -183,34 +165,29 @@ namespace armarx
                     case aron::type::matrix::ElementType::FLOAT32:
                     {
                         static_assert(sizeof(float) == 4);
-                        float* interpreted = reinterpret_cast<float*>(rawData);
-                        float laundered = std::launder(interpreted)[elementNr];
-                        return usString<float>(laundered);
+                        float interpreted = reinterpret_cast<float*>(rawData)[elementNr];
+                        return std::to_string(interpreted);
                     }
                     case aron::type::matrix::ElementType::FLOAT64:
                     {
                         static_assert(sizeof(double) == 8);
-                        double* interpreted = reinterpret_cast<double*>(rawData);
-                        float laundered = std::launder(interpreted)[elementNr];
-                        return usString<double>(laundered);
+                        double interpreted = reinterpret_cast<double*>(rawData)[elementNr];
+                        return std::to_string(interpreted);
                     }
                     case aron::type::matrix::ElementType::INT16:
                     {
-                        int16_t* interpreted = reinterpret_cast<int16_t*>(rawData);
-                        int16_t laudered = std::launder(interpreted)[elementNr];
-                        return usString<int16_t>(laudered);
+                        int16_t interpreted = reinterpret_cast<int16_t*>(rawData)[elementNr];
+                        return std::to_string(interpreted);
                     }
                     case aron::type::matrix::ElementType::INT32:
                     {
-                        int32_t* interpreted = reinterpret_cast<int32_t*>(rawData);
-                        int32_t laudered = std::launder(interpreted)[elementNr];
-                        return usString<int32_t>(laudered);
+                        int32_t interpreted = reinterpret_cast<int32_t*>(rawData)[elementNr];
+                        return std::to_string(interpreted);
                     }
                     case aron::type::matrix::ElementType::INT64:
                     {
-                        int64_t* interpreted = reinterpret_cast<int64_t*>(rawData);
-                        int64_t laudered = std::launder(interpreted)[elementNr];
-                        return usString<int64_t>(laudered);
+                        int64_t interpreted = reinterpret_cast<int64_t*>(rawData)[elementNr];
+                        return std::to_string(interpreted);
                     }
                 }
                 return "Error!";
@@ -221,48 +198,12 @@ namespace armarx
             {
                 for (size_t col = 0; (int)col < matrixCast->getCols(); ++col)
                 {
-                    matrixWidget->setText(row, col, toString(col * matrixCast->getRows() + row));
+                    widget->setText(row, col, toString(col * matrixCast->getRows() + row));
                 }
             }
         }
-        else if (quaternionCast && quaternionWidget)
-        {
-            auto elemType = quaternionCast->getElementType();
-            auto rawData = arr->getData();
-            auto shape = arr->getShape();
-            // string can convert any item
-            auto toString = [elemType, rawData](size_t elementNr) -> std::string
-            {
-                switch (elemType)
-                {
-                    case aron::type::quaternion::ElementType::FLOAT32:
-                    {
-                        static_assert(sizeof(float) == 4);
-                        float* interpreted = reinterpret_cast<float*>(rawData);
-                        float laundered = std::launder(interpreted)[elementNr];
-                        return usString<float>(laundered);
-                    }
-                    case aron::type::quaternion::ElementType::FLOAT64:
-                    {
-                        static_assert(sizeof(double) == 8);
-                        double* interpreted = reinterpret_cast<double*>(rawData);
-                        //TODO: Note to future Tobi: Fix pls. Does not find correct number. May also be export error from component!
-                        // also: skill execution crashes. See into Skill provider
-                        float laundered = std::launder(interpreted)[elementNr];
-                        return usString<double>(laundered);
-                    }
-                }
-                return "Error!";
-            };
-            for (size_t i = 0; i < 4; ++i)
-            {
-                quaternionWidget->setText((QuaternionWidget::QuaternionComponents)i, toString(i));
-            }
-        }
         else
         {
-            ARMARX_ERROR
-                << "we do not support raw NDArrays. Ask Fabian Peller for more information.";
         }
     }
 
@@ -272,7 +213,7 @@ namespace armarx
         if (checkTreeWidgetItemForSimilarName(i->getPath().getLastElement()))
         {
             QTreeWidgetItem* el = parentItem->child(index);
-            el->setText(1, QString::fromStdString(usString<int>(i->getValue())));
+            el->setText(1, QString::fromStdString(std::to_string(i->getValue())));
         }
     }
 
@@ -282,7 +223,7 @@ namespace armarx
         if (checkTreeWidgetItemForSimilarName(i->getPath().getLastElement()))
         {
             QTreeWidgetItem* el = parentItem->child(index);
-            el->setText(1, QString::fromStdString(usString<long>(i->getValue())));
+            el->setText(1, QString::fromStdString(std::to_string(i->getValue())));
         }
     }
 
@@ -292,7 +233,7 @@ namespace armarx
         if (checkTreeWidgetItemForSimilarName(i->getPath().getLastElement()))
         {
             QTreeWidgetItem* el = parentItem->child(index);
-            el->setText(1, QString::fromStdString(usString<float>(i->getValue())));
+            el->setText(1, QString::fromStdString(std::to_string(i->getValue())));
         }
     }
 
@@ -302,7 +243,7 @@ namespace armarx
         if (checkTreeWidgetItemForSimilarName(i->getPath().getLastElement()))
         {
             QTreeWidgetItem* el = parentItem->child(index);
-            el->setText(1, QString::fromStdString(usString<double>(i->getValue())));
+            el->setText(1, QString::fromStdString(std::to_string(i->getValue())));
         }
     }
 
@@ -312,7 +253,7 @@ namespace armarx
         if (checkTreeWidgetItemForSimilarName(i->getPath().getLastElement()))
         {
             QTreeWidgetItem* el = parentItem->child(index);
-            el->setText(1, QString::fromStdString(usString<bool>(i->getValue())));
+            el->setText(1, QString::fromStdString(std::to_string(i->getValue())));
         }
     }