diff --git a/src/plugins/qt4projectmanager/projectloadwizard.cpp b/src/plugins/qt4projectmanager/projectloadwizard.cpp
index 3eae813b041788bc06da3fd9aa8d8c00214017fc..04d46cb2ca5e13e3571bc6153bd6194228959361 100644
--- a/src/plugins/qt4projectmanager/projectloadwizard.cpp
+++ b/src/plugins/qt4projectmanager/projectloadwizard.cpp
@@ -33,6 +33,7 @@
 #include "qt4projectmanager.h"
 #include "qmakestep.h"
 #include "makestep.h"
+#include "qt4buildconfiguration.h"
 
 #include <extensionsystem/pluginmanager.h>
 
@@ -66,9 +67,9 @@ ProjectLoadWizard::ProjectLoadWizard(Qt4Project *project, QWidget *parent, Qt::W
         QPair<QtVersion::QmakeBuildConfigs, QStringList> result =
                 QtVersionManager::scanMakeFile(directory, m_importVersion->defaultBuildConfig());
         m_importBuildConfig = result.first;
-        m_additionalArguments = Qt4Project::removeSpecFromArgumentList(result.second);
+        m_additionalArguments = Qt4BuildConfiguration::removeSpecFromArgumentList(result.second);
 
-        QString parsedSpec = Qt4Project::extractSpecFromArgumentList(result.second, directory, m_importVersion);
+        QString parsedSpec = Qt4BuildConfiguration::extractSpecFromArgumentList(result.second, directory, m_importVersion);
         QString versionSpec = m_importVersion->mkspec();
 
         // Compare mkspecs and add to additional arguments
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
index 56498625bd1203176615caf0d7f4091f9c669de7..fed1ed8e92b075ca0685e4b2440818a2d069badd 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
@@ -284,16 +284,16 @@ bool Qt4BuildConfiguration::compareBuildConfigurationToImportFrom(const QString
                 // now compare arguments lists
                 // we have to compare without the spec/platform cmd argument
                 // and compare that on its own
-                QString actualSpec = Qt4Project::extractSpecFromArgumentList(qs->qmakeArguments(), workingDirectory, version);
+                QString actualSpec = extractSpecFromArgumentList(qs->qmakeArguments(), workingDirectory, version);
                 if (actualSpec.isEmpty()) {
                     // Easy one the user has choosen not to override the settings
                     actualSpec = version->mkspec();
                 }
 
 
-                QString parsedSpec = Qt4Project::extractSpecFromArgumentList(result.second, workingDirectory, version);
-                QStringList actualArgs = Qt4Project::removeSpecFromArgumentList(qs->qmakeArguments());
-                QStringList parsedArgs = Qt4Project::removeSpecFromArgumentList(result.second);
+                QString parsedSpec = extractSpecFromArgumentList(result.second, workingDirectory, version);
+                QStringList actualArgs = removeSpecFromArgumentList(qs->qmakeArguments());
+                QStringList parsedArgs = removeSpecFromArgumentList(result.second);
 
                 if (debug) {
                     qDebug()<<"Actual args:"<<actualArgs;
@@ -317,3 +317,88 @@ bool Qt4BuildConfiguration::compareBuildConfigurationToImportFrom(const QString
     }
     return false;
 }
+
+// We match -spec and -platfrom separetly
+// We ignore -cache, because qmake contained a bug that it didn't
+// mention the -cache in the Makefile
+// That means changing the -cache option in the additional arguments
+// does not automatically rerun qmake. Alas, we could try more
+// intelligent matching for -cache, but i guess people rarely
+// do use that.
+
+QStringList Qt4BuildConfiguration::removeSpecFromArgumentList(const QStringList &old)
+{
+    if (!old.contains("-spec") && !old.contains("-platform") && !old.contains("-cache"))
+        return old;
+    QStringList newList;
+    bool ignoreNext = false;
+    foreach(const QString &item, old) {
+        if (ignoreNext) {
+            ignoreNext = false;
+        } else if (item == "-spec" || item == "-platform" || item == "-cache") {
+            ignoreNext = true;
+        } else {
+            newList << item;
+        }
+    }
+    return newList;
+}
+
+QString Qt4BuildConfiguration::extractSpecFromArgumentList(const QStringList &list, QString directory, QtVersion *version)
+{
+    int index = list.indexOf("-spec");
+    if (index == -1)
+        index = list.indexOf("-platform");
+    if (index == -1)
+        return QString();
+
+    ++index;
+
+    if (index >= list.length())
+        return QString();
+
+    QString baseMkspecDir = version->versionInfo().value("QMAKE_MKSPECS");
+    if (baseMkspecDir.isEmpty())
+        baseMkspecDir = version->versionInfo().value("QT_INSTALL_DATA") + "/mkspecs";
+
+    QString parsedSpec = QDir::cleanPath(list.at(index));
+#ifdef Q_OS_WIN
+    baseMkspecDir = baseMkspecDir.toLower();
+    parsedSpec = parsedSpec.toLower();
+#endif
+    // if the path is relative it can be
+    // relative to the working directory (as found in the Makefiles)
+    // or relatively to the mkspec directory
+    // if it is the former we need to get the canonical form
+    // for the other one we don't need to do anything
+    if (QFileInfo(parsedSpec).isRelative()) {
+        if(QFileInfo(directory + "/" + parsedSpec).exists()) {
+            parsedSpec = QDir::cleanPath(directory + "/" + parsedSpec);
+#ifdef Q_OS_WIN
+            parsedSpec = parsedSpec.toLower();
+#endif
+        } else {
+            parsedSpec = baseMkspecDir + "/" + parsedSpec;
+        }
+    }
+
+    QFileInfo f2(parsedSpec);
+    while (f2.isSymLink()) {
+        parsedSpec = f2.symLinkTarget();
+        f2.setFile(parsedSpec);
+    }
+
+    if (parsedSpec.startsWith(baseMkspecDir)) {
+        parsedSpec = parsedSpec.mid(baseMkspecDir.length() + 1);
+    } else {
+        QString sourceMkSpecPath = version->sourcePath() + "/mkspecs";
+        if (parsedSpec.startsWith(sourceMkSpecPath)) {
+            parsedSpec = parsedSpec.mid(sourceMkSpecPath.length() + 1);
+        }
+    }
+#ifdef Q_OS_WIN
+    parsedSpec = parsedSpec.toLower();
+#endif
+    return parsedSpec;
+
+}
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h
index bab8f0627b6b36eae7f15a4337c0d788d316a7ea..4cb40e4a53301adbd7c9e85c13cb7d4b7fe3dd0c 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h
@@ -96,6 +96,8 @@ public:
 
     // TODO rename
     bool compareBuildConfigurationToImportFrom(const QString &workingDirectory);
+    static QStringList removeSpecFromArgumentList(const QStringList &old);
+    static QString extractSpecFromArgumentList(const QStringList &list, QString directory, QtVersion *version);
 
 signals:
     void qtVersionChanged();
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 3aff94f2a595e78a2e38f81dcb4d38169ba9424c..9bfbc47e178e3ec932700dc47d30b846fc3b7c98 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -456,7 +456,7 @@ ProjectExplorer::IBuildConfigurationFactory *Qt4Project::buildConfigurationFacto
     return m_buildConfigurationFactory;
 }
 
-Qt4BuildConfiguration *Qt4Project::addQt4BuildConfiguration(QString buildConfigurationName, QtVersion *qtversion,
+Qt4BuildConfiguration *Qt4Project::addQt4BuildConfiguration(QString displayName, QtVersion *qtversion,
                                           QtVersion::QmakeBuildConfigs qmakeBuildConfiguration,
                                           QStringList additionalArguments)
 {
@@ -464,7 +464,7 @@ Qt4BuildConfiguration *Qt4Project::addQt4BuildConfiguration(QString buildConfigu
 
     // Add the buildconfiguration
     Qt4BuildConfiguration *bc = new Qt4BuildConfiguration(this);
-    bc->setDisplayName(buildConfigurationName);
+    bc->setDisplayName(displayName);
     addBuildConfiguration(bc);
 
     QMakeStep *qmakeStep = new QMakeStep(bc);
@@ -821,64 +821,7 @@ void Qt4Project::updateActiveRunConfiguration()
     emit targetInformationChanged();
 }
 
-QString Qt4Project::extractSpecFromArgumentList(const QStringList &list, QString directory, QtVersion *version)
-{
-    int index = list.indexOf("-spec");
-    if (index == -1)
-        index = list.indexOf("-platform");
-    if (index == -1)
-        return QString();
-
-    ++index;
-
-    if (index >= list.length())
-        return QString();
-
-    QString baseMkspecDir = version->versionInfo().value("QMAKE_MKSPECS");    
-    if (baseMkspecDir.isEmpty())
-        baseMkspecDir = version->versionInfo().value("QT_INSTALL_DATA") + "/mkspecs";
-
-    QString parsedSpec = QDir::cleanPath(list.at(index));
-#ifdef Q_OS_WIN
-    baseMkspecDir = baseMkspecDir.toLower();
-    parsedSpec = parsedSpec.toLower();
-#endif
-    // if the path is relative it can be
-    // relative to the working directory (as found in the Makefiles)
-    // or relatively to the mkspec directory
-    // if it is the former we need to get the canonical form
-    // for the other one we don't need to do anything
-    if (QFileInfo(parsedSpec).isRelative()) {
-        if(QFileInfo(directory + "/" + parsedSpec).exists()) {
-            parsedSpec = QDir::cleanPath(directory + "/" + parsedSpec);
-#ifdef Q_OS_WIN
-            parsedSpec = parsedSpec.toLower();
-#endif
-        } else {
-            parsedSpec = baseMkspecDir + "/" + parsedSpec;
-        }
-    }
-
-    QFileInfo f2(parsedSpec);
-    while (f2.isSymLink()) {
-        parsedSpec = f2.symLinkTarget();
-        f2.setFile(parsedSpec);
-    }
 
-    if (parsedSpec.startsWith(baseMkspecDir)) {
-        parsedSpec = parsedSpec.mid(baseMkspecDir.length() + 1);
-    } else {
-        QString sourceMkSpecPath = version->sourcePath() + "/mkspecs";
-        if (parsedSpec.startsWith(sourceMkSpecPath)) {
-            parsedSpec = parsedSpec.mid(sourceMkSpecPath.length() + 1);
-        }
-    }
-#ifdef Q_OS_WIN
-    parsedSpec = parsedSpec.toLower();
-#endif
-    return parsedSpec;
-
-}
 
 BuildConfigWidget *Qt4Project::createConfigWidget()
 {
@@ -1048,33 +991,6 @@ void Qt4Project::invalidateCachedTargetInformation()
     emit targetInformationChanged();
 }
 
-// We match -spec and -platfrom separetly
-// We ignore -cache, because qmake contained a bug that it didn't
-// mention the -cache in the Makefile
-// That means changing the -cache option in the additional arguments
-// does not automatically rerun qmake. Alas, we could try more
-// intelligent matching for -cache, but i guess people rarely
-// do use that.
-
-QStringList Qt4Project::removeSpecFromArgumentList(const QStringList &old)
-{
-    if (!old.contains("-spec") && !old.contains("-platform") && !old.contains("-cache"))
-        return old;
-    QStringList newList;
-    bool ignoreNext = false;
-    foreach(const QString &item, old) {
-        if (ignoreNext) {
-            ignoreNext = false;
-        } else if (item == "-spec" || item == "-platform" || item == "-cache") {
-            ignoreNext = true;
-        } else {
-            newList << item;
-        }
-    }
-    return newList;
-}
-
-
 /*!
   Handle special case were a subproject of the qt directory is opened, and
   qt was configured to be built as a shadow build -> also build in the sub-
diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h
index 758ec630f8fe9f5b1454f49d69c58caa0d7b11c7..189c999bc4fb5baff0f529bc7f960e9debe685ab 100644
--- a/src/plugins/qt4projectmanager/qt4project.h
+++ b/src/plugins/qt4projectmanager/qt4project.h
@@ -166,7 +166,7 @@ public:
     Qt4Manager *qt4ProjectManager() const;
     ProjectExplorer::IBuildConfigurationFactory *buildConfigurationFactory() const;
 
-    Internal::Qt4BuildConfiguration *addQt4BuildConfiguration(QString buildConfigurationName,
+    Internal::Qt4BuildConfiguration *addQt4BuildConfiguration(QString displayName,
                                                               QtVersion *qtversion,
                                                               QtVersion::QmakeBuildConfigs qmakeBuildConfiguration,
                                                               QStringList additionalArguments = QStringList());
@@ -201,9 +201,6 @@ public:
     virtual QStringList includePaths(const QString &fileName) const;
     virtual QStringList frameworkPaths(const QString &fileName) const;
 
-    static QStringList removeSpecFromArgumentList(const QStringList &old);
-    static QString extractSpecFromArgumentList(const QStringList &list, QString directory, QtVersion *version);
-
     // TODO can i remove this?
     void updateActiveRunConfiguration();
 signals:
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index 768e0c735a97dbcc96b2f7fd1b44819e7269b685..47aacd9f6932ad26336ffab35f5c8a3d02fb583a 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -283,8 +283,8 @@ void Qt4ProjectConfigWidget::importLabelClicked()
             QPair<QtVersion::QmakeBuildConfigs, QStringList> result =
                     QtVersionManager::scanMakeFile(directory, version->defaultBuildConfig());
             QtVersion::QmakeBuildConfigs qmakeBuildConfig = result.first;
-            QStringList additionalArguments = Qt4Project::removeSpecFromArgumentList(result.second);
-            QString parsedSpec = Qt4Project::extractSpecFromArgumentList(result.second, directory, version);
+            QStringList additionalArguments = Qt4BuildConfiguration::removeSpecFromArgumentList(result.second);
+            QString parsedSpec = Qt4BuildConfiguration::extractSpecFromArgumentList(result.second, directory, version);
             QString versionSpec = version->mkspec();
             if (parsedSpec.isEmpty() || parsedSpec == versionSpec || parsedSpec == "default") {
                 // using the default spec, don't modify additional arguments