diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index 8ed13b3a6d7d282d9c236f7a7d0fe8d4616913ca..e5332601a4e569c59d5c8fe29bd631fc9fb10ca6 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -586,10 +586,11 @@ QList<ProjectExplorer::EnvironmentItem> CMakeProject::userEnvironmentChanges(Bui
 
 void CMakeProject::setUserEnvironmentChanges(const QString &buildConfig, const QList<ProjectExplorer::EnvironmentItem> &diff)
 {
+    ProjectExplorer::BuildConfiguration *bc = buildConfiguration(buildConfig);
     QStringList list = EnvironmentItem::toStringList(diff);
-    if (list == value(buildConfig, "userEnvironmentChanges"))
+    if (list == bc->value("userEnvironmentChanges"))
         return;
-    setValue(buildConfig, "userEnvironmentChanges", list);
+    bc->setValue("userEnvironmentChanges", list);
     emit environmentChanged(buildConfig);
 }
 
@@ -613,22 +614,6 @@ QList<ProjectExplorer::BuildConfigWidget*> CMakeProject::subConfigWidgets()
     return list;
 }
 
-// bool CMakeProject::newBuildConfiguration(const QString &buildConfiguration)
-// {
-//     // Default to all
-//     if (targets().contains("all"))
-//         makeStep()->setBuildTarget(buildConfiguration, "all", true);
-//
-//    CMakeOpenProjectWizard copw(projectManager(), sourceDirectory(), buildDirectory(buildConfiguration), environment(buildConfiguration));
-//    if (copw.exec() == QDialog::Accepted) {
-//        setValue(buildConfiguration, "buildDirectory", copw.buildDirectory());
-//        setValue(buildConfiguration, "msvcVersion", copw.msvcVersion());
-//        parseCMakeLists();
-//        return true;
-//    }
-//    return false;
-// }
-
 ProjectExplorer::ProjectNode *CMakeProject::rootProjectNode() const
 {
     return m_rootNode;
@@ -678,9 +663,9 @@ bool CMakeProject::restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader
 
         ProjectExplorer::BuildConfiguration *bc = new ProjectExplorer::BuildConfiguration("all");
         addBuildConfiguration(bc);
-        setValue(bc->name(), "msvcVersion", copw.msvcVersion());
+        bc->setValue("msvcVersion", copw.msvcVersion());
         if (!copw.buildDirectory().isEmpty())
-            setValue(bc->name(), "buildDirectory", copw.buildDirectory());
+            bc->setValue("buildDirectory", copw.buildDirectory());
         //TODO save arguments somewhere copw.arguments()
 
         MakeStep *cleanMakeStep = new MakeStep(this);
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index 2f9beb4b13583b3c74026951ff971d360cdcd89b..320cd0587ad49b06606875e07141934a2e434f00 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -132,6 +132,13 @@ QString GenericBuildConfigurationFactory::displayNameForType(const QString &type
 
 QList<BuildConfiguration *> GenericBuildConfigurationFactory::create(const QString &type) const
 {
+
+// bool GenericProject::newBuildConfiguration(const QString &buildConfiguration)
+// {
+//     makeStep()->setBuildTarget(buildConfiguration, "all", true);
+//     return true;
+// }
+
     return QList<BuildConfiguration *>() << new BuildConfiguration;
 }
 
@@ -480,12 +487,6 @@ QList<ProjectExplorer::BuildConfigWidget*> GenericProject::subConfigWidgets()
     return QList<ProjectExplorer::BuildConfigWidget*>();
 }
 
-// bool GenericProject::newBuildConfiguration(const QString &buildConfiguration)
-// {
-//     makeStep()->setBuildTarget(buildConfiguration, "all", true);
-//     return true;
-// }
-
 GenericProjectNode *GenericProject::rootProjectNode() const
 {
     return m_rootNode;
@@ -619,7 +620,7 @@ void GenericBuildSettingsWidget::init(const QString &buildConfigurationName)
 
 void GenericBuildSettingsWidget::buildDirectoryChanged()
 {
-    m_project->setValue(m_buildConfiguration, "buildDirectory", m_pathChooser->path());
+    m_project->buildConfiguration(m_buildConfiguration)->setValue("buildDirectory", m_pathChooser->path());
 }
 
 void GenericBuildSettingsWidget::toolChainSelected(int index)
diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
index 35967d4159f992104bc43024d40192f5efc318fb..46ffaf145c887bd0b8f8332a862f3bf5fae0a12e 100644
--- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
@@ -256,6 +256,7 @@ void BuildSettingsWidget::activeBuildConfigurationChanged()
 
 void BuildSettingsWidget::createConfiguration()
 {
+    // TODO!
 //    bool ok;
 //    QString newBuildConfiguration = QInputDialog::getText(this, tr("New configuration"), tr("New Configuration Name:"), QLineEdit::Normal, QString(), &ok);
 //    if (!ok || newBuildConfiguration.isEmpty())
diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp
index 26e06b50cc786da69861c9dc617a4d1b5f0b5846..ff7a3616ee2fbd390bebaef70526314a24a71ab6 100644
--- a/src/plugins/projectexplorer/project.cpp
+++ b/src/plugins/projectexplorer/project.cpp
@@ -442,22 +442,6 @@ BuildConfiguration *Project::buildConfiguration(const QString &name) const
     return 0;
 }
 
-void Project::setValue(const QString &buildConfigurationName, const QString &name, const QVariant &value)
-{
-    BuildConfiguration *bc = buildConfiguration(buildConfigurationName);
-    Q_ASSERT(bc);
-    bc->setValue(name, value);
-}
-
-QVariant Project::value(const QString &buildConfigurationName, const QString &name) const
-{
-    BuildConfiguration *bc = buildConfiguration(buildConfigurationName);
-    if (bc)
-        return bc->value(name);
-    else
-        return QVariant();
-}
-
 BuildConfiguration *Project::activeBuildConfiguration() const
 {
     return buildConfiguration(m_activeBuildConfiguration); //TODO
diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h
index 19b2aa0ff69968037b69bcfad21de85522af203d..b8759b5f01e7b0d41e4327181fa703fd0e914388 100644
--- a/src/plugins/projectexplorer/project.h
+++ b/src/plugins/projectexplorer/project.h
@@ -104,8 +104,6 @@ public:
     void setDisplayNameFor(const QString &buildConfiguration, const QString &displayName);
     BuildConfiguration *activeBuildConfiguration() const;
     void setActiveBuildConfiguration(BuildConfiguration *configuration);
-    void setValue(const QString &buildConfiguration, const QString &name, const QVariant &value);
-    QVariant value(const QString &buildConfiguration, const QString &name) const;
 
     virtual IBuildConfigurationFactory *buildConfigurationFactory() const = 0;
 
diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 93ddd014699b6166dabecae993c230c548755c23..fc6296576ab00e3d25b14cdea7acfc8acbc3b174 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -251,14 +251,15 @@ void QMakeStepConfigWidget::qmakeArgumentsLineEditTextEdited()
 
 void QMakeStepConfigWidget::buildConfigurationChanged()
 {
-    QtVersion::QmakeBuildConfig buildConfiguration = QtVersion::QmakeBuildConfig(m_step->project()->value(m_buildConfiguration, "buildConfiguration").toInt());
+    ProjectExplorer::BuildConfiguration *bc = m_step->project()->buildConfiguration(m_buildConfiguration);
+    QtVersion::QmakeBuildConfig buildConfiguration = QtVersion::QmakeBuildConfig(bc->value("buildConfiguration").toInt());
     if (m_ui.buildConfigurationComboBox->currentIndex() == 0) {
         // debug
         buildConfiguration = QtVersion::QmakeBuildConfig(buildConfiguration | QtVersion::DebugBuild);
     } else {
         buildConfiguration = QtVersion::QmakeBuildConfig(buildConfiguration & ~QtVersion::DebugBuild);
     }
-    m_step->project()->setValue(m_buildConfiguration, "buildConfiguration", int(buildConfiguration));
+    bc->setValue("buildConfiguration", int(buildConfiguration));
     static_cast<Qt4Project *>(m_step->project())->invalidateCachedTargetInformation();
     updateTitleLabel();
     updateEffectiveQMakeCall();
@@ -279,7 +280,8 @@ void QMakeStepConfigWidget::init(const QString &buildConfiguration)
     m_buildConfiguration = buildConfiguration;
     QString qmakeArgs = ProjectExplorer::Environment::joinArgumentList(m_step->value(buildConfiguration, "qmakeArgs").toStringList());
     m_ui.qmakeAdditonalArgumentsLineEdit->setText(qmakeArgs);
-    bool debug = QtVersion::QmakeBuildConfig(m_step->project()->value(buildConfiguration, "buildConfiguration").toInt()) & QtVersion::DebugBuild;
+    ProjectExplorer::BuildConfiguration *bc = m_step->project()->buildConfiguration(buildConfiguration);
+    bool debug = QtVersion::QmakeBuildConfig(bc->value("buildConfiguration").toInt()) & QtVersion::DebugBuild;
     m_ui.buildConfigurationComboBox->setCurrentIndex(debug? 0 : 1);
     updateTitleLabel();
     updateEffectiveQMakeCall();
diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
index 539cfd105bf6ca89b9cc5297e3656ac6a3d15d03..562689e570fdddeec45d6e393a07d44de912f085 100644
--- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp
@@ -239,11 +239,12 @@ void Qt4ProjectConfigWidget::shadowBuildCheckBoxClicked(bool checked)
     m_ui->shadowBuildDirEdit->setEnabled(checked);
     m_browseButton->setEnabled(checked);
     bool b = m_ui->shadowBuildCheckBox->isChecked();
-    m_pro->setValue(m_buildConfiguration, "useShadowBuild", b);
+    ProjectExplorer::BuildConfiguration *bc = m_pro->buildConfiguration(m_buildConfiguration);
+    bc->setValue("useShadowBuild", b);
     if (b)
-        m_pro->setValue(m_buildConfiguration, "buildDirectory", m_ui->shadowBuildDirEdit->path());
+        bc->setValue("buildDirectory", m_ui->shadowBuildDirEdit->path());
     else
-        m_pro->setValue(m_buildConfiguration, "buildDirectory", QVariant(QString::null));
+        bc->setValue("buildDirectory", QVariant(QString::null));
     updateDetails();
 }
 
@@ -276,9 +277,10 @@ void Qt4ProjectConfigWidget::updateImportLabel()
 
 void Qt4ProjectConfigWidget::shadowBuildLineEditTextChanged()
 {
-    if (m_pro->value(m_buildConfiguration, "buildDirectory").toString() == m_ui->shadowBuildDirEdit->path())
+    ProjectExplorer::BuildConfiguration *bc = m_pro->buildConfiguration(m_buildConfiguration);
+    if (bc->value("buildDirectory").toString() == m_ui->shadowBuildDirEdit->path())
         return;
-    m_pro->setValue(m_buildConfiguration, "buildDirectory", m_ui->shadowBuildDirEdit->path());
+    bc->setValue("buildDirectory", m_ui->shadowBuildDirEdit->path());
     // if the directory already exists
     // check if we have a build in there and
     // offer to import it