diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp
index ed279970d50a2746b292e7c34af4312fa2216ace..c2b2cb7d94c9be42c03b33a128bd4ee857337189 100644
--- a/src/plugins/projectexplorer/buildconfiguration.cpp
+++ b/src/plugins/projectexplorer/buildconfiguration.cpp
@@ -80,7 +80,10 @@ QString BuildConfiguration::displayName() const
 
 void BuildConfiguration::setDisplayName(const QString &name)
 {
+    if (value("ProjectExplorer.BuildConfiguration.DisplayName").toString() == name)
+        return;
     setValue("ProjectExplorer.BuildConfiguration.DisplayName", name);
+    emit displayNameChanged();
 }
 
 QVariant BuildConfiguration::value(const QString & key) const
diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h
index 09950668b2d796ab911452ee4e11ef2b3aa705f0..a54e7a6705b52e8a12a1c41d0dea2318d2fae5fd 100644
--- a/src/plugins/projectexplorer/buildconfiguration.h
+++ b/src/plugins/projectexplorer/buildconfiguration.h
@@ -82,6 +82,7 @@ public:
 signals:
     void environmentChanged();
     void buildDirectoryChanged();
+    void displayNameChanged();
 
 protected:
     BuildConfiguration(Project * project);
diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
index d73e2c9790443f77899d929b893e260cfc41ccd8..45d939d5b03fd7ad19ff7dc3c1b9ba294e1a38eb 100644
--- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
@@ -200,8 +200,7 @@ BuildSettingsWidget::BuildSettingsWidget(Project *project)
     connect(m_removeButton, SIGNAL(clicked()),
             this, SLOT(deleteConfiguration()));
 
-    connect(m_project, SIGNAL(buildConfigurationDisplayNameChanged(ProjectExplorer::BuildConfiguration *)),
-            this, SLOT(buildConfigurationDisplayNameChanged(ProjectExplorer::BuildConfiguration *)));
+    // TODO update on displayNameChange
 
     connect(m_project, SIGNAL(activeBuildConfigurationChanged()),
             this, SLOT(checkMakeActiveLabel()));
@@ -231,17 +230,6 @@ void BuildSettingsWidget::updateAddButtonMenu()
     }
 }
 
-void BuildSettingsWidget::buildConfigurationDisplayNameChanged(BuildConfiguration *bc)
-{
-    for (int i=0; i<m_buildConfigurationComboBox->count(); ++i) {
-        if (m_buildConfigurationComboBox->itemData(i).value<BuildConfiguration *>() == bc) {
-            m_buildConfigurationComboBox->setItemText(i, bc->displayName());
-            break;
-        }
-    }
-}
-
-
 void BuildSettingsWidget::updateBuildSettings()
 {
     // TODO save position, entry from combbox
@@ -350,7 +338,7 @@ void BuildSettingsWidget::cloneConfiguration(BuildConfiguration *sourceConfigura
     newDisplayName = Project::makeUnique(newDisplayName, buildConfigurationDisplayNames);
 
     m_buildConfiguration = m_project->buildConfigurationFactory()->clone(sourceConfiguration);
-    m_project->setDisplayNameFor(m_buildConfiguration, newDisplayName);
+    m_buildConfiguration->setDisplayName(newDisplayName);
 
     updateBuildSettings();
 }
diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.h b/src/plugins/projectexplorer/buildsettingspropertiespage.h
index 0026553b77e21f5ef806ed697aa941d05da33692..652f91e116feb8f3357be2878b49918268026e22 100644
--- a/src/plugins/projectexplorer/buildsettingspropertiespage.h
+++ b/src/plugins/projectexplorer/buildsettingspropertiespage.h
@@ -94,7 +94,6 @@ public:
     ~BuildSettingsWidget();
 
 private slots:
-    void buildConfigurationDisplayNameChanged(ProjectExplorer::BuildConfiguration *bc);
     void updateBuildSettings();
     void currentIndexChanged(int index);
     void activeBuildConfigurationChanged();
diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp
index 2804ec414f98c12455202d22c6c2000e6b55a338..0930901be9ee86749c7d5c6f5f86e1b0241d2d76 100644
--- a/src/plugins/projectexplorer/buildstepspage.cpp
+++ b/src/plugins/projectexplorer/buildstepspage.cpp
@@ -49,6 +49,7 @@ BuildStepsPage::BuildStepsPage(Project *project, bool clean) :
     BuildConfigWidget(),
     m_clean(clean)
 {
+    Q_UNUSED(project)
     m_vbox = new QVBoxLayout(this);
     m_vbox->setContentsMargins(0, 0, 0, 0);
     m_vbox->setSpacing(0);
diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp
index 6a05b9264dda1193b35c7d5d508a24ff30eb1547..5d5bd9a3f71ad9b8236161d60b348ba532e67329 100644
--- a/src/plugins/projectexplorer/project.cpp
+++ b/src/plugins/projectexplorer/project.cpp
@@ -463,23 +463,6 @@ EditorConfiguration *Project::editorConfiguration() const
     return m_editorConfiguration;
 }
 
-void Project::setDisplayNameFor(BuildConfiguration *configuration, const QString &displayName)
-{
-    if (configuration->displayName() == displayName)
-        return;
-    QString dn = displayName;
-    QStringList displayNames;
-    foreach (BuildConfiguration *bc, m_buildConfigurationValues) {
-        if (bc != configuration)
-            displayNames << bc->displayName();
-    }
-    dn = makeUnique(displayName, displayNames);
-
-    configuration->setDisplayName(displayName);
-
-    emit buildConfigurationDisplayNameChanged(configuration);
-}
-
 QByteArray Project::predefinedMacros(const QString &) const
 {
     return QByteArray();
diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h
index 4c543169ec5de5bead1af259206f618b698c5895..3885725120e932ebacbdf939d6e516cbdae44d44 100644
--- a/src/plugins/projectexplorer/project.h
+++ b/src/plugins/projectexplorer/project.h
@@ -88,10 +88,6 @@ public:
     void removeBuildConfiguration(BuildConfiguration *configuration);
 
     QList<BuildConfiguration *> buildConfigurations() const;
-
-    // remove and add "QString uniqueConfigurationDisplayName(const QString &proposedName) const" instead
-    // move into BuildConfiguration *
-    void setDisplayNameFor(BuildConfiguration *configuration, const QString &displayName);
     BuildConfiguration *activeBuildConfiguration() const;
     void setActiveBuildConfiguration(BuildConfiguration *configuration);
 
@@ -146,10 +142,6 @@ signals:
     void removedBuildConfiguration(ProjectExplorer::Project *p, BuildConfiguration *bc);
     void addedBuildConfiguration(ProjectExplorer::Project *p, BuildConfiguration *bc);
 
-    // This signal is jut there for updating the tree list in the buildsettings wizard
-    void buildConfigurationDisplayNameChanged(BuildConfiguration *bc);
-
-
 protected:
     /* This method is called when the project .user file is saved. Simply call
      * writer.saveValue() for each value you want to save. Make sure to always
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index d3cb0ac77f766f9ea16adcfbeebcdd376dfb3b43..3aff94f2a595e78a2e38f81dcb4d38169ba9424c 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -343,7 +343,7 @@ Qt4BuildConfiguration *Qt4Project::activeQt4BuildConfiguration() const
 
 void Qt4Project::defaultQtVersionChanged()
 {
-    if (static_cast<Qt4BuildConfiguration  *>(activeBuildConfiguration())->qtVersionId() == 0)
+    if (activeQt4BuildConfiguration()->qtVersionId() == 0)
         m_rootProjectNode->update();
 }
 
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index b155944af6a088c25533d3056f1995e736ea053d..768e0c735a97dbcc96b2f7fd1b44819e7269b685 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -165,7 +165,7 @@ void Qt4ProjectConfigWidget::init(ProjectExplorer::BuildConfiguration *bc)
 
 void Qt4ProjectConfigWidget::changeConfigName(const QString &newName)
 {
-    m_buildConfiguration->project()->setDisplayNameFor(m_buildConfiguration, newName);
+    m_buildConfiguration->setDisplayName(newName);
 }
 
 void Qt4ProjectConfigWidget::setupQtVersionsComboBox()