diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
index dec094d03195e8b949d08ed2d1d8920785fa7d87..dd9e5adb8ba83c4df7d76e048f5aa7cb0d087b7f 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
@@ -108,7 +108,7 @@ CMakeRunConfiguration::~CMakeRunConfiguration()
 
 void CMakeRunConfiguration::ctor()
 {
-    setDisplayName(m_title);
+    setDefaultDisplayName(defaultDisplayName());
 }
 
 CMakeTarget *CMakeRunConfiguration::cmakeTarget() const
@@ -205,6 +205,13 @@ bool CMakeRunConfiguration::fromMap(const QVariantMap &map)
     return RunConfiguration::fromMap(map);
 }
 
+QString CMakeRunConfiguration::defaultDisplayName() const
+{
+    if (m_title.isEmpty())
+        return tr("Run CMake target");
+    return m_title + (m_enabled ? "" : tr(" (disabled)"));
+}
+
 QWidget *CMakeRunConfiguration::createConfigurationWidget()
 {
     return new CMakeRunConfigurationWidget(this);
@@ -302,7 +309,7 @@ void CMakeRunConfiguration::setEnabled(bool b)
         return;
     m_enabled = b;
     emit isEnabledChanged(isEnabled());
-    setDisplayName(m_title + (m_enabled ? "" : tr(" (disabled)")));
+    setDefaultDisplayName(defaultDisplayName());
 }
 
 bool CMakeRunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *bc) const
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
index c4f49c5da22fa657cab20e438bfddec619d609c0..d948f809abd3314ffdaa6499fb9913b40f64e380 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
@@ -97,6 +97,7 @@ private slots:
 protected:
     CMakeRunConfiguration(CMakeTarget *parent, CMakeRunConfiguration *source);
     virtual bool fromMap(const QVariantMap &map);
+    QString defaultDisplayName() const;
 
 private:
     void ctor();
diff --git a/src/plugins/cmakeprojectmanager/cmaketarget.cpp b/src/plugins/cmakeprojectmanager/cmaketarget.cpp
index d38772e49bd474c43a01c277def34353f29955e9..9ee46af9a9dc30b9509e68c1dd25c1a2498b98f9 100644
--- a/src/plugins/cmakeprojectmanager/cmaketarget.cpp
+++ b/src/plugins/cmakeprojectmanager/cmaketarget.cpp
@@ -64,7 +64,7 @@ CMakeTarget::CMakeTarget(CMakeProject *parent) :
     m_buildConfigurationFactory(new CMakeBuildConfigurationFactory(this)),
     m_deployConfigurationFactory(new ProjectExplorer::DeployConfigurationFactory(this))
 {
-    setDisplayName(displayNameForId(id()));
+    setDefaultDisplayName(displayNameForId(id()));
     setIcon(qApp->style()->standardIcon(QStyle::SP_ComputerIcon));
     connect(parent, SIGNAL(buildTargetsChanged()), SLOT(updateRunConfigurations()));
 }
@@ -100,11 +100,7 @@ QString CMakeTarget::defaultBuildDirectory() const
 
 bool CMakeTarget::fromMap(const QVariantMap &map)
 {
-    if (!Target::fromMap(map))
-        return false;
-
-    setDisplayName(displayNameForId(id()));
-    return true;
+    return Target::fromMap(map);
 }
 
 void CMakeTarget::updateRunConfigurations()
@@ -194,7 +190,7 @@ CMakeTarget *CMakeTargetFactory::create(ProjectExplorer::Project *parent, const
 
     // Add default build configuration:
     CMakeBuildConfiguration *bc(new CMakeBuildConfiguration(t));
-    bc->setDisplayName("all");
+    bc->setDefaultDisplayName("all");
 
     ProjectExplorer::BuildStepList *buildSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
     ProjectExplorer::BuildStepList *cleanSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp
index a60b62e0da8a331ffa8c4e8e904e21df4a74616b..115ed1aa91d7dbcc7bc3d465fbf1dbfd9de53852 100644
--- a/src/plugins/cmakeprojectmanager/makestep.cpp
+++ b/src/plugins/cmakeprojectmanager/makestep.cpp
@@ -85,7 +85,8 @@ MakeStep::MakeStep(BuildStepList *bsl, MakeStep *bs) :
 void MakeStep::ctor()
 {
     m_percentProgress = QRegExp("^\\[\\s*(\\d*)%\\]");
-    setDisplayName(tr("Make", "CMakeProjectManager::MakeStep display name."));
+    //: Default display name for the cmake make step.
+    setDefaultDisplayName(tr("Make"));
 }
 
 MakeStep::~MakeStep()
diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
index 69d3cb5cb8c50eabf5ea978cb759dea7c8964d33..1fd45537a83f92b4a699b76d25d7b530e712df00 100644
--- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
+++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
@@ -52,7 +52,6 @@ const char * const BUILD_DIRECTORY_KEY("GenericProjectManager.GenericBuildConfig
 GenericBuildConfiguration::GenericBuildConfiguration(GenericTarget *parent)
     : BuildConfiguration(parent, QLatin1String(GENERIC_BC_ID))
 {
-
 }
 
 GenericBuildConfiguration::GenericBuildConfiguration(GenericTarget *parent, const QString &id)
diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp
index 4432bcaf2e9b7f2ef05ca93a0dd377ad90d165a1..51406bf64a7646975aa3e23159bd87b4f994be16 100644
--- a/src/plugins/genericprojectmanager/genericmakestep.cpp
+++ b/src/plugins/genericprojectmanager/genericmakestep.cpp
@@ -84,8 +84,8 @@ GenericMakeStep::GenericMakeStep(ProjectExplorer::BuildStepList *parent, Generic
 
 void GenericMakeStep::ctor()
 {
-    setDisplayName(QCoreApplication::translate("GenericProjectManager::Internal::GenericMakeStep",
-                   GENERIC_MS_DISPLAY_NAME));
+    setDefaultDisplayName(QCoreApplication::translate("GenericProjectManager::Internal::GenericMakeStep",
+                                                      GENERIC_MS_DISPLAY_NAME));
 }
 
 GenericMakeStep::~GenericMakeStep()
diff --git a/src/plugins/genericprojectmanager/generictarget.cpp b/src/plugins/genericprojectmanager/generictarget.cpp
index 7afede186e70598ec1eb79433303cd99c44d0e22..269d3b1af78139938212a14d2ec2b030af7bfefa 100644
--- a/src/plugins/genericprojectmanager/generictarget.cpp
+++ b/src/plugins/genericprojectmanager/generictarget.cpp
@@ -57,9 +57,8 @@ GenericTarget::GenericTarget(GenericProject *parent) :
     m_buildConfigurationFactory(new GenericBuildConfigurationFactory(this)),
     m_deployConfigurationFactory(new ProjectExplorer::DeployConfigurationFactory(this))
 {
-    setDisplayName(QApplication::translate("GenericProjectManager::GenericTarget",
-                                           GENERIC_DESKTOP_TARGET_DISPLAY_NAME,
-                                           "Generic desktop target display name"));
+    setDefaultDisplayName(QApplication::translate("GenericProjectManager::GenericTarget",
+                                                  GENERIC_DESKTOP_TARGET_DISPLAY_NAME));
     setIcon(qApp->style()->standardIcon(QStyle::SP_ComputerIcon));
 }
 
@@ -92,9 +91,6 @@ bool GenericTarget::fromMap(const QVariantMap &map)
     if (!Target::fromMap(map))
         return false;
 
-    setDisplayName(QApplication::translate("GenericProjectManager::GenericTarget",
-                                           GENERIC_DESKTOP_TARGET_DISPLAY_NAME,
-                                           "Generic desktop target display name"));
     return true;
 }
 
diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp
index cdb29740713267741c023755aefd072ccb93739e..b478faa465f781c98ec1ac709d42b847ce8f57ec 100644
--- a/src/plugins/projectexplorer/buildconfiguration.cpp
+++ b/src/plugins/projectexplorer/buildconfiguration.cpp
@@ -55,11 +55,11 @@ BuildConfiguration::BuildConfiguration(Target *target, const QString &id) :
     Q_ASSERT(target);
     BuildStepList *bsl = new BuildStepList(this, QLatin1String(Constants::BUILDSTEPS_BUILD));
     //: Display name of the build build step list. Used as part of the labels in the project window.
-    bsl->setDisplayName(tr("Build"));
+    bsl->setDefaultDisplayName(tr("Build"));
     m_stepLists.append(bsl);
     bsl = new BuildStepList(this, QLatin1String(Constants::BUILDSTEPS_CLEAN));
     //: Display name of the clean build step list. Used as part of the labels in the project window.
-    bsl->setDisplayName(tr("Clean"));
+    bsl->setDefaultDisplayName(tr("Clean"));
     m_stepLists.append(bsl);
 }
 
@@ -108,9 +108,6 @@ QVariantMap BuildConfiguration::toMap() const
 
 bool BuildConfiguration::fromMap(const QVariantMap &map)
 {
-    if (!ProjectConfiguration::fromMap(map))
-        return false;
-
     m_clearSystemEnvironment = map.value(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY)).toBool();
     m_userEnvironmentChanges = EnvironmentItem::fromStringList(map.value(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY)).toStringList());
 
@@ -133,11 +130,11 @@ bool BuildConfiguration::fromMap(const QVariantMap &map)
         m_stepLists.append(list);
     }
 
-    // TODO: We currently assume there to be at least a clean, build and deploy list!
+    // TODO: We currently assume there to be at least a clean and build list!
     Q_ASSERT(knownStepLists().contains(QLatin1String(ProjectExplorer::Constants::BUILDSTEPS_BUILD)));
     Q_ASSERT(knownStepLists().contains(QLatin1String(ProjectExplorer::Constants::BUILDSTEPS_CLEAN)));
 
-    return true;
+    return ProjectConfiguration::fromMap(map);
 }
 
 Target *BuildConfiguration::target() const
diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
index a6fa2d5d1c9beb0e9eb52213510bee96b54a0ff9..75a8f1e884f4e644fcaa9177652c914fd9ab76b2 100644
--- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
@@ -327,16 +327,18 @@ void BuildSettingsWidget::renameConfiguration()
                                             arg(m_buildConfiguration->displayName()),
                                          QLineEdit::Normal,
                                          m_buildConfiguration->displayName(), &ok);
-    if (!ok || !this || name.isEmpty())
+    if (!ok || !this)
         return;
 
-    QStringList bcNames;
-    foreach (BuildConfiguration *bc, m_target->buildConfigurations()) {
-        if (bc == m_buildConfiguration)
-            continue;
-        bcNames.append(bc->displayName());
+    if (!name.isEmpty()) {
+        QStringList bcNames;
+        foreach (BuildConfiguration *bc, m_target->buildConfigurations()) {
+            if (bc == m_buildConfiguration)
+                continue;
+            bcNames.append(bc->displayName());
+        }
+        name = Project::makeUnique(name, bcNames);
     }
-    name = Project::makeUnique(name, bcNames);
     m_buildConfiguration->setDisplayName(name);
 
 }
@@ -347,15 +349,11 @@ void BuildSettingsWidget::cloneConfiguration(BuildConfiguration *sourceConfigura
         !m_target->buildConfigurationFactory())
         return;
 
+    //: Title of a the cloned BuildConfiguration window, text of the window
     QString newDisplayName(QInputDialog::getText(this, tr("Clone configuration"), tr("New Configuration Name:")));
     if (newDisplayName.isEmpty())
         return;
 
-    QStringList buildConfigurationDisplayNames;
-    foreach(BuildConfiguration *bc, m_target->buildConfigurations())
-        buildConfigurationDisplayNames << bc->displayName();
-    newDisplayName = Project::makeUnique(newDisplayName, buildConfigurationDisplayNames);
-
     BuildConfiguration * bc(m_target->buildConfigurationFactory()->clone(m_target, sourceConfiguration));
     if (!bc)
         return;
diff --git a/src/plugins/projectexplorer/buildsteplist.cpp b/src/plugins/projectexplorer/buildsteplist.cpp
index b0e27824fbc05cace7a78403edddb7a7968c7e20..a2e415fa9ab93b7079913c4a6e9a6b4ebf4ae249 100644
--- a/src/plugins/projectexplorer/buildsteplist.cpp
+++ b/src/plugins/projectexplorer/buildsteplist.cpp
@@ -83,7 +83,7 @@ BuildStepList::BuildStepList(QObject *parent, BuildStepList *source) :
 }
 
 BuildStepList::BuildStepList(QObject *parent, const QVariantMap &data) :
-    ProjectConfiguration(parent, QLatin1String("UNKNOWN"))
+    ProjectConfiguration(parent, QLatin1String("UNKNOWN ID"))
 {
     Q_ASSERT(parent);
     m_isNull = !fromMap(data);
@@ -144,9 +144,6 @@ void BuildStepList::cloneSteps(BuildStepList *source)
 
 bool BuildStepList::fromMap(const QVariantMap &map)
 {
-    if (!ProjectConfiguration::fromMap(map))
-        return false;
-
     int maxSteps = map.value(QString::fromLatin1(STEPS_COUNT_KEY), 0).toInt();
     for (int i = 0; i < maxSteps; ++i) {
         QVariantMap bsData(map.value(QString::fromLatin1(STEPS_PREFIX) + QString::number(i)).toMap());
@@ -166,7 +163,6 @@ bool BuildStepList::fromMap(const QVariantMap &map)
         }
         insertStep(m_steps.count(), bs);
     }
-
     return ProjectConfiguration::fromMap(map);
 }
 
@@ -216,6 +212,5 @@ Target *BuildStepList::target() const
     DeployConfiguration *dc = qobject_cast<DeployConfiguration *>(parent());
     if (dc)
         return dc->target();
-    Q_ASSERT(false);
     return 0;
 }
diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
index 461b0bde5133b39269289de94a8388405c7bf87f..08533f49aa34c2a8916c2de78237b7566b99e926 100644
--- a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
+++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
@@ -245,7 +245,8 @@ void CustomExecutableConfigurationWidget::changed()
 
 void CustomExecutableRunConfiguration::ctor()
 {
-    setDisplayName(tr("Run %1").arg(m_executable));
+    setDefaultDisplayName(defaultDisplayName());
+
     connect(target(), SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)),
             this, SLOT(activeBuildConfigurationChanged()));
 
@@ -435,6 +436,14 @@ void CustomExecutableRunConfiguration::setUserEnvironmentChanges(const QList<Pro
     }
 }
 
+QString CustomExecutableRunConfiguration::defaultDisplayName() const
+{
+    if (m_executable.isEmpty())
+        return tr("Custom Executable");
+    else
+        return tr("Run %1").arg(QDir::toNativeSeparators(m_executable));
+}
+
 QVariantMap CustomExecutableRunConfiguration::toMap() const
 {
     QVariantMap map(LocalApplicationRunConfiguration::toMap());
@@ -456,15 +465,16 @@ bool CustomExecutableRunConfiguration::fromMap(const QVariantMap &map)
     m_userEnvironmentChanges = ProjectExplorer::EnvironmentItem::fromStringList(map.value(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY)).toStringList());
     m_baseEnvironmentBase = static_cast<BaseEnvironmentBase>(map.value(QLatin1String(BASE_ENVIRONMENT_BASE_KEY), static_cast<int>(CustomExecutableRunConfiguration::BuildEnvironmentBase)).toInt());
 
+    setDefaultDisplayName(defaultDisplayName());
     return RunConfiguration::fromMap(map);
 }
 
 void CustomExecutableRunConfiguration::setExecutable(const QString &executable)
 {
-    bool hasUserName = (displayName() != tr("Run %1").arg(m_executable));
+    if (executable == m_executable)
+        return;
     m_executable = executable;
-    if (!hasUserName)
-        setDisplayName(tr("Run %1").arg(m_executable));
+    setDefaultDisplayName(defaultDisplayName());
     emit changed();
 }
 
diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.h b/src/plugins/projectexplorer/customexecutablerunconfiguration.h
index ceec4f23164ad8be9c839f2a2d318f5aa17dd2e5..c59645c1bafee1e361d45e126a0d74159c56466b 100644
--- a/src/plugins/projectexplorer/customexecutablerunconfiguration.h
+++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.h
@@ -87,11 +87,6 @@ public:
      */
     QString baseExecutable() const;
 
-    /**
-     * Returns the name the user has set, if he has set one
-     */
-    QString userName() const;
-
     LocalApplicationRunConfiguration::RunMode runMode() const;
     QString workingDirectory() const;
     QString baseWorkingDirectory() const;
@@ -118,6 +113,7 @@ private slots:
 protected:
     CustomExecutableRunConfiguration(Target *parent, CustomExecutableRunConfiguration *source);
     virtual bool fromMap(const QVariantMap &map);
+    QString defaultDisplayName() const;
 
 private:
     void ctor();
diff --git a/src/plugins/projectexplorer/deployconfiguration.cpp b/src/plugins/projectexplorer/deployconfiguration.cpp
index b0945bb61b1cfd9ad843aba220dd09516482afd2..7dd79392b4433caad272d4722083b672ba35a074 100644
--- a/src/plugins/projectexplorer/deployconfiguration.cpp
+++ b/src/plugins/projectexplorer/deployconfiguration.cpp
@@ -52,8 +52,9 @@ DeployConfiguration::DeployConfiguration(Target *target, const QString &id) :
     Q_ASSERT(target);
     m_stepList = new BuildStepList(this, QLatin1String(Constants::BUILDSTEPS_DEPLOY));
     //: Display name of the deploy build step list. Used as part of the labels in the project window.
-    m_stepList->setDisplayName(tr("Deploy"));
-    setDisplayName(tr("No deployment"));
+    m_stepList->setDefaultDisplayName(tr("Deploy"));
+    //: Default DeployConfiguration display name
+    setDefaultDisplayName(tr("No deployment"));
 }
 
 DeployConfiguration::DeployConfiguration(Target *target, DeployConfiguration *source) :
@@ -80,7 +81,6 @@ QVariantMap DeployConfiguration::toMap() const
     QVariantMap map(ProjectConfiguration::toMap());
     map.insert(QLatin1String(BUILD_STEP_LIST_COUNT), 1);
     map.insert(QLatin1String(BUILD_STEP_LIST_PREFIX) + QLatin1String("0"), m_stepList->toMap());
-
     return map;
 }
 
@@ -95,7 +95,8 @@ bool DeployConfiguration::fromMap(const QVariantMap &map)
         return false;
 
     int maxI = map.value(QLatin1String(BUILD_STEP_LIST_COUNT), 0).toInt();
-    Q_ASSERT(maxI == 1);
+    if (maxI != 1)
+        return false;
     QVariantMap data = map.value(QLatin1String(BUILD_STEP_LIST_PREFIX) + QLatin1String("0")).toMap();
     if (!data.isEmpty()) {
         m_stepList = new BuildStepList(this, data);
@@ -105,11 +106,13 @@ bool DeployConfiguration::fromMap(const QVariantMap &map)
             m_stepList = 0;
             return false;
         }
+        m_stepList->setDefaultDisplayName(tr("Deploy"));
     } else {
         qWarning() << "No data for deploy step list found!";
+        return false;
     }
 
-    // TODO: We assume that we have hold the deploy list
+    // TODO: We assume that we hold the deploy list
     Q_ASSERT(m_stepList && m_stepList->id() == QLatin1String(ProjectExplorer::Constants::BUILDSTEPS_DEPLOY));
 
     return true;
diff --git a/src/plugins/projectexplorer/processstep.cpp b/src/plugins/projectexplorer/processstep.cpp
index d47a83266d5fc8c10dccc3eeda1ab260d1bf58aa..7ee9935ca0d2e21cd5156a823bd5e7c6b7d9089f 100644
--- a/src/plugins/projectexplorer/processstep.cpp
+++ b/src/plugins/projectexplorer/processstep.cpp
@@ -64,7 +64,6 @@ ProcessStep::ProcessStep(BuildStepList *bsl, const QString &id) :
 
 ProcessStep::ProcessStep(BuildStepList *bsl, ProcessStep *bs) :
     AbstractProcessStep(bsl, bs),
-    m_name(bs->m_name),
     m_command(bs->m_command),
     m_arguments(bs->m_arguments),
     m_workingDirectory(bs->m_workingDirectory),
@@ -76,7 +75,8 @@ ProcessStep::ProcessStep(BuildStepList *bsl, ProcessStep *bs) :
 
 void ProcessStep::ctor()
 {
-    setDisplayName(tr("Custom Process Step", "item in combobox"));
+    //: Default ProcessStep display name
+    setDefaultDisplayName(tr("Custom Process Step"));
 }
 
 ProcessStep::~ProcessStep()
@@ -255,8 +255,6 @@ ProcessStepConfigWidget::ProcessStepConfigWidget(ProcessStep *step)
     connect(m_ui.workingDirectory, SIGNAL(changed(QString)),
             this, SLOT(workingDirectoryLineEditTextEdited()));
 
-    connect(m_ui.nameLineEdit, SIGNAL(textEdited(const QString&)),
-            this, SLOT(nameLineEditTextEdited()));
     connect(m_ui.commandArgumentsLineEdit, SIGNAL(textEdited(const QString&)),
             this, SLOT(commandArgumentsLineEditTextEdited()));
     connect(m_ui.enabledCheckBox, SIGNAL(clicked(bool)),
@@ -293,7 +291,6 @@ void ProcessStepConfigWidget::init()
     m_ui.commandArgumentsLineEdit->setText(m_step->arguments().join(QString(QLatin1Char(' '))));
     m_ui.enabledCheckBox->setChecked(m_step->enabled());
 
-    m_ui.nameLineEdit->setText(m_step->displayName());
     updateDetails();
 }
 
@@ -302,12 +299,6 @@ QString ProcessStepConfigWidget::summaryText() const
     return m_summaryText;
 }
 
-void ProcessStepConfigWidget::nameLineEditTextEdited()
-{
-    m_step->setDisplayName(m_ui.nameLineEdit->text());
-    emit updateDetails();
-}
-
 void ProcessStepConfigWidget::commandLineEditTextEdited()
 {
     m_step->setCommand(m_ui.command->path());
diff --git a/src/plugins/projectexplorer/processstep.h b/src/plugins/projectexplorer/processstep.h
index b2525d024ffa169e1b83324b516ab6d09a6a6f9a..beca8037698e3bd0380575d58be769104660f084 100644
--- a/src/plugins/projectexplorer/processstep.h
+++ b/src/plugins/projectexplorer/processstep.h
@@ -93,7 +93,6 @@ protected:
 private:
     void ctor();
 
-    QString m_name;
     QString m_command;
     QStringList m_arguments;
     QString m_workingDirectory;
@@ -110,7 +109,6 @@ public:
     virtual void init();
     virtual QString summaryText() const;
 private slots:
-    void nameLineEditTextEdited();
     void commandLineEditTextEdited();
     void workingDirectoryLineEditTextEdited();
     void commandArgumentsLineEditTextEdited();
diff --git a/src/plugins/projectexplorer/processstep.ui b/src/plugins/projectexplorer/processstep.ui
index fc2e943ab11895bc40f13bd914ee934e9e647862..5ab7b644843aaf16d70cab373ffac6c3f8e39edb 100644
--- a/src/plugins/projectexplorer/processstep.ui
+++ b/src/plugins/projectexplorer/processstep.ui
@@ -6,11 +6,14 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>299</width>
-    <height>154</height>
+    <width>290</width>
+    <height>95</height>
    </rect>
   </property>
   <layout class="QFormLayout" name="formLayout">
+   <property name="fieldGrowthPolicy">
+    <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
+   </property>
    <item row="0" column="0">
     <widget class="QLabel" name="label">
      <property name="text">
@@ -26,43 +29,33 @@
     </widget>
    </item>
    <item row="1" column="0">
-    <widget class="QLabel" name="nameLabel">
-     <property name="text">
-      <string>Name:</string>
-     </property>
-    </widget>
-   </item>
-   <item row="1" column="1">
-    <widget class="QLineEdit" name="nameLineEdit"/>
-   </item>
-   <item row="2" column="0">
     <widget class="QLabel" name="commandLabel">
      <property name="text">
       <string>Command:</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="1">
+   <item row="1" column="1">
     <widget class="Utils::PathChooser" name="command" native="true"/>
    </item>
-   <item row="3" column="0">
+   <item row="2" column="0">
     <widget class="QLabel" name="workingDirecoryLabel">
      <property name="text">
       <string>Working directory:</string>
      </property>
     </widget>
    </item>
-   <item row="3" column="1">
+   <item row="2" column="1">
     <widget class="Utils::PathChooser" name="workingDirectory" native="true"/>
    </item>
-   <item row="4" column="0">
+   <item row="3" column="0">
     <widget class="QLabel" name="commandArgumentsLabel">
      <property name="text">
       <string>Command arguments:</string>
      </property>
     </widget>
    </item>
-   <item row="4" column="1">
+   <item row="3" column="1">
     <widget class="QLineEdit" name="commandArgumentsLineEdit"/>
    </item>
   </layout>
diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp
index c4b5ff355e0325dc35647144c8cff51db13baa8d..e347f544ed9d6b4b0825de69a1bf063edd78e355 100644
--- a/src/plugins/projectexplorer/project.cpp
+++ b/src/plugins/projectexplorer/project.cpp
@@ -133,7 +133,7 @@ void Project::addTarget(Target *t)
     foreach (const Target *target, m_targets)
         displayNames << target->displayName();
     targetDisplayName = makeUnique(targetDisplayName, displayNames);
-    t->setDisplayName(targetDisplayName);
+    t->setDefaultDisplayName(targetDisplayName);
 
     // add it
     m_targets.push_back(t);
diff --git a/src/plugins/projectexplorer/projectconfiguration.cpp b/src/plugins/projectexplorer/projectconfiguration.cpp
index 4c76cf953101728f9596ec25175fd0336a01426f..fb27a64b368be302644327e80c9500245111fa32 100644
--- a/src/plugins/projectexplorer/projectconfiguration.cpp
+++ b/src/plugins/projectexplorer/projectconfiguration.cpp
@@ -34,6 +34,7 @@ using namespace ProjectExplorer;
 namespace {
 const char * const CONFIGURATION_ID_KEY("ProjectExplorer.ProjectConfiguration.Id");
 const char * const DISPLAY_NAME_KEY("ProjectExplorer.ProjectConfiguration.DisplayName");
+const char * const DEFAULT_DISPLAY_NAME_KEY("ProjectExplorer.ProjectConfiguration.DefaultDisplayName");
 }
 
 ProjectConfiguration::ProjectConfiguration(QObject *parent, const QString &id) :
@@ -44,10 +45,11 @@ ProjectConfiguration::ProjectConfiguration(QObject *parent, const QString &id) :
 }
 
 ProjectConfiguration::ProjectConfiguration(QObject *parent, const ProjectConfiguration *source) :
-    QObject(parent)
+    QObject(parent),
+    m_id(source->m_id),
+    m_defaultDisplayName(source->m_defaultDisplayName)
 {
     Q_ASSERT(source);
-    m_id = source->m_id;
     m_displayName = tr("Clone of %1").arg(source->displayName());
 }
 
@@ -61,22 +63,35 @@ QString ProjectConfiguration::id() const
 
 QString ProjectConfiguration::displayName() const
 {
-    return m_displayName;
+    if (!m_displayName.isEmpty())
+        return m_displayName;
+    return m_defaultDisplayName;
 }
 
 void ProjectConfiguration::setDisplayName(const QString &name)
 {
-    if (name == m_displayName)
+    if (displayName() == name)
         return;
     m_displayName = name;
     emit displayNameChanged();
 }
 
+void ProjectConfiguration::setDefaultDisplayName(const QString &name)
+{
+    if (m_defaultDisplayName == name)
+        return;
+    const QString originalName = displayName();
+    m_defaultDisplayName = name;
+    if (originalName != displayName())
+        emit displayNameChanged();
+}
+
 QVariantMap ProjectConfiguration::toMap() const
 {
     QVariantMap map;
     map.insert(QLatin1String(CONFIGURATION_ID_KEY), m_id);
     map.insert(QLatin1String(DISPLAY_NAME_KEY), m_displayName);
+    map.insert(QLatin1String(DEFAULT_DISPLAY_NAME_KEY), m_defaultDisplayName);
     return map;
 }
 
@@ -84,6 +99,7 @@ bool ProjectConfiguration::fromMap(const QVariantMap &map)
 {
     m_id = map.value(QLatin1String(CONFIGURATION_ID_KEY), QString()).toString();
     m_displayName = map.value(QLatin1String(DISPLAY_NAME_KEY), QString()).toString();
+    m_defaultDisplayName = map.value(QLatin1String(DEFAULT_DISPLAY_NAME_KEY), m_displayName).toString();
     return !m_id.isEmpty();
 }
 
diff --git a/src/plugins/projectexplorer/projectconfiguration.h b/src/plugins/projectexplorer/projectconfiguration.h
index 4de8fcc8698e654457986e890785eb1400ee9325..2524e6f334249c645831b412dd99b48c46af2aa2 100644
--- a/src/plugins/projectexplorer/projectconfiguration.h
+++ b/src/plugins/projectexplorer/projectconfiguration.h
@@ -51,6 +51,7 @@ public:
     QString id() const;
     QString displayName() const;
     void setDisplayName(const QString &name);
+    void setDefaultDisplayName(const QString &name);
 
     // Note: Make sure subclasses call the superclasses toMap() method!
     virtual QVariantMap toMap() const;
@@ -70,6 +71,7 @@ private:
 
     QString m_id;
     QString m_displayName;
+    QString m_defaultDisplayName;
 };
 
 // helper functions:
diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp
index c8c765ec168e215fa1125857b407f16a1189601e..b6c370089c8867b0fbdbcd0781a56a04af5195ca 100644
--- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp
@@ -281,16 +281,18 @@ void RunSettingsWidget::renameRunConfiguration()
                                             arg(m_target->activeRunConfiguration()->displayName()),
                                          QLineEdit::Normal,
                                          m_target->activeRunConfiguration()->displayName(), &ok);
-    if (!ok || !this || name.isEmpty())
+    if (!ok || !this)
         return;
 
-    QStringList rcNames;
-    foreach (RunConfiguration *rc, m_target->runConfigurations()) {
-        if (rc == m_target->activeRunConfiguration())
-            continue;
-        rcNames.append(rc->displayName());
+    if (!name.isEmpty()) {
+        QStringList rcNames;
+        foreach (RunConfiguration *rc, m_target->runConfigurations()) {
+            if (rc == m_target->activeRunConfiguration())
+                continue;
+            rcNames.append(rc->displayName());
+        }
+        name = Project::makeUnique(name, rcNames);
     }
-    name = Project::makeUnique(name, rcNames);
     m_target->activeRunConfiguration()->setDisplayName(name);
 }
 
@@ -371,16 +373,18 @@ void RunSettingsWidget::renameDeployConfiguration()
                                             arg(m_target->activeDeployConfiguration()->displayName()),
                                          QLineEdit::Normal,
                                          m_target->activeDeployConfiguration()->displayName(), &ok);
-    if (!ok || !this || name.isEmpty())
+    if (!ok || !this)
         return;
 
-    QStringList dcNames;
-    foreach (DeployConfiguration *dc, m_target->deployConfigurations()) {
-        if (dc == m_target->activeDeployConfiguration())
-            continue;
-        dcNames.append(dc->displayName());
+    if (!name.isEmpty()) {
+        QStringList dcNames;
+        foreach (DeployConfiguration *dc, m_target->deployConfigurations()) {
+            if (dc == m_target->activeDeployConfiguration())
+                continue;
+            dcNames.append(dc->displayName());
+        }
+        name = Project::makeUnique(name, dcNames);
     }
-    name = Project::makeUnique(name, dcNames);
     m_target->activeDeployConfiguration()->setDisplayName(name);
 }
 
diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp
index 51514a2a4544065799f6c0c38d45606ca71131e1..ed093269c5d887bc9506ea14c7594b2a7c3e5992 100644
--- a/src/plugins/qt4projectmanager/makestep.cpp
+++ b/src/plugins/qt4projectmanager/makestep.cpp
@@ -84,7 +84,7 @@ MakeStep::MakeStep(ProjectExplorer::BuildStepList *bsl, const QString &id) :
 
 void MakeStep::ctor()
 {
-    setDisplayName(tr("Make", "Qt4 MakeStep display name."));
+    setDefaultDisplayName(tr("Make", "Qt4 MakeStep display name."));
 }
 
 MakeStep::~MakeStep()
diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 7af3b32c64ee5b1786a15d6e4546984132682326..2898842d8a39fafa0893aa4eb6015be8552a9a96 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -80,7 +80,8 @@ QMakeStep::QMakeStep(BuildStepList *bsl, QMakeStep *bs) :
 
 void QMakeStep::ctor()
 {
-    setDisplayName(tr("qmake", "QMakeStep display name."));
+    //: QMakeStep default display name
+    setDefaultDisplayName(tr("qmake"));
 }
 
 QMakeStep::~QMakeStep()
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp
index ac5dc50f0198d224994cb57d36c2e1b11f49d78c..cd01c16eb7bca7ddaa54982725cd66bdd26d05c3 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemodeploystep.cpp
@@ -85,7 +85,8 @@ MaemoDeployStep::~MaemoDeployStep()
 
 void MaemoDeployStep::ctor()
 {
-    setDisplayName(tr("Deploying to Maemo device"));
+    //: MaemoDeployStep default display name
+    setDefaultDisplayName(tr("Deploy to Maemo device"));
 
     m_connecting = false;
     m_needsInstall = false;
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp
index ff1918129bf0c5c0f5d5837df2582c87db70dff5..c5133f41b0140b82f0324f55f5fc38ff9ddd9940 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp
@@ -97,7 +97,7 @@ MaemoPackageCreationStep::~MaemoPackageCreationStep()
 
 void MaemoPackageCreationStep::ctor()
 {
-    setDisplayName(tr("Packaging for Maemo"));
+    setDefaultDisplayName(tr("Packaging for Maemo"));
 
     m_lastBuildConfig = qt4BuildConfiguration();
     connect(target(),
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
index ed82482a5bd5e9e34b491fe163c216c6ce63a7af..04cbe1170092cf61d1eb614269b63a8ec22dfc81 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp
@@ -87,8 +87,8 @@ MaemoRunConfiguration::MaemoRunConfiguration(Qt4Target *parent,
 
 void MaemoRunConfiguration::init()
 {
+    setDefaultDisplayName(defaultDisplayName());
     m_remoteMounts = new MaemoRemoteMountsModel(this);
-    setDisplayName(QFileInfo(m_proFilePath).completeBaseName());
 
     connect(target(),
         SIGNAL(activeDeployConfigurationChanged(ProjectExplorer::DeployConfiguration*)),
@@ -168,9 +168,19 @@ bool MaemoRunConfiguration::fromMap(const QVariantMap &map)
         SystemEnvironmentBase).toInt());
     m_remoteMounts->fromMap(map);
 
+    setDefaultDisplayName(defaultDisplayName());
+
     return true;
 }
 
+QString MaemoRunConfiguration::defaultDisplayName()
+{
+    if (!m_proFilePath.isEmpty())
+        return (QFileInfo(m_proFilePath).completeBaseName());
+    //: Maemo run configuration default display name
+    return tr("Run on maemo device");
+}
+
 MaemoDeviceConfig MaemoRunConfiguration::deviceConfig() const
 {
     return deployStep()->deviceConfigModel()->current();
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h
index 7584f47534fc951b508b0e087bc6b77625a33a32..7a438cfec33ef2d4536bf71b6674df7ac7e003d1 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h
@@ -126,6 +126,7 @@ signals:
 protected:
     MaemoRunConfiguration(Qt4Target *parent, MaemoRunConfiguration *source);
     virtual bool fromMap(const QVariantMap &map);
+    QString defaultDisplayName();
 
 private slots:
     void proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro);
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp
index e876e4f1db9653d79ebb10f293673b0e8fb005c1..2921ee23e88e1582729124df2c6abd9ecccb1034 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60createpackagestep.cpp
@@ -115,7 +115,8 @@ S60CreatePackageStep::S60CreatePackageStep(ProjectExplorer::BuildStepList *bsl,
 
 void S60CreatePackageStep::ctor_package()
 {
-    setDisplayName(tr("Create SIS Package", "Create SIS package build step name"));
+    //: default create SIS package build step display name
+    setDefaultDisplayName(tr("Create SIS Package"));
     connect(this, SIGNAL(badPassphrase()),
             this, SLOT(definePassphrase()), Qt::QueuedConnection);
 
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp
index 649a2feec3164ce351f01a9dedee709ea69b273f..10e9c22d476a5a893435d97b7313ec9b56cef665 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.cpp
@@ -109,14 +109,13 @@ S60DeployConfiguration::S60DeployConfiguration(Target *target, S60DeployConfigur
 
 void S60DeployConfiguration::ctor()
 {
-    S60DeviceRunConfiguration* runConf = s60DeviceRunConf();
-    if (runConf && !runConf->projectFilePath().isEmpty())
-        setDisplayName(tr("%1 on Symbian Device").arg(QFileInfo(runConf->projectFilePath()).completeBaseName()));
-
+    setDefaultDisplayName(defaultDisplayName());
     connect(qt4Target()->qt4Project(), SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
             this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
     connect(qt4Target(), SIGNAL(activeBuildConfigurationChanged(ProjectExplorer::BuildConfiguration*)),
             this, SLOT(updateActiveBuildConfiguration(ProjectExplorer::BuildConfiguration*)));
+    connect(qt4Target(), SIGNAL(activeRunConfigurationChanged(ProjectExplorer::RunConfiguration*)),
+            this, SLOT(updateActiveRunConfiguration(ProjectExplorer::RunConfiguration*)));
     updateActiveBuildConfiguration(qt4Target()->activeBuildConfiguration());
 }
 
@@ -132,8 +131,7 @@ ProjectExplorer::DeployConfigurationWidget *S60DeployConfiguration::configuratio
 void S60DeployConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro)
 {
     S60DeviceRunConfiguration *deviceRunConf = s60DeviceRunConf();
-    Q_ASSERT(deviceRunConf);
-    if (deviceRunConf->projectFilePath() == pro->path())
+    if (deviceRunConf && deviceRunConf->projectFilePath() == pro->path())
         emit targetInformationChanged();
 }
 
@@ -349,14 +347,15 @@ void S60DeployConfiguration::updateActiveBuildConfiguration(ProjectExplorer::Bui
                 this, SIGNAL(targetInformationChanged()));
 }
 
-S60DeviceRunConfiguration* S60DeployConfiguration::s60DeviceRunConf() const
+void S60DeployConfiguration::updateActiveRunConfiguration(ProjectExplorer::RunConfiguration *runConfiguration)
 {
-    const char * const S60_DEVICE_RC_ID("Qt4ProjectManager.S60DeviceRunConfiguration");
+    Q_UNUSED(runConfiguration);
+    setDefaultDisplayName(defaultDisplayName());
+}
 
-    foreach( RunConfiguration *runConf, qt4Target()->runConfigurations() )
-        if (runConf->id() == QLatin1String(S60_DEVICE_RC_ID))
-            return qobject_cast<S60DeviceRunConfiguration *>(runConf);
-    return 0;
+S60DeviceRunConfiguration* S60DeployConfiguration::s60DeviceRunConf() const
+{
+    return qobject_cast<S60DeviceRunConfiguration *>(qt4Target()->activeRunConfiguration());
 }
 
 QVariantMap S60DeployConfiguration::toMap() const
@@ -369,13 +368,24 @@ QVariantMap S60DeployConfiguration::toMap() const
     return map;
 }
 
+QString S60DeployConfiguration::defaultDisplayName() const
+{
+    S60DeviceRunConfiguration* runConf = s60DeviceRunConf();
+    if (runConf && !runConf->projectFilePath().isEmpty())
+        return tr("Deploy %1 to Symbian device").arg(QFileInfo(runConf->projectFilePath()).completeBaseName());
+    return tr("Deploy to Symbian device");
+}
+
 bool S60DeployConfiguration::fromMap(const QVariantMap &map)
 {
+    if (!DeployConfiguration::fromMap(map))
+        return false;
     m_serialPortName = map.value(QLatin1String(SERIAL_PORT_NAME_KEY)).toString().trimmed();
     m_installationDrive = map.value(QLatin1String(INSTALLATION_DRIVE_LETTER_KEY), QChar('C'))
                           .toChar().toAscii();
     m_silentInstall = map.value(QLatin1String(SILENT_INSTALL_KEY), QVariant(true)).toBool();
-    return DeployConfiguration::fromMap(map);
+    setDefaultDisplayName(defaultDisplayName());
+    return true;
 }
 
 Qt4Target *S60DeployConfiguration::qt4Target() const
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h
index b109ba8e7e6ba32cf1910bd6aed0dea92c6df575..c8faf9892ba4b137ccc3941a9c83294fdc37d3a5 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt-s60/s60deployconfiguration.h
@@ -87,11 +87,13 @@ signals:
 
 private slots:
     void updateActiveBuildConfiguration(ProjectExplorer::BuildConfiguration *buildConfiguration);
+    void updateActiveRunConfiguration(ProjectExplorer::RunConfiguration *runConfiguration);
     void proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro);
 
 protected:
     S60DeployConfiguration(ProjectExplorer::Target *parent, S60DeployConfiguration *source);
     virtual bool fromMap(const QVariantMap &map);
+    QString defaultDisplayName() const;
 
 private:
     void ctor();
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deploystep.cpp b/src/plugins/qt4projectmanager/qt-s60/s60deploystep.cpp
index 4f9d98feaadccdb4fc01e6b89c7d8481512118f2..a91b613557ea9411f8e510edebeca4f0b8abe126 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60deploystep.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60deploystep.cpp
@@ -93,6 +93,7 @@ S60DeployStep::S60DeployStep(ProjectExplorer::BuildStepList *bc,
         m_handleDeviceRemoval(bs->m_handleDeviceRemoval),
         m_launcher(0), m_eventLoop(0)
 {
+    ctor();
 }
 
 S60DeployStep::S60DeployStep(ProjectExplorer::BuildStepList *bc):
@@ -100,6 +101,13 @@ S60DeployStep::S60DeployStep(ProjectExplorer::BuildStepList *bc):
         m_releaseDeviceAfterLauncherFinish(true),
         m_handleDeviceRemoval(true), m_launcher(0), m_eventLoop(0)
 {
+    ctor();
+}
+
+void S60DeployStep::ctor()
+{
+    //: Qt4 Deploystep display name
+    setDefaultDisplayName(tr("Deploy"));
 }
 
 S60DeployStep::~S60DeployStep()
@@ -123,7 +131,6 @@ bool S60DeployStep::init()
     m_installationDrive = deployConfiguration->installationDrive();
     m_silentInstall = deployConfiguration->silentInstall();
 
-    setDisplayName(tr("Deploy", "Qt4 DeployStep display name."));
     QString message;
     if (m_launcher) {
         trk::Launcher::releaseToDeviceManager(m_launcher);
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60deploystep.h b/src/plugins/qt4projectmanager/qt-s60/s60deploystep.h
index 197f69101d1a9d792f1dd5526edbbf4ff51ed72c..bfc41985d9e7efd851b319a1acf494608f62d56b 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60deploystep.h
+++ b/src/plugins/qt4projectmanager/qt-s60/s60deploystep.h
@@ -118,6 +118,7 @@ signals:
 private:
     S60DeployStep(ProjectExplorer::BuildStepList *parent,
                   S60DeployStep *bs);
+    void ctor();
 
     void start();
     void stop();
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
index db91debbc4baa58349684fee74aaa9ee39103e4d..90ba2dc571f281996b4346b1fc2aa2157e29118e 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.cpp
@@ -125,9 +125,11 @@ S60DeviceRunConfiguration::S60DeviceRunConfiguration(Target *target, S60DeviceRu
 void S60DeviceRunConfiguration::ctor()
 {
     if (!m_proFilePath.isEmpty())
-        setDisplayName(tr("%1 on Symbian Device").arg(QFileInfo(m_proFilePath).completeBaseName()));
+        //: S60 device runconfiguration default display name, %1 is base pro-File name
+        setDefaultDisplayName(tr("%1 on Symbian Device").arg(QFileInfo(m_proFilePath).completeBaseName()));
     else
-        setDisplayName(tr("QtS60DeviceRunConfiguration"));
+        //: S60 device runconfiguration default display name (no profile set)
+        setDefaultDisplayName(tr("Run on Symbian device"));
 }
 
 void S60DeviceRunConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode *pro)
@@ -204,6 +206,12 @@ bool S60DeviceRunConfiguration::fromMap(const QVariantMap &map)
     m_proFilePath = projectDir.filePath(map.value(QLatin1String(PRO_FILE_KEY)).toString());
     m_commandLineArguments = map.value(QLatin1String(COMMAND_LINE_ARGUMENTS_KEY)).toStringList();
 
+    if (m_proFilePath.isEmpty())
+        return false;
+    if (!QFileInfo(m_proFilePath).exists())
+        return false;
+    setDefaultDisplayName(tr("%1 on Symbian Device").arg(QFileInfo(m_proFilePath).completeBaseName()));
+
     return RunConfiguration::fromMap(map);
 }
 
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h
index 8d5e708cafe1a0cdd85ed0b587868a37df9c252a..cbc76204c4f184469e0cce8d58e61eb776a976de 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt-s60/s60devicerunconfiguration.h
@@ -95,6 +95,7 @@ signals:
 
 protected:
     S60DeviceRunConfiguration(ProjectExplorer::Target *parent, S60DeviceRunConfiguration *source);
+    QString defaultDisplayName() const;
     virtual bool fromMap(const QVariantMap &map);
 
 private:
diff --git a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
index 83028f3db2c6dbdb8e8fbed4881488b55da1def7..7ffcdfb9840a4c1575bdc1b634f98601a519d396 100644
--- a/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/s60emulatorrunconfiguration.cpp
@@ -95,10 +95,11 @@ S60EmulatorRunConfiguration::S60EmulatorRunConfiguration(Target *parent, S60Emul
 void S60EmulatorRunConfiguration::ctor()
 {
     if (!m_proFilePath.isEmpty())
-        setDisplayName(tr("%1 in Symbian Emulator").arg(QFileInfo(m_proFilePath).completeBaseName()));
+        //: S60 emulator run configuration default display name, %1 is base pro-File name
+        setDefaultDisplayName(tr("%1 in Symbian Emulator").arg(QFileInfo(m_proFilePath).completeBaseName()));
     else
-        setDisplayName(tr("Qt Symbian Emulator RunConfiguration"));
-
+        //: S60 emulator run configuration default display name (no pro-file name)
+        setDefaultDisplayName(tr("Run on Symbian Emulator"));
     connect(qt4Target()->qt4Project(), SIGNAL(proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode*)),
             this, SLOT(proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileNode*)));
 }
@@ -150,6 +151,11 @@ bool S60EmulatorRunConfiguration::fromMap(const QVariantMap &map)
     const QDir projectDir = QDir(target()->project()->projectDirectory());
     m_proFilePath = projectDir.filePath(map.value(QLatin1String(PRO_FILE_KEY)).toString());
 
+    if (m_proFilePath.isEmpty())
+        return false;
+    //: S60 emulator run configuration default display name, %1 is base pro-File name
+    setDefaultDisplayName(tr("%1 in Symbian Emulator").arg(QFileInfo(m_proFilePath).completeBaseName()));
+
     return RunConfiguration::fromMap(map);
 }
 
diff --git a/src/plugins/qt4projectmanager/qt4deployconfiguration.cpp b/src/plugins/qt4projectmanager/qt4deployconfiguration.cpp
index 06ca2a0161547085fc7bafb40786e9a7347eb0f6..65ffe7e162232b01b6b262a5d9ca90a119fb9973 100644
--- a/src/plugins/qt4projectmanager/qt4deployconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4deployconfiguration.cpp
@@ -60,11 +60,11 @@ ProjectExplorer::DeployConfiguration *Qt4DeployConfigurationFactory::create(Proj
         return 0;
 
     if (parent->id() == Constants::S60_DEVICE_TARGET_ID) {
-        dc->setDisplayName(tr("Deploy to Symbian device"));
+        dc->setDefaultDisplayName(tr("Deploy to Symbian device"));
         dc->stepList()->insertStep(0, new S60CreatePackageStep(dc->stepList()));
         dc->stepList()->insertStep(1, new S60DeployStep(dc->stepList()));
     } else if (parent->id() == Constants::MAEMO_DEVICE_TARGET_ID) {
-        dc->setDisplayName(tr("Deploy to Maemo device"));
+        dc->setDefaultDisplayName(tr("Deploy to Maemo device"));
         dc->stepList()->insertStep(0, new MaemoPackageCreationStep(dc->stepList()));
         dc->stepList()->insertStep(1, new MaemoDeployStep(dc->stepList()));
     }
diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
index ec40f288f30f0021642462e5b0c5c360cc432b25..4b4e445398b268ad20e253a12f2db1196bc93375 100644
--- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp
@@ -163,9 +163,7 @@ void Qt4RunConfiguration::proFileUpdate(Qt4ProjectManager::Internal::Qt4ProFileN
 
 void Qt4RunConfiguration::ctor()
 {
-    QString name = defaultDisplayName();
-    if (name != displayName())
-        setDisplayName(name);
+    setDefaultDisplayName(defaultDisplayName());
 
     connect(qt4Target(), SIGNAL(environmentChanged()),
             this, SIGNAL(baseEnvironmentChanged()));
@@ -456,7 +454,6 @@ bool Qt4RunConfiguration::fromMap(const QVariantMap &map)
     m_userEnvironmentChanges = ProjectExplorer::EnvironmentItem::fromStringList(map.value(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY)).toStringList());
     m_baseEnvironmentBase = static_cast<BaseEnvironmentBase>(map.value(QLatin1String(BASE_ENVIRONMENT_BASE_KEY), static_cast<int>(Qt4RunConfiguration::BuildEnvironmentBase)).toInt());
 
-    // This will restore the display name for us:
     return RunConfiguration::fromMap(map);
 }
 
diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp
index 39fc84709521d70400d3e81187389df3ff118496..6725f254eba698132cba2c57f94fb6da28b06064 100644
--- a/src/plugins/qt4projectmanager/qt4target.cpp
+++ b/src/plugins/qt4projectmanager/qt4target.cpp
@@ -254,7 +254,7 @@ Qt4Target::Qt4Target(Qt4Project *parent, const QString &id) :
     connect(this, SIGNAL(activeRunConfigurationChanged(ProjectExplorer::RunConfiguration*)),
             this, SLOT(updateToolTipAndIcon()));
 
-    setDisplayName(displayNameForId(id));
+    setDefaultDisplayName(displayNameForId(id));
     setIcon(iconForId(id));
 }
 
@@ -282,7 +282,7 @@ Qt4BuildConfiguration *Qt4Target::addQt4BuildConfiguration(QString displayName,
 
     // Add the buildconfiguration
     Qt4BuildConfiguration *bc = new Qt4BuildConfiguration(this);
-    bc->setDisplayName(displayName);
+    bc->setDefaultDisplayName(displayName);
 
     BuildStepList *buildSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
     BuildStepList *cleanSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN);
@@ -404,13 +404,9 @@ QString Qt4Target::defaultShadowBuildDirectory(const QString &projectLocation, c
 
 bool Qt4Target::fromMap(const QVariantMap &map)
 {
-    if (!Target::fromMap(map))
-        return false;
-
-    setDisplayName(displayNameForId(id()));
+    bool success = Target::fromMap(map);
     setIcon(iconForId(id()));
-
-    return true;
+    return success;
 }
 
 void Qt4Target::updateQtVersion()