diff --git a/source/RobotAPI/gui-plugins/KinematicUnitPlugin/KinematicUnitConfigDialog.cpp b/source/RobotAPI/gui-plugins/KinematicUnitPlugin/KinematicUnitConfigDialog.cpp
index 01596e7e599a2fe8cf22a57e095e5fae4ed1336a..f70637e0f1b7fba0562011159b5bfd6e0fd45eb2 100644
--- a/source/RobotAPI/gui-plugins/KinematicUnitPlugin/KinematicUnitConfigDialog.cpp
+++ b/source/RobotAPI/gui-plugins/KinematicUnitPlugin/KinematicUnitConfigDialog.cpp
@@ -49,10 +49,11 @@ KinematicUnitConfigDialog::KinematicUnitConfigDialog(QWidget* parent) :
     connect(this->ui->buttonBox, SIGNAL(accepted()), this, SLOT(verifyConfig()));
     ui->buttonBox->button(QDialogButtonBox::Ok)->setDefault(true);
     proxyFinder = new IceProxyFinder<KinematicUnitInterfacePrx>(this);
-    proxyFinder->setSearchMask("*");
+    proxyFinder->setSearchMask("*Unit");
     ui->gridLayout->addWidget(proxyFinder, 0, 1, 1, 2);
 
     connect(proxyFinder->getUi()->cbProxyName, SIGNAL(currentIndexChanged(int)), this, SLOT(selectionChanged(int)));
+    connect(proxyFinder->getUi()->cbProxyName, SIGNAL(editTextChanged(QString)), this, SLOT(proxyNameChanged(QString)));
 }
 
 KinematicUnitConfigDialog::~KinematicUnitConfigDialog()
@@ -88,20 +89,13 @@ void KinematicUnitConfigDialog::verifyConfig()
     }
 }
 
-void KinematicUnitConfigDialog::selectionChanged(int nr)
+void KinematicUnitConfigDialog::updateSubconfig(std::string kinematicUnitName)
 {
-    ARMARX_LOG << "Selected entry:" << nr;
-    ui->labelTopic->setText("");
-    ui->labelRobotModel->setText("");
-    ui->labelRNS->setText("");
-    if (nr < 0)
-    {
-        return;
-    }
-    std::string kinematicUnitName = proxyFinder->getUi()->cbProxyName->currentText().toStdString();
+
     try
     {
         ARMARX_INFO << "Connecting to KinematicUnitProxy " << kinematicUnitName;
+
         KinematicUnitInterfacePrx kinematicUnitInterfacePrx = getProxy<KinematicUnitInterfacePrx>(kinematicUnitName);
         std::string topicName = kinematicUnitInterfacePrx->getReportTopicName();
         std::string robotNodeSetName = kinematicUnitInterfacePrx->getRobotNodeSetName();
@@ -114,7 +108,30 @@ void KinematicUnitConfigDialog::selectionChanged(int nr)
     {
         ARMARX_INFO << "Could not connect to KinematicUnitProxy " << kinematicUnitName;
     }
+}
+
+void KinematicUnitConfigDialog::selectionChanged(int nr)
+{
+    ARMARX_LOG << "Selected entry:" << nr;
+    ui->labelTopic->setText("");
+    ui->labelRobotModel->setText("");
+    ui->labelRNS->setText("");
+    if (nr < 0)
+    {
+        return;
+    }
+    std::string kinematicUnitName = proxyFinder->getUi()->cbProxyName->currentText().toStdString();
+
+    updateSubconfig(kinematicUnitName);
+
+}
 
+void KinematicUnitConfigDialog::proxyNameChanged(QString kinematicUnitName)
+{
+    ui->labelTopic->setText("");
+    ui->labelRobotModel->setText("");
+    ui->labelRNS->setText("");
+    updateSubconfig(kinematicUnitName.toStdString());
 }
 
 
diff --git a/source/RobotAPI/gui-plugins/KinematicUnitPlugin/KinematicUnitConfigDialog.h b/source/RobotAPI/gui-plugins/KinematicUnitPlugin/KinematicUnitConfigDialog.h
index 9e0ab1ea9821fe878dd71014dbc54abef8a6d026..21e73d58f30a570633355075a159d19852203ca7 100644
--- a/source/RobotAPI/gui-plugins/KinematicUnitPlugin/KinematicUnitConfigDialog.h
+++ b/source/RobotAPI/gui-plugins/KinematicUnitPlugin/KinematicUnitConfigDialog.h
@@ -65,6 +65,10 @@ namespace armarx
         void verifyConfig();
 
         void selectionChanged(int nr);
+        void proxyNameChanged(QString);
+    protected slots:
+        void updateSubconfig(std::string kinematicUnitName);
+
     private:
 
         IceProxyFinderBase* proxyFinder;