diff --git a/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.cpp b/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.cpp
index 52b48b28c97db0151b25b6d8f402fce153618b6f..699ec0e730a54a3d4032f02955f804d9c392fd1a 100644
--- a/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.cpp
+++ b/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.cpp
@@ -70,8 +70,7 @@ namespace armarx
                 layout()->setContentsMargins(0, 0, 0, 0);
                 for (const WidgetPtr& childPtr : ptr->widgets)
                 {
-                    addChild(childPtr);
-                    layout()->addWidget(children.back());
+                    layout()->addWidget(addChild(childPtr));
                 }
             }
 
@@ -90,8 +89,7 @@ namespace armarx
                 layout()->setContentsMargins(0, 0, 0, 0);
                 for (const WidgetPtr& childPtr : ptr->widgets)
                 {
-                    addChild(childPtr);
-                    layout()->addWidget(children.back());
+                    layout()->addWidget(addChild(childPtr));
                 }
             }
         };
@@ -110,8 +108,7 @@ namespace armarx
                 layout()->setContentsMargins(0, 0, 0, 0);
                 for (const LabeledWidgetPtr& labeledWidget : ptr->widgets)
                 {
-                    addChild(labeledWidget->w);
-                    l->addRow(QString::fromStdString(labeledWidget->label), children.back());
+                    l->addRow(QString::fromStdString(child->label), addChild(child->child));
                 }
             }
         };
@@ -586,7 +583,7 @@ namespace armarx
             return result;
         }
 
-        void DescribedWidgetLayoutBase::addChild(const WidgetPtr& childPtr)
+        DescribedWidgetBase* DescribedWidgetLayoutBase::addChild(const WidgetPtr& childPtr)
         {
             ARMARX_CHECK_EXPRESSION(listener);
             DescribedWidgetBase* c = makeDescribedWidget(childPtr, listener);
@@ -595,6 +592,7 @@ namespace armarx
                 this, SIGNAL(variantWidgetUpdatedSignal(std::string, VariantWidgetContent::VariantWidgetContentBasePtr)),
                 c , SLOT(variantWidgetUpdatedSlot(std::string, VariantWidgetContent::VariantWidgetContentBasePtr))
             );
+            return c;
         }
 
         DescribedWidgetBase* makeDescribedWidget(const WidgetPtr& p, ValueChangedListenerInterface* listener)
diff --git a/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.h b/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.h
index 8fe82d93519e093add4e609882ede96f9a15c04c..4f2abe866df4b21fe0d8f2095b975684b0ec9536 100644
--- a/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.h
+++ b/source/ArmarXGui/libraries/WidgetDescription/WidgetDescription.h
@@ -84,7 +84,7 @@ namespace armarx
             {
                 emit variantWidgetUpdatedSignal(name, data);
             }
-            virtual void addChild(const WidgetPtr& childPtr);
+            virtual DescribedWidgetBase* addChild(const WidgetPtr& childPtr);
 
         protected:
             std::vector<DescribedWidgetBase*> children;