diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp
index 4fe313e6a58cf54e74cbdd095f9b665183a8a51c..6cbb7bc72ef65441dfaac27fc7e0a6518c037394 100644
--- a/src/plugins/cmakeprojectmanager/makestep.cpp
+++ b/src/plugins/cmakeprojectmanager/makestep.cpp
@@ -284,7 +284,7 @@ BuildStep *MakeStepFactory::clone(BuildStep *bs, BuildConfiguration *bc) const
     return new MakeStep(static_cast<MakeStep *>(bs), bc);
 }
 
-QStringList MakeStepFactory::canCreateForProject(Project * /* pro */) const
+QStringList MakeStepFactory::canCreateForProject(BuildConfiguration * /* pro */) const
 {
     return QStringList();
 }
diff --git a/src/plugins/cmakeprojectmanager/makestep.h b/src/plugins/cmakeprojectmanager/makestep.h
index f01bb1d6141d1edaea1bca687a740f98709d1174..6bb2a9b55691858ec2057137d94b780db875e404 100644
--- a/src/plugins/cmakeprojectmanager/makestep.h
+++ b/src/plugins/cmakeprojectmanager/makestep.h
@@ -107,7 +107,7 @@ class MakeStepFactory : public ProjectExplorer::IBuildStepFactory
     virtual bool canCreate(const QString &name) const;
     virtual ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *bc, const QString &name) const;
     virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const;
-    virtual QStringList canCreateForProject(ProjectExplorer::Project *pro) const;
+    virtual QStringList canCreateForProject(ProjectExplorer::BuildConfiguration *bc) const;
     virtual QString displayNameForName(const QString &name) const;
 };
 
diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp
index 54dd056d867fa04c2ff0ede49c8ecd30d78b379f..2d7f82de09dc63589cd8f0be346e6474a0f9bf69 100644
--- a/src/plugins/genericprojectmanager/genericmakestep.cpp
+++ b/src/plugins/genericprojectmanager/genericmakestep.cpp
@@ -292,7 +292,7 @@ ProjectExplorer::BuildStep *GenericMakeStepFactory::clone(ProjectExplorer::Build
     return new GenericMakeStep(static_cast<GenericMakeStep*>(bs), bc);
 }
 
-QStringList GenericMakeStepFactory::canCreateForProject(ProjectExplorer::Project * /* pro */) const
+QStringList GenericMakeStepFactory::canCreateForProject(ProjectExplorer::BuildConfiguration * /* pro */) const
 {
     return QStringList();
 }
diff --git a/src/plugins/genericprojectmanager/genericmakestep.h b/src/plugins/genericprojectmanager/genericmakestep.h
index c8c059a3501c814385b2c8651ed395f75e7660bd..d5eb0ccc9793cc7aea3f14fe63144615da6bc4e4 100644
--- a/src/plugins/genericprojectmanager/genericmakestep.h
+++ b/src/plugins/genericprojectmanager/genericmakestep.h
@@ -107,7 +107,7 @@ class GenericMakeStepFactory : public ProjectExplorer::IBuildStepFactory
                                                const QString &name) const;
     virtual ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs,
                                               ProjectExplorer::BuildConfiguration *bc) const;
-    virtual QStringList canCreateForProject(ProjectExplorer::Project *pro) const;
+    virtual QStringList canCreateForProject(ProjectExplorer::BuildConfiguration *bc) const;
     virtual QString displayNameForName(const QString &name) const;
 };
 
diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h
index c210f6af019da61e98a07f28dc3be7530fb0b430..78c715495db6a17d2e1e803e7eece14d3e827f8d 100644
--- a/src/plugins/projectexplorer/buildstep.h
+++ b/src/plugins/projectexplorer/buildstep.h
@@ -37,8 +37,6 @@
 #include <QtCore/QFutureInterface>
 
 namespace ProjectExplorer {
-// TODO remove this
-class Project;
 class BuildConfiguration;
 
 /*
@@ -135,7 +133,7 @@ public:
     virtual BuildStep *create(BuildConfiguration *bc, const QString &name) const = 0;
     /// Called by the add BuildStep action to check which BuildSteps could be added
     /// to the project by this factory, should return a list of names
-    virtual QStringList canCreateForProject(Project *pro) const = 0;
+    virtual QStringList canCreateForProject(BuildConfiguration *bc) const = 0;
     /// Called to convert an internal name to a displayName
 
     /// Called to clone a BuildStep
diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp
index fc1416000e6ee4379e0731f7b4d9fea98c310b12..c95b9b32d2a86dc0c9b39116fb6fc31edb223dab 100644
--- a/src/plugins/projectexplorer/buildstepspage.cpp
+++ b/src/plugins/projectexplorer/buildstepspage.cpp
@@ -47,7 +47,6 @@ using namespace ProjectExplorer::Internal;
 
 BuildStepsPage::BuildStepsPage(Project *project, bool clean) :
     BuildConfigWidget(),
-    m_pro(project),
     m_clean(clean)
 {
     m_vbox = new QVBoxLayout(this);
@@ -144,7 +143,7 @@ void BuildStepsPage::updateAddBuildStepMenu()
     //Build up a list of possible steps and save map the display names to the (internal) name and factories.
     QList<IBuildStepFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<IBuildStepFactory>();
     foreach (IBuildStepFactory * factory, factories) {
-        QStringList names = factory->canCreateForProject(m_pro);
+        QStringList names = factory->canCreateForProject(m_configuration);
         foreach (const QString &name, names) {
             map.insert(factory->displayNameForName(name), QPair<QString, IBuildStepFactory *>(name, factory));
         }
diff --git a/src/plugins/projectexplorer/buildstepspage.h b/src/plugins/projectexplorer/buildstepspage.h
index 92e8180218b03de405f1fbfa64ed0f7aea2851ae..1e716d4d2152ac93c458301c7925b471bf7f4669 100644
--- a/src/plugins/projectexplorer/buildstepspage.h
+++ b/src/plugins/projectexplorer/buildstepspage.h
@@ -87,7 +87,6 @@ private:
     void updateBuildStepButtonsState();
     void addBuildStepWidget(int pos, BuildStep *step);
 
-    Project *m_pro;
     BuildConfiguration *m_configuration;
     QHash<QAction *, QPair<QString, ProjectExplorer::IBuildStepFactory *> > m_addBuildStepHash;
     bool m_clean;
diff --git a/src/plugins/projectexplorer/processstep.cpp b/src/plugins/projectexplorer/processstep.cpp
index e442fc14d6cc8ac0e669a114a3ca559035b29beb..fac4255c4c445e080cdae2bd6ac046679879612a 100644
--- a/src/plugins/projectexplorer/processstep.cpp
+++ b/src/plugins/projectexplorer/processstep.cpp
@@ -212,9 +212,9 @@ BuildStep *ProcessStepFactory::clone(BuildStep *bs, BuildConfiguration *bc) cons
     return new ProcessStep(static_cast<ProcessStep *>(bs), bc);
 }
 
-QStringList ProcessStepFactory::canCreateForProject(Project *pro) const
+QStringList ProcessStepFactory::canCreateForProject(BuildConfiguration *bc) const
 {
-    Q_UNUSED(pro)
+    Q_UNUSED(bc)
     return QStringList()<<"projectexplorer.processstep";
 }
 QString ProcessStepFactory::displayNameForName(const QString &name) const
diff --git a/src/plugins/projectexplorer/processstep.h b/src/plugins/projectexplorer/processstep.h
index e7e74d0267b71d7d53bdab746d7773c127ad8a06..2dc0398ad78ef979fa0fe0fedc7e6e425e5677bd 100644
--- a/src/plugins/projectexplorer/processstep.h
+++ b/src/plugins/projectexplorer/processstep.h
@@ -47,7 +47,7 @@ public:
     virtual bool canCreate(const QString &name) const;
     virtual BuildStep *create(BuildConfiguration *bc, const QString &name) const;
     virtual BuildStep *clone(BuildStep *bs, BuildConfiguration *bc) const;
-    virtual QStringList canCreateForProject(Project *pro) const;
+    virtual QStringList canCreateForProject(BuildConfiguration *pro) const;
     virtual QString displayNameForName(const QString &name) const;
 };
 
diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp
index 4f2aba4aa15f583f6b986981895bf5a11edd6287..77280b2498bb5661411f5031a32c7c713d0a9b39 100644
--- a/src/plugins/qt4projectmanager/makestep.cpp
+++ b/src/plugins/qt4projectmanager/makestep.cpp
@@ -335,9 +335,9 @@ ProjectExplorer::BuildStep *MakeStepFactory::clone(ProjectExplorer::BuildStep *b
     return new MakeStep(static_cast<MakeStep *>(bs), bc);
 }
 
-QStringList MakeStepFactory::canCreateForProject(ProjectExplorer::Project *pro) const
+QStringList MakeStepFactory::canCreateForProject(ProjectExplorer::BuildConfiguration *pro) const
 {
-    if (qobject_cast<Qt4Project *>(pro))
+    if (qobject_cast<Qt4BuildConfiguration *>(pro))
         return QStringList() << Constants::MAKESTEP;
     else
         return QStringList();
diff --git a/src/plugins/qt4projectmanager/makestep.h b/src/plugins/qt4projectmanager/makestep.h
index 471316897dec6407b69b19740ca71fafdf16ecde..8040d98c2cb86729f01e44698be1c1f61555f4e4 100644
--- a/src/plugins/qt4projectmanager/makestep.h
+++ b/src/plugins/qt4projectmanager/makestep.h
@@ -54,7 +54,7 @@ public:
     bool canCreate(const QString & name) const;
     ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *bc, const QString & name) const;
     ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const;
-    QStringList canCreateForProject(ProjectExplorer::Project *pro) const;
+    QStringList canCreateForProject(ProjectExplorer::BuildConfiguration *bc) const;
     QString displayNameForName(const QString &name) const;
 };
 }
diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 9a8181e9641955972f96579ea054909bd457f002..c5c914c031e97e1a8061d63f9eaf84ec4e28b568 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -377,9 +377,11 @@ ProjectExplorer::BuildStep *QMakeStepFactory::clone(ProjectExplorer::BuildStep *
     return new QMakeStep(static_cast<QMakeStep *>(bs), bc);
 }
 
-QStringList QMakeStepFactory::canCreateForProject(ProjectExplorer::Project *) const
+QStringList QMakeStepFactory::canCreateForProject(ProjectExplorer::BuildConfiguration *bc) const
 {
-    return QStringList() << Constants::QMAKESTEP;
+    if (qobject_cast<Qt4BuildConfiguration *>(bc))
+        return QStringList() << Constants::QMAKESTEP;
+    return QStringList();
 }
 
 QString QMakeStepFactory::displayNameForName(const QString &name) const
diff --git a/src/plugins/qt4projectmanager/qmakestep.h b/src/plugins/qt4projectmanager/qmakestep.h
index 2e08953e24656c7db22162fab2b715c4f56ebebe..fd249756f3f0fd26cc4163dbcb6ea1cd30e6860c 100644
--- a/src/plugins/qt4projectmanager/qmakestep.h
+++ b/src/plugins/qt4projectmanager/qmakestep.h
@@ -54,7 +54,7 @@ public:
     bool canCreate(const QString & name) const;
     ProjectExplorer::BuildStep *create(ProjectExplorer::BuildConfiguration *bc, const QString & name) const;
     ProjectExplorer::BuildStep *clone(ProjectExplorer::BuildStep *bs, ProjectExplorer::BuildConfiguration *bc) const;
-    QStringList canCreateForProject(ProjectExplorer::Project *pro) const;
+    QStringList canCreateForProject(ProjectExplorer::BuildConfiguration *bc) const;
     QString displayNameForName(const QString &name) const;
 };
 }