diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
index e319388f8bfb795fcc43323093b6420725a7e633..fac04077b61ddcce688139013e7fcc1d114740f8 100644
--- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
@@ -37,8 +37,8 @@
 #include <extensionsystem/pluginmanager.h>
 #include <utils/qtcassert.h>
 
-#include <QtCore/QDebug>
 #include <QtCore/QPair>
+#include <QtGui/QApplication>
 #include <QtGui/QInputDialog>
 #include <QtGui/QLabel>
 #include <QtGui/QVBoxLayout>
@@ -56,7 +56,7 @@ bool BuildSettingsPanelFactory::supports(Project *project)
     return project->hasBuildSettings();
 }
 
-PropertiesPanel *BuildSettingsPanelFactory::createPanel(Project *project)
+IPropertiesPanel *BuildSettingsPanelFactory::createPanel(Project *project)
 {
     return new BuildSettingsPanel(project);
 }
@@ -65,9 +65,9 @@ PropertiesPanel *BuildSettingsPanelFactory::createPanel(Project *project)
 /// BuildSettingsPanel
 ///
 
-BuildSettingsPanel::BuildSettingsPanel(Project *project)
-        : PropertiesPanel(),
-          m_widget(new BuildSettingsWidget(project))
+BuildSettingsPanel::BuildSettingsPanel(Project *project) :
+    m_widget(new BuildSettingsWidget(project)),
+    m_icon(":/projectexplorer/images/rebuild.png")
 {
 }
 
@@ -78,14 +78,19 @@ BuildSettingsPanel::~BuildSettingsPanel()
 
 QString BuildSettingsPanel::name() const
 {
-    return tr("Build Settings");
+    return QApplication::tr("Build Settings");
 }
 
-QWidget *BuildSettingsPanel::widget()
+QWidget *BuildSettingsPanel::widget() const
 {
     return m_widget;
 }
 
+QIcon BuildSettingsPanel::icon() const
+{
+    return m_icon;
+}
+
 ///
 // BuildSettingsSubWidgets
 ///
diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.h b/src/plugins/projectexplorer/buildsettingspropertiespage.h
index 583835ecfc8b7e71eb5e5c5f346e5a78561be545..169feeedf7e01145868e4402675acdd0fc1e4dd8 100644
--- a/src/plugins/projectexplorer/buildsettingspropertiespage.h
+++ b/src/plugins/projectexplorer/buildsettingspropertiespage.h
@@ -64,22 +64,23 @@ class BuildSettingsPanelFactory : public IPanelFactory
 {
 public:
     bool supports(Project *project);
-    PropertiesPanel *createPanel(Project *project);
+    IPropertiesPanel *createPanel(Project *project);
 };
 
 class BuildSettingsWidget;
 
-class BuildSettingsPanel : public PropertiesPanel
+class BuildSettingsPanel : public IPropertiesPanel
 {
-    Q_OBJECT
 public:
     BuildSettingsPanel(Project *project);
     ~BuildSettingsPanel();
     QString name() const;
-    QWidget *widget();
+    QWidget *widget() const;
+    QIcon icon() const;
 
 private:
     BuildSettingsWidget *m_widget;
+    const QIcon m_icon;
 };
 
 class BuildConfigurationsWidget;
diff --git a/src/plugins/projectexplorer/dependenciespanel.cpp b/src/plugins/projectexplorer/dependenciespanel.cpp
index 3d4fc5519ea52084236608b8647e8ee3f3bb0e6e..f9608e561c4cc348ec9ef69c987351067103fb76 100644
--- a/src/plugins/projectexplorer/dependenciespanel.cpp
+++ b/src/plugins/projectexplorer/dependenciespanel.cpp
@@ -38,6 +38,7 @@
 #include <QtCore/QDebug>
 #include <QtCore/QAbstractListModel>
 #include <QtGui/QLabel>
+#include <QtGui/QApplication>
 #include <QtGui/QHBoxLayout>
 #include <QtGui/QTreeView>
 #include <QtGui/QSpacerItem>
@@ -275,9 +276,9 @@ void DependenciesWidget::updateDetails()
 // DependenciesPanel
 //
 
-DependenciesPanel::DependenciesPanel(SessionManager *session, Project *project)
-    : PropertiesPanel()
-    , m_widget(new DependenciesWidget(session, project))
+DependenciesPanel::DependenciesPanel(SessionManager *session, Project *project) :
+    m_widget(new DependenciesWidget(session, project)),
+    m_icon(":/projectexplorer/images/session.png")
 {
 }
 
@@ -288,14 +289,19 @@ DependenciesPanel::~DependenciesPanel()
 
 QString DependenciesPanel::name() const
 {
-    return tr("Dependencies");
+    return QApplication::tr("Dependencies");
 }
 
-QWidget *DependenciesPanel::widget()
+QWidget *DependenciesPanel::widget() const
 {
     return m_widget;
 }
 
+QIcon DependenciesPanel::icon() const
+{
+    return m_icon;
+}
+
 //
 // DependenciesPanelFactory
 //
@@ -310,7 +316,7 @@ bool DependenciesPanelFactory::supports(Project * /* project */)
     return true;
 }
 
-PropertiesPanel *DependenciesPanelFactory::createPanel(Project *project)
+IPropertiesPanel *DependenciesPanelFactory::createPanel(Project *project)
 {
     return new DependenciesPanel(m_session, project);
 }
diff --git a/src/plugins/projectexplorer/dependenciespanel.h b/src/plugins/projectexplorer/dependenciespanel.h
index 8e017a178b06e79dc9c11b81d99b35cd57e5fd5c..bb2697c9d1d8ccf598ea8f6b3f096799e8fdb2db 100644
--- a/src/plugins/projectexplorer/dependenciespanel.h
+++ b/src/plugins/projectexplorer/dependenciespanel.h
@@ -53,24 +53,25 @@ public:
     DependenciesPanelFactory(SessionManager *session);
 
     bool supports(Project *project);
-    PropertiesPanel *createPanel(Project *project);
+    IPropertiesPanel *createPanel(Project *project);
 
 private:
     SessionManager *m_session;
 };
 
 
-class DependenciesPanel : public PropertiesPanel
+class DependenciesPanel : public IPropertiesPanel
 {
-    Q_OBJECT
 public:
     DependenciesPanel(SessionManager *session, Project *project);
     ~DependenciesPanel();
     QString name() const;
-    QWidget *widget();
+    QWidget *widget() const;
+    QIcon icon() const;
 
 private:
     DependenciesWidget *m_widget;
+    const QIcon m_icon;
 };
 
 //
diff --git a/src/plugins/projectexplorer/editorsettingspropertiespage.cpp b/src/plugins/projectexplorer/editorsettingspropertiespage.cpp
index 82b185a4baba4ac1bb262b5546678694640bdfd4..0df3c8e0444cbf30a6ea2d3495b9f97da42153d6 100644
--- a/src/plugins/projectexplorer/editorsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/editorsettingspropertiespage.cpp
@@ -42,14 +42,15 @@ bool EditorSettingsPanelFactory::supports(Project * /*project*/)
 {
     return true;
 }
-PropertiesPanel *EditorSettingsPanelFactory::createPanel(Project *project)
+
+IPropertiesPanel *EditorSettingsPanelFactory::createPanel(Project *project)
 {
     return new EditorSettingsPanel(project);
 }
 
-EditorSettingsPanel::EditorSettingsPanel(Project *project)
-    : PropertiesPanel(),
-      m_widget(new EditorSettingsWidget(project))
+EditorSettingsPanel::EditorSettingsPanel(Project *project) :
+    m_widget(new EditorSettingsWidget(project)),
+    m_icon(":/projectexplorer/images/rebuild.png")
 {
 }
 
@@ -60,14 +61,19 @@ EditorSettingsPanel::~EditorSettingsPanel()
 
 QString EditorSettingsPanel::name() const
 {
-    return tr("Editor Settings");
+    return QApplication::tr("Editor Settings");
 }
 
-QWidget *EditorSettingsPanel::widget()
+QWidget *EditorSettingsPanel::widget() const
 {
     return m_widget;
 }
 
+QIcon EditorSettingsPanel::icon() const
+{
+    return m_icon;
+}
+
 EditorSettingsWidget::EditorSettingsWidget(Project *project)
     : QWidget(),
       m_project(project)
diff --git a/src/plugins/projectexplorer/editorsettingspropertiespage.h b/src/plugins/projectexplorer/editorsettingspropertiespage.h
index 0988f87e37ca00bc676e093956a385df40e2a88a..dfe497439eeb17b83b60aa64a80546eb78e93d50 100644
--- a/src/plugins/projectexplorer/editorsettingspropertiespage.h
+++ b/src/plugins/projectexplorer/editorsettingspropertiespage.h
@@ -41,22 +41,23 @@ class EditorSettingsPanelFactory : public IPanelFactory
 {
 public:
     bool supports(Project *project);
-    PropertiesPanel *createPanel(Project *project);
+    IPropertiesPanel *createPanel(Project *project);
 };
 
 class EditorSettingsWidget;
 
-class EditorSettingsPanel : public PropertiesPanel
+class EditorSettingsPanel : public IPropertiesPanel
 {
-    Q_OBJECT
 public:
     EditorSettingsPanel(Project *project);
     ~EditorSettingsPanel();
     QString name() const;
-    QWidget *widget();
+    QWidget *widget() const;
+    QIcon icon() const;
 
 private:
     EditorSettingsWidget *m_widget;
+    const QIcon m_icon;
 };
 
 class EditorSettingsWidget : public QWidget
diff --git a/src/plugins/projectexplorer/iprojectproperties.h b/src/plugins/projectexplorer/iprojectproperties.h
index 8f15bd34750c33369290928ea371251f12550cf0..1311a60293a5685b1d5fe6e4c6e88f468238ef76 100644
--- a/src/plugins/projectexplorer/iprojectproperties.h
+++ b/src/plugins/projectexplorer/iprojectproperties.h
@@ -32,29 +32,30 @@
 
 #include "projectexplorer_export.h"
 
-#include <coreplugin/icontext.h>
+#include <QtGui/QIcon>
 
 namespace ProjectExplorer {
 class Project;
-class PropertiesPanel;
 
-class PROJECTEXPLORER_EXPORT IPanelFactory : public QObject
+class PROJECTEXPLORER_EXPORT IPropertiesPanel
 {
-    Q_OBJECT
 public:
-    virtual bool supports(Project *project) = 0;
-    virtual PropertiesPanel *createPanel(Project *project) = 0;
+    IPropertiesPanel()
+    { }
+    virtual ~IPropertiesPanel()
+    { }
+
+    virtual QString name() const = 0;
+    virtual QIcon icon() const = 0;
+    virtual QWidget *widget() const = 0;
 };
 
-class PROJECTEXPLORER_EXPORT PropertiesPanel : public Core::IContext
+class PROJECTEXPLORER_EXPORT IPanelFactory : public QObject
 {
     Q_OBJECT
 public:
-    virtual void finish() {}
-    virtual QString name() const = 0;
-
-    // IContext
-    virtual QList<int> context() const { return QList<int>(); }
+    virtual bool supports(Project *project) = 0;
+    virtual IPropertiesPanel *createPanel(Project *project) = 0;
 };
 
 } // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp
index aee9b15073264cf90426ab1dec22ab70d3c9fbd1..f319864d124e11a6ca211aef17ef6e3d47e3fc7a 100644
--- a/src/plugins/projectexplorer/projectwindow.cpp
+++ b/src/plugins/projectexplorer/projectwindow.cpp
@@ -258,7 +258,6 @@ RunConfigurationComboBox::RunConfigurationComboBox(QWidget *parent)
         connectToProject(p);
     }
 
-
     connect(session, SIGNAL(startupProjectChanged(ProjectExplorer::Project*)),
             this, SLOT(activeRunConfigurationChanged()));
 
@@ -556,7 +555,6 @@ void ProjectLabel::setProject(ProjectExplorer::Project *p)
         setText(tr("No Project loaded"));
 }
 
-
 ///
 // ProjectPushButton
 ///
@@ -745,9 +743,6 @@ void ProjectWindow::saveStatus()
 
 void ProjectWindow::showProperties(Project *project)
 {
-    if (debug)
-        qDebug() << "ProjectWindow - showProperties called";
-
     // Remove all existing panels:
     m_panelsWidget->clear();
 
@@ -755,7 +750,7 @@ void ProjectWindow::showProperties(Project *project)
     qDeleteAll(m_panels);
     m_panels.clear();
 
-    // Set up our default panels again:
+    // Set up our default panels:
     m_panelsWidget->addWidget(tr("Active Build and Run Configurations"), m_activeConfigurationWidget);
     m_panelsWidget->addWidget(m_spacerBetween);
     m_panelsWidget->addWidget(m_projectChooser);
@@ -766,9 +761,7 @@ void ProjectWindow::showProperties(Project *project)
                 ExtensionSystem::PluginManager::instance()->getObjects<IPanelFactory>();
         foreach (IPanelFactory *panelFactory, pages) {
             if (panelFactory->supports(project)) {
-                PropertiesPanel *panel = panelFactory->createPanel(project);
-                if (debug)
-                  qDebug() << "ProjectWindow - setting up project properties tab " << panel->name();
+                IPropertiesPanel *panel = panelFactory->createPanel(project);
                 m_panelsWidget->addWidget(panel->name(), panel->widget());
                 m_panels.push_back(panel);
             }
diff --git a/src/plugins/projectexplorer/projectwindow.h b/src/plugins/projectexplorer/projectwindow.h
index ed7200bcb6b53c6a096f2e59b8c1a2d4477d3789..d228f7757f85a2b4f2e643f24fd636da218fa3f6 100644
--- a/src/plugins/projectexplorer/projectwindow.h
+++ b/src/plugins/projectexplorer/projectwindow.h
@@ -52,8 +52,8 @@ QT_END_NAMESPACE
 
 namespace ProjectExplorer {
 
+class IPropertiesPanel;
 class Project;
-class PropertiesPanel;
 class ProjectExplorerPlugin;
 class SessionManager;
 
@@ -195,7 +195,7 @@ private:
     QWidget *m_projectChooser;
     QLabel *m_noprojectLabel;
     PanelsWidget *m_panelsWidget;
-    QList<PropertiesPanel *> m_panels;
+    QList<IPropertiesPanel *> m_panels;
 };
 
 
diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp
index e49a59fb1df3664a8cf5041d67e6daa0689c4fbb..ccccca85dd9a5c11753dbcc2b6bae44bd656b3f4 100644
--- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp
@@ -94,7 +94,7 @@ bool RunSettingsPanelFactory::supports(Project * /* project */)
     return true;
 }
 
-PropertiesPanel *RunSettingsPanelFactory::createPanel(Project *project)
+IPropertiesPanel *RunSettingsPanelFactory::createPanel(Project *project)
 {
     return new RunSettingsPanel(project);
 }
@@ -103,9 +103,9 @@ PropertiesPanel *RunSettingsPanelFactory::createPanel(Project *project)
 /// RunSettingsPanel
 ///
 
-RunSettingsPanel::RunSettingsPanel(Project *project)
-   : PropertiesPanel(),
-     m_widget(new RunSettingsWidget(project))
+RunSettingsPanel::RunSettingsPanel(Project *project) :
+     m_widget(new RunSettingsWidget(project)),
+     m_icon(":/projectexplorer/images/run.png")
 {
 }
 
@@ -116,14 +116,19 @@ RunSettingsPanel::~RunSettingsPanel()
 
 QString RunSettingsPanel::name() const
 {
-    return tr("Run Settings");
+    return QApplication::tr("Run Settings");
 }
 
-QWidget *RunSettingsPanel::widget()
+QWidget *RunSettingsPanel::widget() const
 {
     return m_widget;
 }
 
+QIcon RunSettingsPanel::icon() const
+{
+    return m_icon;
+}
+
 ///
 /// RunConfigurationsModel
 ///
diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.h b/src/plugins/projectexplorer/runsettingspropertiespage.h
index ed497f776deb9697b50fedacfe856858998790df..b53fbd6101bb47d3c9341396102545475bdcafce 100644
--- a/src/plugins/projectexplorer/runsettingspropertiespage.h
+++ b/src/plugins/projectexplorer/runsettingspropertiespage.h
@@ -53,20 +53,22 @@ class RunSettingsPanelFactory : public IPanelFactory
 {
 public:
     virtual bool supports(Project *project);
-    PropertiesPanel *createPanel(Project *project);
+    IPropertiesPanel *createPanel(Project *project);
 };
 
-class RunSettingsPanel : public PropertiesPanel
+class RunSettingsPanel : public IPropertiesPanel
 {
-    Q_OBJECT
 public:
     RunSettingsPanel(Project *project);
     ~RunSettingsPanel();
 
     QString name() const;
-    QWidget *widget();
+    QWidget *widget() const;
+    QIcon icon() const;
+
 private:
     RunSettingsWidget *m_widget;
+    QIcon m_icon;
 };
 
 class RunSettingsWidget : public QWidget
diff --git a/src/plugins/qt4projectmanager/embeddedpropertiespage.cpp b/src/plugins/qt4projectmanager/embeddedpropertiespage.cpp
index 2abc74ae3ddce75a8fa5832e7398da726f30db61..2fa903fe3ab799ac8a97916d26af92b2f38beae9 100644
--- a/src/plugins/qt4projectmanager/embeddedpropertiespage.cpp
+++ b/src/plugins/qt4projectmanager/embeddedpropertiespage.cpp
@@ -54,7 +54,7 @@ bool EmbeddedPropertiesPanelFactory::supports(Project *project)
     return false;
 }
 
-ProjectExplorer::PropertiesPanel *EmbeddedPropertiesPanelFactory::createPanel(
+ProjectExplorer::IPropertiesPanel *EmbeddedPropertiesPanelFactory::createPanel(
         ProjectExplorer::Project *project)
 {
     return new EmbeddedPropertiesPanel(project);
@@ -64,9 +64,9 @@ ProjectExplorer::PropertiesPanel *EmbeddedPropertiesPanelFactory::createPanel(
 /// EmbeddedPropertiesPanel
 ///
 
-EmbeddedPropertiesPanel::EmbeddedPropertiesPanel(ProjectExplorer::Project *project)
-    : PropertiesPanel(),
-      m_widget(new EmbeddedPropertiesWidget(project))
+EmbeddedPropertiesPanel::EmbeddedPropertiesPanel(ProjectExplorer::Project *project) :
+    m_widget(new EmbeddedPropertiesWidget(project)),
+    m_icon(":/projectexplorer/images/rebuild.png")
 {
 }
 
@@ -77,15 +77,19 @@ EmbeddedPropertiesPanel::~EmbeddedPropertiesPanel()
 
 QString EmbeddedPropertiesPanel::name() const
 {
-    return tr("Embedded Linux");
-
+    return QApplication::tr("Embedded Linux");
 }
 
-QWidget *EmbeddedPropertiesPanel::widget()
+QWidget *EmbeddedPropertiesPanel::widget() const
 {
     return m_widget;
 }
 
+QIcon EmbeddedPropertiesPanel::icon() const
+{
+    return m_icon;
+}
+
 ///
 /// EmbeddedPropertiesWidget
 ///
diff --git a/src/plugins/qt4projectmanager/embeddedpropertiespage.h b/src/plugins/qt4projectmanager/embeddedpropertiespage.h
index cd35fa50082d24da1f2e7664c46876bbdff89704..06342974c00501b4543bd21a28b8eb9bb67e9978 100644
--- a/src/plugins/qt4projectmanager/embeddedpropertiespage.h
+++ b/src/plugins/qt4projectmanager/embeddedpropertiespage.h
@@ -50,21 +50,22 @@ class EmbeddedPropertiesPanelFactory : public ProjectExplorer::IPanelFactory
 {
 public:
     virtual bool supports(ProjectExplorer::Project *project);
-    ProjectExplorer::PropertiesPanel *createPanel(ProjectExplorer::Project *project);
+    ProjectExplorer::IPropertiesPanel *createPanel(ProjectExplorer::Project *project);
 };
 
-class EmbeddedPropertiesPanel : public ProjectExplorer::PropertiesPanel
+class EmbeddedPropertiesPanel : public ProjectExplorer::IPropertiesPanel
 {
-    Q_OBJECT
 public:
     EmbeddedPropertiesPanel(ProjectExplorer::Project *project);
     ~EmbeddedPropertiesPanel();
 
     QString name() const;
-    QWidget *widget();
+    QWidget *widget() const;
+    QIcon icon() const;
 
 private:
     EmbeddedPropertiesWidget *m_widget;
+    QIcon m_icon;
 };
 
 class EmbeddedPropertiesWidget : public QWidget