diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index d3fd611623394434c6ada569e86552cfb6fca99d..34c2216138b5391c0c97bea5ed1b44704563c8eb 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -184,8 +184,7 @@ struct ProjectExplorerPluginPrivate {
     QString m_projectFilterString;
     Internal::MiniProjectTargetSelector * m_targetSelector;
     Internal::ProjectExplorerSettings m_projectExplorerSettings;
-    Internal::ProjectWelcomePage *m_welcomePlugin;
-    Internal::ProjectWelcomePageWidget *m_welcomePage;
+    Internal::ProjectWelcomePage *m_welcomePage;
 
     Core::BaseMode * m_projectsMode;
 };
@@ -217,8 +216,8 @@ ProjectExplorerPlugin::ProjectExplorerPlugin()
 
 ProjectExplorerPlugin::~ProjectExplorerPlugin()
 {
-    removeObject(d->m_welcomePlugin);
-    delete d->m_welcomePlugin;
+    removeObject(d->m_welcomePage);
+    delete d->m_welcomePage;
     removeObject(this);
     delete d;
 }
@@ -242,11 +241,9 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
     Core::ICore *core = Core::ICore::instance();
     Core::ActionManager *am = core->actionManager();
 
-    d->m_welcomePlugin = new ProjectWelcomePage;
-    d->m_welcomePage = qobject_cast<Internal::ProjectWelcomePageWidget*>(d->m_welcomePlugin->page());
-    Q_ASSERT(d->m_welcomePage);
+    d->m_welcomePage = new ProjectWelcomePage;
     connect(d->m_welcomePage, SIGNAL(manageSessions()), this, SLOT(showSessionManager()));
-    addObject(d->m_welcomePlugin);
+    addObject(d->m_welcomePage);
     addObject(this);
 
     connect(core->fileManager(), SIGNAL(currentFileChanged(QString)),
@@ -1127,7 +1124,6 @@ Project *ProjectExplorerPlugin::startupProject() const
     return pro;
 }
 
-// update welcome page
 void ProjectExplorerPlugin::updateWelcomePage()
 {
     ProjectWelcomePageWidget::WelcomePageData welcomePageData;
@@ -1135,16 +1131,15 @@ void ProjectExplorerPlugin::updateWelcomePage()
     welcomePageData.activeSession = d->m_session->activeSession();
     welcomePageData.previousSession = d->m_session->lastSession();
     welcomePageData.projectList = d->m_recentProjects;
-    d->m_welcomePage->updateWelcomePage(welcomePageData);
+    d->m_welcomePage->setWelcomePageData(welcomePageData);
 }
 
 void ProjectExplorerPlugin::currentModeChanged(Core::IMode *mode, Core::IMode *oldMode)
 {
     if (mode && mode->id() == QLatin1String(Core::Constants::MODE_WELCOME))
         updateWelcomePage();
-    if (oldMode == d->m_projectsMode) {
+    if (oldMode == d->m_projectsMode)
         savePersistentSettings();
-    }
 }
 
 void ProjectExplorerPlugin::determineSessionToRestoreAtStartup()
diff --git a/src/plugins/projectexplorer/projectwelcomepage.cpp b/src/plugins/projectexplorer/projectwelcomepage.cpp
index c922592151096eadfd02c256763dc7bd023dc8cc..a31ad5c5364bd1516b3a884b17098509da285457 100644
--- a/src/plugins/projectexplorer/projectwelcomepage.cpp
+++ b/src/plugins/projectexplorer/projectwelcomepage.cpp
@@ -34,19 +34,31 @@ namespace ProjectExplorer {
 namespace Internal {
 
 ProjectWelcomePage::ProjectWelcomePage()
- : m_page(new ProjectWelcomePageWidget)
+    : m_page(0)
 {
-
 }
 
-ProjectWelcomePage::~ProjectWelcomePage()
+QWidget *ProjectWelcomePage::page()
 {
+    if (!m_page) {
+        m_page = new ProjectWelcomePageWidget;
+
+        // Forward signals
+        connect(m_page, SIGNAL(requestProject(QString)), this, SIGNAL(requestProject(QString)));
+        connect(m_page, SIGNAL(requestSession(QString)), this, SIGNAL(requestSession(QString)));
+        connect(m_page, SIGNAL(manageSessions()), this, SIGNAL(manageSessions()));
 
+        m_page->updateWelcomePage(m_welcomePageData);
+    }
+    return m_page;
 }
 
-QWidget* ProjectWelcomePage::page()
+void ProjectWelcomePage::setWelcomePageData(const ProjectWelcomePageWidget::WelcomePageData &welcomePageData)
 {
-    return m_page;
+    m_welcomePageData = welcomePageData;
+
+    if (m_page)
+        m_page->updateWelcomePage(welcomePageData);
 }
 
 } // namespace Internal
diff --git a/src/plugins/projectexplorer/projectwelcomepage.h b/src/plugins/projectexplorer/projectwelcomepage.h
index 16e1fb3dd14be141443fb317b7a223345724cc0e..f809c0882cafb99c16de76713c56c79942986717 100644
--- a/src/plugins/projectexplorer/projectwelcomepage.h
+++ b/src/plugins/projectexplorer/projectwelcomepage.h
@@ -32,25 +32,31 @@
 
 #include <utils/iwelcomepage.h>
 
+#include "projectwelcomepagewidget.h"
+
 namespace ProjectExplorer {
 namespace Internal {
 
-class ProjectWelcomePageWidget;
-
 class ProjectWelcomePage : public Utils::IWelcomePage
 {
     Q_OBJECT
 public:
     ProjectWelcomePage();
-    ~ProjectWelcomePage();
 
     QWidget *page();
     QString title() const { return tr("Develop"); }
     int priority() const { return 20; }
-private:
-    ProjectWelcomePageWidget *m_page;
 
+    void setWelcomePageData(const ProjectWelcomePageWidget::WelcomePageData &welcomePageData);
 
+signals:
+    void requestProject(const QString &project);
+    void requestSession(const QString &session);
+    void manageSessions();
+
+private:
+    ProjectWelcomePageWidget *m_page;
+    ProjectWelcomePageWidget::WelcomePageData m_welcomePageData;
 };
 
 } // namespace Internal
diff --git a/src/plugins/projectexplorer/projectwelcomepagewidget.cpp b/src/plugins/projectexplorer/projectwelcomepagewidget.cpp
index 1c3da1d348ca0a078a40cecb403ee71ceea19484..f1332e03cbb2090eb245fb7238d8e46c07b27a71 100644
--- a/src/plugins/projectexplorer/projectwelcomepagewidget.cpp
+++ b/src/plugins/projectexplorer/projectwelcomepagewidget.cpp
@@ -84,7 +84,6 @@ ProjectWelcomePageWidget::ProjectWelcomePageWidget(QWidget *parent) :
     connect(ui->projTreeWidget, SIGNAL(activated(QString)), SLOT(slotProjectClicked(QString)));
     connect(ui->createNewProjectButton, SIGNAL(clicked()), SLOT(slotCreateNewProject()));
     connect(ui->manageSessionsButton, SIGNAL(clicked()), SIGNAL(manageSessions()));
-
 }
 
 ProjectWelcomePageWidget::~ProjectWelcomePageWidget()
diff --git a/src/plugins/projectexplorer/projectwelcomepagewidget.h b/src/plugins/projectexplorer/projectwelcomepagewidget.h
index b47b72430df0b74fdc35e15a446584d2cd87c66b..67e4d082427a163d83a63c03069cb47f66731e5a 100644
--- a/src/plugins/projectexplorer/projectwelcomepagewidget.h
+++ b/src/plugins/projectexplorer/projectwelcomepagewidget.h
@@ -34,20 +34,21 @@
 
 
 namespace ProjectExplorer {
-    namespace Internal {
+namespace Internal {
 
 
 namespace Ui {
     class ProjectWelcomePageWidget;
 }
 
-class ProjectWelcomePageWidget : public QWidget {
+class ProjectWelcomePageWidget : public QWidget
+{
     Q_OBJECT
 public:
     ProjectWelcomePageWidget(QWidget *parent = 0);
     ~ProjectWelcomePageWidget();
 
-    struct WelcomePageData{
+    struct WelcomePageData {
         bool operator==(const WelcomePageData &rhs) const;
         bool operator!=(const WelcomePageData &rhs) const;
 
@@ -75,7 +76,7 @@ private:
     WelcomePageData lastData;
 };
 
-}
-}
+} // namespace Internal
+} // namespace ProjectExplorer
 
 #endif // PROJECTWELCOMEPAGEWIDGET_H
diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepage.cpp b/src/plugins/qt4projectmanager/gettingstartedwelcomepage.cpp
index 1083d3373251b6ba1a0b32e9b5977edac1ae072b..d5beb69eb6dfd0f38353275fe92b416c58cecdf3 100644
--- a/src/plugins/qt4projectmanager/gettingstartedwelcomepage.cpp
+++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepage.cpp
@@ -34,14 +34,24 @@ namespace Qt4ProjectManager {
 namespace Internal {
 
 GettingStartedWelcomePage::GettingStartedWelcomePage()
-        : m_page(new GettingStartedWelcomePageWidget)
+    : m_page(0)
 {
 }
 
-QWidget* GettingStartedWelcomePage::page()
+QWidget *GettingStartedWelcomePage::page()
 {
+    if (!m_page)
+        m_page = new GettingStartedWelcomePageWidget;
     return m_page;
 }
 
+void GettingStartedWelcomePage::updateExamples(const QString &examplePath,
+                                               const QString &demosPath,
+                                               const QString &sourcePath)
+{
+    if (m_page)
+        m_page->updateExamples(examplePath, demosPath, sourcePath);
+}
+
 } // namespace Internal
 } // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepage.h b/src/plugins/qt4projectmanager/gettingstartedwelcomepage.h
index ea0efcccf901c3d3e8a9fbdf5428ca4c391d0d9f..cf3c14f364473fc8d5d88d6b6168364dde9a4625 100644
--- a/src/plugins/qt4projectmanager/gettingstartedwelcomepage.h
+++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepage.h
@@ -47,6 +47,11 @@ public:
     QString title() const { return tr("Getting Started");}
     int priority() const { return 10; }
 
+public slots:
+    void updateExamples(const QString &examplePath,
+                        const QString &demosPath,
+                        const QString &sourcePath);
+
 private:
     GettingStartedWelcomePageWidget *m_page;
 };
diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp
index 1055262ec9ea4cc1d83f6d88ca50c6aef3569a99..80ffdc4fc830f9e449ea25ec60560a4ea3f8303f 100644
--- a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp
+++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.cpp
@@ -99,7 +99,9 @@ GettingStartedWelcomePageWidget::~GettingStartedWelcomePageWidget()
     delete ui;
 }
 
-void GettingStartedWelcomePageWidget::updateExamples(const QString& examplePath, const QString& demosPath, const QString &sourcePath)
+void GettingStartedWelcomePageWidget::updateExamples(const QString &examplePath,
+                                                     const QString &demosPath,
+                                                     const QString &sourcePath)
 {
     QString demoxml = demosPath + "/qtdemo/xml/examples.xml";
     if (!QFile::exists(demoxml)) {
diff --git a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.h b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.h
index f5145f7f02676d391fd0bbc5bd3fd889595d1e34..21cceb1cc8b3608a40040a58c4c355c0c2d55efb 100644
--- a/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.h
+++ b/src/plugins/qt4projectmanager/gettingstartedwelcomepagewidget.h
@@ -39,18 +39,21 @@ namespace Ui {
     class GettingStartedWelcomePageWidget;
 }
 
-class GettingStartedWelcomePageWidget : public QWidget {
+class GettingStartedWelcomePageWidget : public QWidget
+{
     Q_OBJECT
 public:
     GettingStartedWelcomePageWidget(QWidget *parent = 0);
     ~GettingStartedWelcomePageWidget();
 
- public slots:
-    void updateExamples(const QString& examplePath, const QString& demosPath, const QString &sourcePath);
+public slots:
+    void updateExamples(const QString &examplePath,
+                        const QString &demosPath,
+                        const QString &sourcePath);
 
 private slots:
-    void slotOpenHelpPage(const QString& url);
-    void slotOpenContextHelpPage(const QString& url);
+    void slotOpenHelpPage(const QString &url);
+    void slotOpenContextHelpPage(const QString &url);
     void slotEnableExampleButton(int);
     void slotOpenExample();
     void slotNextTip();
@@ -63,7 +66,7 @@ private:
     int m_currentTip;
 };
 
-
 } // namespace Internal
 } // namespace Qt4ProjectManager
+
 #endif // GETTINGSTARTEDWELCOMEPAGEWIDGET_H
diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp
index a3b8b4c5a1bf0e1f68aa1ab3588bf94150b9221d..ad9c6e4fff3b15cb5fd2cc67e9af192b90cf9b9e 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp
@@ -47,7 +47,6 @@
 #include "qtoptionspage.h"
 #include "externaleditors.h"
 #include "gettingstartedwelcomepage.h"
-#include "gettingstartedwelcomepagewidget.h"
 
 #include "qt-maemo/maemomanager.h"
 #include "qt-s60/s60manager.h"
@@ -103,16 +102,14 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString *
     m_projectExplorer = ProjectExplorer::ProjectExplorerPlugin::instance();
     Core::ActionManager *am = core->actionManager();
 
-    QtVersionManager *mgr = new QtVersionManager();
+    QtVersionManager *mgr = new QtVersionManager;
     addAutoReleasedObject(mgr);
-    addAutoReleasedObject(new QtOptionsPage());
+    addAutoReleasedObject(new QtOptionsPage);
 
     m_welcomePage = new GettingStartedWelcomePage;
     addObject(m_welcomePage);
-    GettingStartedWelcomePageWidget *gswp =
-            static_cast<GettingStartedWelcomePageWidget*>(m_welcomePage->page());
     connect(mgr, SIGNAL(updateExamples(QString,QString,QString)),
-            gswp, SLOT(updateExamples(QString,QString,QString)));
+            m_welcomePage, SLOT(updateExamples(QString,QString,QString)));
 
     //create and register objects
     m_qt4ProjectManager = new Qt4Manager(this);
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index cbbf08b3709005702ecba8fb03a016a2a198c4cd..ba3183fe417571081603aee34822ac8046348aca 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -227,7 +227,6 @@ void QtVersionManager::updateExamples()
     versions.append(m_versions);
 
     QString examplesPath;
-    QString docPath;
     QString demosPath;
     QtVersion *version = 0;
     // try to find a version which has both, demos and examples
diff --git a/src/plugins/welcome/communitywelcomepage.cpp b/src/plugins/welcome/communitywelcomepage.cpp
index 8d86de77e939d8dde3874f4e391e5b82b4b8b288..e53d03b6d877eb3d5b60d779e462d05b206625c5 100644
--- a/src/plugins/welcome/communitywelcomepage.cpp
+++ b/src/plugins/welcome/communitywelcomepage.cpp
@@ -35,12 +35,14 @@ namespace Welcome {
 namespace Internal {
 
 CommunityWelcomePage::CommunityWelcomePage()
-        : m_page(new CommunityWelcomePageWidget)
+    : m_page(0)
 {
 }
 
-QWidget* CommunityWelcomePage::page()
+QWidget *CommunityWelcomePage::page()
 {
+    if (!m_page)
+        m_page = new CommunityWelcomePageWidget;
     return m_page;
 }
 
diff --git a/src/plugins/welcome/communitywelcomepage.h b/src/plugins/welcome/communitywelcomepage.h
index 8f4afb1a4797401ac36de2ffcfc97b76078d3173..ab0cb8b8f57c05633c533c03597522917dd01ca3 100644
--- a/src/plugins/welcome/communitywelcomepage.h
+++ b/src/plugins/welcome/communitywelcomepage.h
@@ -51,7 +51,6 @@ public:
 
 private:
     CommunityWelcomePageWidget *m_page;
-
 };
 
 } // namespace Internal
diff --git a/src/plugins/welcome/welcomemode.cpp b/src/plugins/welcome/welcomemode.cpp
index 0ad4d14dc966a2d438b7b89ffffe7245783f1b19..3831ea9e2a49bfa606fb30c2a605086dab7f4eca 100644
--- a/src/plugins/welcome/welcomemode.cpp
+++ b/src/plugins/welcome/welcomemode.cpp
@@ -156,8 +156,8 @@ void WelcomeMode::initPlugins()
     delete m_d->ui.stackedWidget->currentWidget();
     QList<IWelcomePage*> plugins = PluginManager::instance()->getObjects<IWelcomePage>();
     qSort(plugins.begin(), plugins.end(), &sortFunction);
-    foreach (IWelcomePage* plugin, plugins) {
-        QToolButton * btn = new QToolButton;
+    foreach (IWelcomePage *plugin, plugins) {
+        QToolButton *btn = new QToolButton;
         btn->setCheckable(true);
         btn->setText(plugin->title());
         btn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);