diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp
index fe6ec93f70eca375fd3c26f84f4dc0eec19fdd88..face86fcdb21d00197e133578c01d92c04c572c5 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp
@@ -38,6 +38,7 @@
 #include "autoreconfstep.h"
 #include "configurestep.h"
 
+#include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/buildsteplist.h>
 #include <projectexplorer/kitinformation.h>
 #include <projectexplorer/projectexplorerconstants.h>
@@ -70,6 +71,12 @@ BuildConfigWidget *AutotoolsBuildConfiguration::createConfigWidget()
     return new AutotoolsBuildSettingsWidget;
 }
 
+QList<BuildConfigWidget *> AutotoolsBuildConfiguration::subConfigWidgets()
+{
+    return QList<BuildConfigWidget *>() << new ProjectExplorer::BuildEnvironmentWidget;
+}
+
+
 AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(ProjectExplorer::Target *parent, const Core::Id id)
     : BuildConfiguration(parent, id)
 {
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h
index 362dec94df625ea799e15318c0bd38653a1d2b7b..a98eec649fd15515eacaf00e7212a9783795c6da 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h
+++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h
@@ -49,6 +49,7 @@ public:
     explicit AutotoolsBuildConfiguration(ProjectExplorer::Target *parent);
 
     ProjectExplorer::BuildConfigWidget *createConfigWidget();
+    QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
 
     QString buildDirectory() const;
     void setBuildDirectory(const QString &buildDirectory);
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
index b93d405c640b455b3ac22f64a2f76583572b9069..c4662e7459677510e761fc671600a90a14a46eaf 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
@@ -40,7 +40,6 @@
 #include "makefileparserthread.h"
 
 #include <projectexplorer/abi.h>
-#include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/kitmanager.h>
 #include <projectexplorer/kitinformation.h>
 #include <projectexplorer/buildconfiguration.h>
@@ -126,11 +125,6 @@ QString AutotoolsProject::defaultBuildDirectory() const
     return projectDirectory();
 }
 
-QList<BuildConfigWidget *> AutotoolsProject::subConfigWidgets()
-{
-    return QList<BuildConfigWidget *>() << new BuildEnvironmentWidget;
-}
-
 ProjectNode *AutotoolsProject::rootProjectNode() const
 {
     return m_rootNode;
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.h b/src/plugins/autotoolsprojectmanager/autotoolsproject.h
index 1821e5f45832ae1c5e935590fed636a72557a626..4800136a72207b58d73ba9f30d4f5e2f9b3c0e5b 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsproject.h
+++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.h
@@ -74,7 +74,6 @@ public:
     Core::Id id() const;
     Core::IDocument *document() const;
     ProjectExplorer::IProjectManager *projectManager() const;
-    QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
     ProjectExplorer::ProjectNode *rootProjectNode() const;
     QStringList files(FilesMode fileMode) const;
     QString defaultBuildDirectory() const;
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
index aacada4e38b8dc352bb598124804ec07918b463c..88dcdc02fcb512dbe69727508be54fde04e6a81d 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
@@ -33,6 +33,7 @@
 #include "cmakeproject.h"
 #include "cmakeprojectconstants.h"
 
+#include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/buildsteplist.h>
 #include <projectexplorer/gnumakeparser.h>
 #include <projectexplorer/ioutputparser.h>
@@ -111,6 +112,14 @@ ProjectExplorer::BuildConfigWidget *CMakeBuildConfiguration::createConfigWidget(
     return new CMakeBuildSettingsWidget;
 }
 
+QList<ProjectExplorer::BuildConfigWidget *> CMakeBuildConfiguration::subConfigWidgets()
+{
+    QList<ProjectExplorer::BuildConfigWidget*> list;
+    list << new ProjectExplorer::BuildEnvironmentWidget;
+    return list;
+}
+
+
 QString CMakeBuildConfiguration::buildDirectory() const
 {
     return m_buildDirectory;
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
index 973766394c1c433f7998ee7bc310f89de53c4b32..7d8cfe38da961f170ff98ef1721bb15d6b7c497d 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
@@ -52,6 +52,7 @@ public:
     ~CMakeBuildConfiguration();
 
     ProjectExplorer::BuildConfigWidget *createConfigWidget();
+    QList<ProjectExplorer::BuildConfigWidget *> subConfigWidgets();
     QString buildDirectory() const;
 
     void setBuildDirectory(const QString &buildDirectory);
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index a2f1fc3345466a659b4ee6985370d6a5e8dda61b..b5b9452f5968af42831a4cc2c6370e1595bc9d05 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -41,7 +41,6 @@
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/projectexplorer.h>
 #include <projectexplorer/headerpath.h>
-#include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/buildsteplist.h>
 #include <projectexplorer/buildmanager.h>
 #include <projectexplorer/kitinformation.h>
@@ -512,13 +511,6 @@ CMakeManager *CMakeProject::projectManager() const
     return m_manager;
 }
 
-QList<ProjectExplorer::BuildConfigWidget*> CMakeProject::subConfigWidgets()
-{
-    QList<ProjectExplorer::BuildConfigWidget*> list;
-    list << new BuildEnvironmentWidget;
-    return list;
-}
-
 ProjectExplorer::ProjectNode *CMakeProject::rootProjectNode() const
 {
     return m_rootNode;
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h
index a68596c170e0b7ed36732edaa1d73cc8b1a2b4b6..e8a3f118e614fb3d0837ba4b863d71bb323f7b6b 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.h
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.h
@@ -85,8 +85,6 @@ public:
     Core::IDocument *document() const;
     CMakeManager *projectManager() const;
 
-    QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
-
     ProjectExplorer::ProjectNode *rootProjectNode() const;
 
     QStringList files(FilesMode fileMode) const;
diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
index 7083fbf530945c5408403138f68f2f8925a9ae1d..9769271614d6e71829818909dc247462dec18417 100644
--- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
+++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
@@ -32,6 +32,7 @@
 #include "genericmakestep.h"
 #include "genericproject.h"
 
+#include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/buildsteplist.h>
 #include <projectexplorer/kitinformation.h>
 #include <projectexplorer/projectexplorerconstants.h>
@@ -110,6 +111,12 @@ BuildConfigWidget *GenericBuildConfiguration::createConfigWidget()
     return new GenericBuildSettingsWidget;
 }
 
+QList<BuildConfigWidget*> GenericBuildConfiguration::subConfigWidgets()
+{
+    QList<BuildConfigWidget*> list;
+    list << new ProjectExplorer::BuildEnvironmentWidget;
+    return list;
+}
 
 /*!
   \class GenericBuildConfigurationFactory
diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.h b/src/plugins/genericprojectmanager/genericbuildconfiguration.h
index f0e4f2ac9579c815dab44e2a1e8d522c66564942..c9774e25bff4da2219c6731122742ffa4ea9827f 100644
--- a/src/plugins/genericprojectmanager/genericbuildconfiguration.h
+++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.h
@@ -50,6 +50,7 @@ public:
     explicit GenericBuildConfiguration(ProjectExplorer::Target *parent);
 
     ProjectExplorer::BuildConfigWidget *createConfigWidget();
+    QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
     QString buildDirectory() const;
 
     QString rawBuildDirectory() const;
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index 8f1020cccd6416a3ea92befe8a24aca757967673..9a9dc3c6e15c717eb47483f02676be04155b1e2e 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -39,7 +39,6 @@
 #include <cpptools/ModelManagerInterface.h>
 #include <extensionsystem/pluginmanager.h>
 #include <projectexplorer/abi.h>
-#include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/buildsteplist.h>
 #include <projectexplorer/headerpath.h>
 #include <projectexplorer/kitinformation.h>
@@ -398,13 +397,6 @@ IProjectManager *GenericProject::projectManager() const
     return m_manager;
 }
 
-QList<BuildConfigWidget*> GenericProject::subConfigWidgets()
-{
-    QList<BuildConfigWidget*> list;
-    list << new BuildEnvironmentWidget;
-    return list;
-}
-
 GenericProjectNode *GenericProject::rootProjectNode() const
 {
     return m_rootNode;
diff --git a/src/plugins/genericprojectmanager/genericproject.h b/src/plugins/genericprojectmanager/genericproject.h
index 192c959a0553b63ae63eea8c9a692c1f4b8eba79..b105fdc8e216603fd8f0be487e3326061014e3ac 100644
--- a/src/plugins/genericprojectmanager/genericproject.h
+++ b/src/plugins/genericprojectmanager/genericproject.h
@@ -64,8 +64,6 @@ public:
     Core::IDocument *document() const;
     ProjectExplorer::IProjectManager *projectManager() const;
 
-    QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
-
     GenericProjectNode *rootProjectNode() const;
     QStringList files(FilesMode fileMode) const;
 
diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp
index 21462fe206054e659f01d6315b940874f002799b..42cbf9bdbeacf9259fcb48af91fe192a5d439cfe 100644
--- a/src/plugins/projectexplorer/buildconfiguration.cpp
+++ b/src/plugins/projectexplorer/buildconfiguration.cpp
@@ -116,6 +116,11 @@ BuildConfiguration::~BuildConfiguration()
     delete m_macroExpander;
 }
 
+QList<BuildConfigWidget*> BuildConfiguration::subConfigWidgets()
+{
+    return QList<BuildConfigWidget*>();
+}
+
 Utils::AbstractMacroExpander *BuildConfiguration::macroExpander()
 {
     if (!m_macroExpander)
diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h
index 78ed6bd93f160159952cb387083e2fef07a3c28a..959e18bf8e949ccfeb707aa28f668a42b59e6e98 100644
--- a/src/plugins/projectexplorer/buildconfiguration.h
+++ b/src/plugins/projectexplorer/buildconfiguration.h
@@ -61,6 +61,7 @@ public:
     virtual QString buildDirectory() const = 0;
 
     virtual BuildConfigWidget *createConfigWidget() = 0;
+    virtual QList<BuildConfigWidget*> subConfigWidgets();
 
     // Maybe the BuildConfiguration is not the best place for the environment
     Utils::Environment baseEnvironment() const;
diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
index f0ff0844f7a381a80c294fe3fc201830f42da39b..10be21edd1dab25c8b5a33559fed855027029036 100644
--- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
@@ -242,7 +242,7 @@ void BuildSettingsWidget::updateBuildSettings()
     addSubWidget(new BuildStepsPage(m_target, Core::Id(Constants::BUILDSTEPS_BUILD)));
     addSubWidget(new BuildStepsPage(m_target, Core::Id(Constants::BUILDSTEPS_CLEAN)));
 
-    QList<BuildConfigWidget *> subConfigWidgets = m_target->project()->subConfigWidgets();
+    QList<BuildConfigWidget *> subConfigWidgets = m_buildConfiguration->subConfigWidgets();
     foreach (BuildConfigWidget *subConfigWidget, subConfigWidgets)
         addSubWidget(subConfigWidget);
 
diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp
index ca42de0f9228df93c6907f1acb3df6a4942db056..261955c03b1dcacf215e475ec96214d391333503 100644
--- a/src/plugins/projectexplorer/project.cpp
+++ b/src/plugins/projectexplorer/project.cpp
@@ -306,10 +306,6 @@ bool Project::restoreSettings()
     return ok;
 }
 
-QList<BuildConfigWidget*> Project::subConfigWidgets()
-{
-    return QList<BuildConfigWidget*>();
-}
 
 /*!
     \brief Serialize all data into a QVariantMap.
diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h
index 0385f28c6eb03673f41f96afc211c209b8d30cd8..56b9a15c540a237a1a56b86ed73a564274994548 100644
--- a/src/plugins/projectexplorer/project.h
+++ b/src/plugins/projectexplorer/project.h
@@ -97,8 +97,6 @@ public:
     void saveSettings();
     bool restoreSettings();
 
-    virtual QList<BuildConfigWidget*> subConfigWidgets();
-
     virtual ProjectNode *rootProjectNode() const = 0;
 
     enum FilesMode { AllFiles, ExcludeGeneratedFiles };
diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp
index abd4f2e5a465df270e9e23e5abd5791504b4de52..e20ab08a6b5fc7b70f3a1d2b6362f0d34c42daa4 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.cpp
+++ b/src/plugins/qmlprojectmanager/qmlproject.cpp
@@ -301,11 +301,6 @@ bool QmlProject::supportsKit(ProjectExplorer::Kit *k, QString *errorMessage) con
     return version;
 }
 
-QList<ProjectExplorer::BuildConfigWidget*> QmlProject::subConfigWidgets()
-{
-    return QList<ProjectExplorer::BuildConfigWidget*>();
-}
-
 ProjectExplorer::ProjectNode *QmlProject::rootProjectNode() const
 {
     return m_rootNode;
diff --git a/src/plugins/qmlprojectmanager/qmlproject.h b/src/plugins/qmlprojectmanager/qmlproject.h
index 86c2bd23f6815fd6c0af9a421c808c8b1de71761..4b642db986f432b18e7acf05ed3301f33c862ad1 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.h
+++ b/src/plugins/qmlprojectmanager/qmlproject.h
@@ -68,8 +68,6 @@ public:
 
     bool supportsKit(ProjectExplorer::Kit *k, QString *errorMessage) const;
 
-    QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
-
     ProjectExplorer::ProjectNode *rootProjectNode() const;
     QStringList files(FilesMode fileMode) const;
 
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
index 1195499a1a6a95ef283a2bc2fb81d4484d3b108f..bf55009c673b756e1fc7f56362386d3607207348 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
@@ -39,6 +39,7 @@
 #include <utils/qtcassert.h>
 #include <utils/qtcprocess.h>
 #include <limits>
+#include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/buildsteplist.h>
 #include <projectexplorer/projectexplorerconstants.h>
 #include <projectexplorer/target.h>
@@ -189,6 +190,13 @@ BuildConfigWidget *Qt4BuildConfiguration::createConfigWidget()
     return new Qt4ProjectConfigWidget(target());
 }
 
+QList<BuildConfigWidget*> Qt4BuildConfiguration::subConfigWidgets()
+{
+    QList<BuildConfigWidget*> subWidgets;
+    subWidgets << new ProjectExplorer::BuildEnvironmentWidget;
+    return subWidgets;
+}
+
 QString Qt4BuildConfiguration::defaultShadowBuildDirectory() const
 {
     // todo displayName isn't ideal
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h
index b2348b8306d2e57b13edb21bda4b52a890749c61..42efcadb45614132c15280e962476ec5fa46385e 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h
@@ -56,6 +56,7 @@ public:
     ~Qt4BuildConfiguration();
 
     ProjectExplorer::BuildConfigWidget *createConfigWidget();
+    QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
     QString buildDirectory() const;
     bool shadowBuild() const;
     QString shadowBuildDirectory() const;
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 27342e7f651931d4fd1b4c574afd78038e2f004c..267826dff471b4388a9d985814917c1033ed3439 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -55,7 +55,6 @@
 #include <projectexplorer/toolchain.h>
 #include <projectexplorer/headerpath.h>
 #include <projectexplorer/target.h>
-#include <projectexplorer/buildenvironmentwidget.h>
 #include <projectexplorer/kitinformation.h>
 #include <projectexplorer/projectexplorer.h>
 #include <projectexplorer/projectexplorerconstants.h>
@@ -1057,13 +1056,6 @@ bool Qt4Project::parseInProgress(const QString &proFilePath) const
     return node && node->parseInProgress();
 }
 
-QList<BuildConfigWidget*> Qt4Project::subConfigWidgets()
-{
-    QList<BuildConfigWidget*> subWidgets;
-    subWidgets << new BuildEnvironmentWidget;
-    return subWidgets;
-}
-
 void Qt4Project::collectAllfProFiles(QList<Qt4ProFileNode *> &list, Qt4ProFileNode *node)
 {
     list.append(node);
diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h
index 10767cf90da16447c6a3d8b3375f219402ed8ee8..58863844d7fadebc860a859ea01caf824fad5546 100644
--- a/src/plugins/qt4projectmanager/qt4project.h
+++ b/src/plugins/qt4projectmanager/qt4project.h
@@ -92,8 +92,6 @@ public:
     virtual QStringList files(FilesMode fileMode) const;
     virtual QString generatedUiHeader(const QString &formFile) const;
 
-    QList<ProjectExplorer::BuildConfigWidget*> subConfigWidgets();
-
     QList<Qt4ProFileNode *> allProFiles() const;
     QList<Qt4ProFileNode *> applicationProFiles() const;
     bool hasApplicationProFile(const QString &path) const;