diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index d8c4204ccdf7a008ab76e21bde8363c04c843c3e..a477b921b8ed6ed1c16ef046b420d6a9802a89d4 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -104,6 +104,7 @@ bool QMakeStep::init(const QString &name)
     m_buildConfiguration = name;
     const QtVersion *qtVersion = m_pro->qtVersion(name);
 
+
     if (!qtVersion->isValid()) {
 #if defined(Q_OS_MAC)
         emit addToOutputWindow(tr("\n<font color=\"#ff0000\"><b>No valid Qt version set. Set one in Preferences </b></font>\n"));
diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
index 3ff03bcc28a305115a3828fed94b71f780f7b475..6503e9b3a9883a8272954fb634fbb2d7861884c8 100644
--- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
@@ -46,6 +46,7 @@
 
 #include <QtGui/QFormLayout>
 #include <QtGui/QInputDialog>
+#include <QtGui/QLabel>
 
 using namespace Qt4ProjectManager::Internal;
 using namespace Qt4ProjectManager;
@@ -54,17 +55,27 @@ using ProjectExplorer::PersistentSettingsReader;
 using ProjectExplorer::PersistentSettingsWriter;
 
 Qt4RunConfiguration::Qt4RunConfiguration(Qt4Project *pro, QString proFilePath)
-    : ApplicationRunConfiguration(pro), m_proFilePath(proFilePath), m_userSetName(false)
+    : ApplicationRunConfiguration(pro),
+      m_proFilePath(proFilePath),
+      m_userSetName(false),
+      m_configWidget(0),
+      m_executableLabel(0),
+      m_workingDirectoryLabel(0)
 {
     setName(tr("Qt4RunConfiguration"));
     if (!m_proFilePath.isEmpty()) {
         updateCachedValues();
         setName(QFileInfo(m_proFilePath).baseName());
     }
+    connect(pro, SIGNAL(activeBuildConfigurationChanged()),
+            this, SIGNAL(effectiveExecutableChanged()));
+    connect(pro, SIGNAL(activeBuildConfigurationChanged()),
+            this, SIGNAL(effectiveWorkingDirectoryChanged()));
 }
 
 Qt4RunConfiguration::~Qt4RunConfiguration()
 {
+
 }
 
 QString Qt4RunConfiguration::type() const
@@ -72,37 +83,92 @@ QString Qt4RunConfiguration::type() const
     return "Qt4ProjectManager.Qt4RunConfiguration";
 }
 
-QWidget *Qt4RunConfiguration::configurationWidget()
+
+//////
+/// Qt4RunConfigurationWidget
+/////
+
+Qt4RunConfigurationWidget::Qt4RunConfigurationWidget(Qt4RunConfiguration *qt4RunConfiguration, QWidget *parent)
+    : QWidget(parent), m_qt4RunConfiguration(qt4RunConfiguration), m_ignoreChange(false)
 {
-    QWidget *configWidget = new QWidget;
-    QFormLayout *toplayout = new QFormLayout(configWidget);
+    QFormLayout *toplayout = new QFormLayout(this);
     toplayout->setMargin(0);
 
     QLabel *nameLabel = new QLabel(tr("Name:"));
-    QLineEdit *nameLineEdit = new QLineEdit(name());
-    nameLabel->setBuddy(nameLineEdit);
-    toplayout->addRow(nameLabel, nameLineEdit);
+    m_nameLineEdit = new QLineEdit(m_qt4RunConfiguration->name());
+    nameLabel->setBuddy(m_nameLineEdit);
+    toplayout->addRow(nameLabel, m_nameLineEdit);
 
-    QLabel *executableLabel = new QLabel(tr("Executable:"));
-    QLabel *executableLabel2 = new QLabel(executable());
-    toplayout->addRow(executableLabel, executableLabel2);
+    m_executableLabel = new QLabel(m_qt4RunConfiguration->executable());
+    toplayout->addRow(tr("Executable:"), m_executableLabel);
 
-    QLabel *workingDirectoryLabel = new QLabel(tr("Working Directory:"));
-    QLabel *workingDirectoryLabel2 = new QLabel(workingDirectory());
-    toplayout->addRow(workingDirectoryLabel, workingDirectoryLabel2);
+    m_workingDirectoryLabel = new QLabel(m_qt4RunConfiguration->workingDirectory());
+    toplayout->addRow(tr("Working Directory:"), m_workingDirectoryLabel);
 
     QLabel *argumentsLabel = new QLabel(tr("&Arguments:"));
-    QLineEdit *argumentsLineEdit = new QLineEdit(ProjectExplorer::Environment::joinArgumentList(commandLineArguments()));
-    argumentsLabel->setBuddy(argumentsLineEdit);
-    toplayout->addRow(argumentsLabel, argumentsLineEdit);
+    m_argumentsLineEdit = new QLineEdit(ProjectExplorer::Environment::joinArgumentList(qt4RunConfiguration->commandLineArguments()));
+    argumentsLabel->setBuddy(m_argumentsLineEdit);
+    toplayout->addRow(argumentsLabel, m_argumentsLineEdit);
 
-    connect(argumentsLineEdit, SIGNAL(textEdited(const QString&)),
+    connect(m_argumentsLineEdit, SIGNAL(textEdited(const QString&)),
             this, SLOT(setCommandLineArguments(const QString&)));
 
-    connect(nameLineEdit, SIGNAL(textEdited(const QString&)),
+    connect(m_nameLineEdit, SIGNAL(textEdited(const QString&)),
             this, SLOT(nameEdited(const QString&)));
 
-    return configWidget;
+    connect(qt4RunConfiguration, SIGNAL(commandLineArgumentsChanged(QString)),
+            this, SLOT(commandLineArgumentsChanged(QString)));
+    connect(qt4RunConfiguration, SIGNAL(nameChanged(QString)),
+            this, SLOT(nameChanged(QString)));
+
+    connect(qt4RunConfiguration, SIGNAL(effectiveExecutableChanged()),
+            this, SLOT(effectiveExecutableChanged()));
+    connect(qt4RunConfiguration, SIGNAL(effectiveWorkingDirectoryChanged()),
+            this, SLOT(effectiveWorkingDirectoryChanged()));
+
+}
+
+void Qt4RunConfigurationWidget::setCommandLineArguments(const QString &args)
+{
+    m_ignoreChange = true;
+    m_qt4RunConfiguration->setCommandLineArguments(args);
+    m_ignoreChange = false;
+}
+
+void Qt4RunConfigurationWidget::nameEdited(const QString &name)
+{
+    m_ignoreChange = true;
+    m_qt4RunConfiguration->nameEdited(name);
+    m_ignoreChange = false;
+}
+
+void Qt4RunConfigurationWidget::commandLineArgumentsChanged(const QString &args)
+{
+    if (!m_ignoreChange)
+        m_argumentsLineEdit->setText(args);
+}
+
+void Qt4RunConfigurationWidget::nameChanged(const QString &name)
+{
+    if (!m_ignoreChange)
+        m_nameLineEdit->setText(name);
+}
+
+void Qt4RunConfigurationWidget::effectiveExecutableChanged()
+{
+    m_executableLabel->setText(m_qt4RunConfiguration->executable());
+}
+
+void Qt4RunConfigurationWidget::effectiveWorkingDirectoryChanged()
+{
+    m_workingDirectoryLabel->setText(m_qt4RunConfiguration->workingDirectory());
+}
+
+////// TODO c&p above
+
+QWidget *Qt4RunConfiguration::configurationWidget()
+{
+    return new Qt4RunConfigurationWidget(this, 0);
 }
 
 void Qt4RunConfiguration::save(PersistentSettingsWriter &writer) const
@@ -156,6 +222,7 @@ ProjectExplorer::Environment Qt4RunConfiguration::environment() const
 void Qt4RunConfiguration::setCommandLineArguments(const QString &argumentsString)
 {
     m_commandLineArguments = ProjectExplorer::Environment::parseCombinedArgString(argumentsString);
+    emit commandLineArgumentsChanged(argumentsString);
 }
 
 void Qt4RunConfiguration::nameEdited(const QString &name)
@@ -167,6 +234,7 @@ void Qt4RunConfiguration::nameEdited(const QString &name)
         setName(name);
         m_userSetName = true;
     }
+    emit nameChanged(name);
 }
 
 QString Qt4RunConfiguration::proFilePath() const
@@ -222,6 +290,9 @@ void Qt4RunConfiguration::updateCachedValues()
     m_runMode = ProjectExplorer::ApplicationRunConfiguration::Gui;
 
     delete reader;
+
+    emit effectiveExecutableChanged();
+    emit effectiveWorkingDirectoryChanged();
 }
 
 QString Qt4RunConfiguration::resolveVariables(const QString &buildConfiguration, const QString& in) const
@@ -310,7 +381,7 @@ QString Qt4RunConfiguration::qmakeBuildConfigFromBuildConfiguration(const QStrin
         else
             return "release";
     } else {
-        // Old sytle always CONFIG+=debug_and_release
+        // Old style always CONFIG+=debug_and_release
         if (qobject_cast<Qt4Project *>(project())->qtVersion(buildConfigurationName)->defaultBuildConfig() & QtVersion::DebugBuild)
             return "debug";
         else
diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.h b/src/plugins/qt4projectmanager/qt4runconfiguration.h
index c51ac521fe53fbe9d3b3b957d78b61598860bef0..ce1d44769e0a13f081ae49c5b8a3af1382f9e8ab 100644
--- a/src/plugins/qt4projectmanager/qt4runconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt4runconfiguration.h
@@ -36,6 +36,11 @@
 
 #include <projectexplorer/applicationrunconfiguration.h>
 #include <QtCore/QStringList>
+#include <QtGui/QWidget>
+
+class QWidget;
+class QLabel;
+class QLineEdit;
 
 namespace Qt4ProjectManager {
 
@@ -45,9 +50,13 @@ namespace Internal {
 
 class Qt4ProFileNode;
 
+
+
 class Qt4RunConfiguration : public ProjectExplorer::ApplicationRunConfiguration
 {
     Q_OBJECT
+    // to change the name and arguments
+    friend class Qt4RunConfigurationWidget;
 public:
     Qt4RunConfiguration(Qt4Project *pro, QString proFilePath);
     virtual ~Qt4RunConfiguration();
@@ -68,6 +77,14 @@ public:
     // Should just be called from qt4project, since that knows that the file changed on disc
     void updateCachedValues();
 
+signals:
+    void nameChanged(const QString&);
+    void commandLineArgumentsChanged(const QString&);
+
+    // note those signals might not emited for every change
+    void effectiveExecutableChanged();
+    void effectiveWorkingDirectoryChanged();
+
 private slots:
     void setCommandLineArguments(const QString &argumentsString);
     void nameEdited(const QString&);
@@ -88,6 +105,31 @@ private:
     QString m_workingDir;
     ProjectExplorer::ApplicationRunConfiguration::RunMode m_runMode;
     bool m_userSetName;
+    QWidget *m_configWidget;
+    QLabel *m_executableLabel;
+    QLabel *m_workingDirectoryLabel;
+};
+
+class Qt4RunConfigurationWidget : public QWidget
+{
+    Q_OBJECT
+public:
+    Qt4RunConfigurationWidget(Qt4RunConfiguration *qt4runconfigration, QWidget *parent);
+private slots:
+    void setCommandLineArguments(const QString &arguments);
+    void nameEdited(const QString &name);
+    // TODO connect to signals from qt4runconfiguration for changed arguments and names
+    void commandLineArgumentsChanged(const QString &args);
+    void nameChanged(const QString &name);
+    void effectiveExecutableChanged();
+    void effectiveWorkingDirectoryChanged();
+private:
+    Qt4RunConfiguration *m_qt4RunConfiguration;
+    bool m_ignoreChange;
+    QLabel *m_executableLabel;
+    QLabel *m_workingDirectoryLabel;
+    QLineEdit *m_nameLineEdit;
+    QLineEdit *m_argumentsLineEdit;
 };
 
 class Qt4RunConfigurationFactory : public ProjectExplorer::IRunConfigurationFactory