diff --git a/src/plugins/qt4projectmanager/projectloadwizard.cpp b/src/plugins/qt4projectmanager/projectloadwizard.cpp
index cc5f95af29324e37af9954610212cccbd62e1711..175a7f6824977e34e051bbf94393a3bf474065fc 100644
--- a/src/plugins/qt4projectmanager/projectloadwizard.cpp
+++ b/src/plugins/qt4projectmanager/projectloadwizard.cpp
@@ -30,13 +30,12 @@
 #include "projectloadwizard.h"
 
 #include "qt4project.h"
-#include "qt4projectmanager.h"
 #include "qmakestep.h"
 #include "qt4target.h"
 #include "makestep.h"
 #include "qt4buildconfiguration.h"
 
-#include <extensionsystem/pluginmanager.h>
+#include "wizards/targetspage.h"
 
 #include <QtGui/QCheckBox>
 #include <QtGui/QHeaderView>
@@ -48,7 +47,8 @@ using namespace Qt4ProjectManager;
 using namespace Qt4ProjectManager::Internal;
 
 ProjectLoadWizard::ProjectLoadWizard(Qt4Project *project, QWidget *parent, Qt::WindowFlags flags)
-    : QWizard(parent, flags), m_project(project), m_importVersion(0), m_temporaryVersion(false)
+    : QWizard(parent, flags), m_project(project), m_importVersion(0), m_temporaryVersion(false),
+      m_targetsPage(0)
 {
     setWindowTitle(tr("Import existing build settings"));
     QtVersionManager * vm = QtVersionManager::instance();
@@ -88,8 +88,16 @@ ProjectLoadWizard::ProjectLoadWizard(Qt4Project *project, QWidget *parent, Qt::W
     // The default buildConfiguration depends on QmakeBuildConfig::DebugBuild
     // Also if the qt version is not yet in the Tools Options dialog we offer to add it there
 
+    QList<QtVersion *> validVersions;
+    foreach (QtVersion * v, vm->versions()) {
+        if (v->isValid())
+            validVersions.append(v);
+    }
+
     if (m_importVersion)
         setupImportPage(m_importVersion, m_importBuildConfig, m_additionalArguments);
+    else if (validVersions.count() > 1)
+        setupTargetsPage();
 
     setOptions(options() | QWizard::NoCancelButton | QWizard::NoBackButtonOnLastPage);
 }
@@ -98,7 +106,7 @@ ProjectLoadWizard::ProjectLoadWizard(Qt4Project *project, QWidget *parent, Qt::W
 // We used to simply call ::exec() on the dialog
 void ProjectLoadWizard::execDialog()
 {
-    if (m_importVersion)
+    if (!pageIds().isEmpty())
         exec();
     else
         done(QDialog::Accepted);
@@ -106,7 +114,6 @@ void ProjectLoadWizard::execDialog()
 
 ProjectLoadWizard::~ProjectLoadWizard()
 {
-
 }
 
 void ProjectLoadWizard::done(int result)
@@ -132,32 +139,39 @@ void ProjectLoadWizard::done(int result)
         }
         if (m_project->targets().isEmpty())
             qWarning() << "Failed to populate project with default targets for imported Qt" << m_importVersion->displayName();
-    } else {
-        // Not importing
-        if (m_temporaryVersion)
-            delete m_importVersion;
-
-        // Find a Qt version:
-        QList<QtVersion *> candidates = vm->versions();
-        QtVersion *defaultVersion = candidates.at(0); // always there and always valid!
-        // Check for the first valid desktop-Qt, fall back to any valid Qt if no desktop
-        // flavour is available.
-        foreach (QtVersion *v, candidates) {
-            if (v->isValid())
-                defaultVersion = v;
-            if (v->supportsTargetId(DESKTOP_TARGET_ID) && v->isValid())
-                break;
-        }
 
-        foreach (const QString &id, defaultVersion->supportedTargetIds()) {
-            Qt4Target *t(m_project->targetFactory()->create(m_project, id, QList<QtVersion *>() << defaultVersion));
-            if (!t)
-                continue;
-            m_project->addTarget(t);
-        }
-        if (m_project->targets().isEmpty())
-            qWarning() << "Failed to populate project with default targets for default Qt" << defaultVersion->displayName();
+        return;
     }
+
+    if (m_targetsPage) {
+        m_targetsPage->setupProject(m_project);
+        return;
+    }
+
+    // Not importing anything
+    if (m_temporaryVersion)
+        delete m_importVersion;
+
+    // Find a Qt version:
+    QList<QtVersion *> candidates = vm->versions();
+    QtVersion *defaultVersion = candidates.at(0); // always there and always valid!
+    // Check for the first valid desktop-Qt, fall back to any valid Qt if no desktop
+    // flavour is available.
+    foreach (QtVersion *v, candidates) {
+        if (v->isValid())
+            defaultVersion = v;
+        if (v->supportsTargetId(DESKTOP_TARGET_ID) && v->isValid())
+            break;
+    }
+
+    foreach (const QString &id, defaultVersion->supportedTargetIds()) {
+        Qt4Target *t(m_project->targetFactory()->create(m_project, id, QList<QtVersion *>() << defaultVersion));
+        if (!t)
+            continue;
+        m_project->addTarget(t);
+    }
+    if (m_project->targets().isEmpty())
+        qWarning() << "Failed to populate project with default targets for default Qt" << defaultVersion->displayName();
 }
 
 // This function used to do the commented stuff instead of having only one page
@@ -205,3 +219,12 @@ void ProjectLoadWizard::setupImportPage(QtVersion *version, QtVersion::QmakeBuil
     addPage(importPage);
 }
 
+void ProjectLoadWizard::setupTargetsPage()
+{
+    if (m_targetsPage)
+        return;
+
+    m_targetsPage = new TargetsPage(this);
+    addPage(m_targetsPage);
+}
+
diff --git a/src/plugins/qt4projectmanager/projectloadwizard.h b/src/plugins/qt4projectmanager/projectloadwizard.h
index d2c21a2f54158f5294c130b1c53a927353c2f31d..6c497097132b1d8ead2a59531273454094ba34a9 100644
--- a/src/plugins/qt4projectmanager/projectloadwizard.h
+++ b/src/plugins/qt4projectmanager/projectloadwizard.h
@@ -46,6 +46,8 @@ class Qt4Project;
 
 namespace Internal {
 
+class TargetsPage;
+
 class ProjectLoadWizard : public QWizard
 {
     Q_OBJECT
@@ -58,6 +60,7 @@ public:
 
 private:
     void setupImportPage(QtVersion *version, QtVersion::QmakeBuildConfigs buildConfig, QStringList addtionalArguments);
+    void setupTargetsPage();
 
     Qt4Project *m_project;
 
@@ -75,6 +78,7 @@ private:
     QLabel *importLabel;
     QLabel *import2Label;
     QCheckBox *importCheckbox;
+    TargetsPage *m_targetsPage;
 
     void setupUi();
 };
diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
index ce200c9cf82505c3775087b09fb9c45e3e6192bd..6b4d5615f74adfb077dca1bff1c504892a9f8cda 100644
--- a/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
+++ b/src/plugins/qt4projectmanager/wizards/qtwizard.cpp
@@ -30,7 +30,6 @@
 #include "qtwizard.h"
 
 #include "qt4project.h"
-#include "qt4projectmanager.h"
 #include "qt4projectmanagerconstants.h"
 #include "qt4target.h"
 #include "modulespage.h"
@@ -109,26 +108,7 @@ bool QtWizard::postGenerateFiles(const QWizard *w, const Core::GeneratedFiles &l
     const BaseQt4ProjectWizardDialog *dialog = qobject_cast<const BaseQt4ProjectWizardDialog *>(w);
 
     // Generate user settings:
-    QSet<QString> targets;
-    if (dialog)
-        targets = dialog->selectedTargets();
-    if (!targets.isEmpty()) {
-        Qt4Manager *manager = ExtensionSystem::PluginManager::instance()->getObject<Qt4Manager>();
-        Q_ASSERT(manager);
-        QtVersionManager *vm = QtVersionManager::instance();
-
-        Qt4Project *pro = new Qt4Project(manager, proFileName);
-        foreach (const QString &targetId, targets) {
-            QList<int> versionIds = dialog->selectedQtVersionIdsForTarget(targetId);
-            QList<QtVersion *> versions;
-            foreach (int id, versionIds)
-                versions.append(vm->version(id));
-            Qt4Target * target = pro->targetFactory()->create(pro, targetId, versions);
-            pro->addTarget(target);
-        }
-        pro->saveSettings();
-        delete pro;
-    }
+    dialog->writeUserFile(proFileName);
 
     // Post-Generate: Open the project
     if (!ProjectExplorer::ProjectExplorerPlugin::instance()->openProject(proFileName)) {
@@ -256,18 +236,18 @@ void BaseQt4ProjectWizardDialog::setDeselectedModules(const QString &modules)
     }
 }
 
-QSet<QString> BaseQt4ProjectWizardDialog::selectedTargets() const
+void BaseQt4ProjectWizardDialog::writeUserFile(const QString &proFileName) const
 {
-    if (!m_targetsPage)
-        return QSet<QString>();
-    return m_targetsPage->selectedTargets();
+    if (m_targetsPage)
+        m_targetsPage->writeUserFile(proFileName);
 }
 
-QList<int> BaseQt4ProjectWizardDialog::selectedQtVersionIdsForTarget(const QString &target) const
+QSet<QString> BaseQt4ProjectWizardDialog::selectedTargets() const
 {
-    if (!m_targetsPage)
-        return QList<int>();
-    return m_targetsPage->selectedVersionIdsForTarget(target);
+    QSet<QString> targets;
+    if (m_targetsPage)
+        targets = m_targetsPage->selectedTargets();
+    return targets;
 }
 
 QSet<QString> BaseQt4ProjectWizardDialog::desktopTarget()
diff --git a/src/plugins/qt4projectmanager/wizards/qtwizard.h b/src/plugins/qt4projectmanager/wizards/qtwizard.h
index 74e06d2f2fdfc01d166c43cf94e0d81ec0d08ea6..e305324a5af429dbd345d56ffb24f169858b1d24 100644
--- a/src/plugins/qt4projectmanager/wizards/qtwizard.h
+++ b/src/plugins/qt4projectmanager/wizards/qtwizard.h
@@ -114,8 +114,8 @@ public:
     QString deselectedModules() const;
     void setDeselectedModules(const QString &);
 
+    void writeUserFile(const QString &proFileName) const;
     QSet<QString> selectedTargets() const;
-    QList<int> selectedQtVersionIdsForTarget(const QString &target) const;
 
 private:
     inline void init(bool showModulesPage);
diff --git a/src/plugins/qt4projectmanager/wizards/targetspage.cpp b/src/plugins/qt4projectmanager/wizards/targetspage.cpp
index db12732ea72fc958e472902cca7fbeb3c36fa8d9..9c0021cbe5210a256874dbd80022fe769160b037 100644
--- a/src/plugins/qt4projectmanager/wizards/targetspage.cpp
+++ b/src/plugins/qt4projectmanager/wizards/targetspage.cpp
@@ -29,9 +29,13 @@
 
 #include "targetspage.h"
 
+#include "qt4projectmanager/qt4project.h"
+#include "qt4projectmanager/qt4projectmanager.h"
 #include "qt4projectmanager/qt4target.h"
 #include "qt4projectmanager/qtversionmanager.h"
 
+#include <extensionsystem/pluginmanager.h>
+
 #include <QtCore/QSet>
 #include <QtCore/QString>
 
@@ -134,14 +138,14 @@ QSet<QString> TargetsPage::selectedTargets() const
         QTreeWidgetItem * targetItem = m_treeWidget->topLevelItem(i);
         QString target = targetItem->data(0, Qt::UserRole).toString();
 
-        QList<int> versions = selectedVersionIdsForTarget(target);
+        QList<int> versions = selectedQtVersionIdsForTarget(target);
         if (!versions.isEmpty())
             result.insert(target);
     }
     return result;
 }
 
-QList<int> TargetsPage::selectedVersionIdsForTarget(const QString &t) const
+QList<int> TargetsPage::selectedQtVersionIdsForTarget(const QString &t) const
 {
     QList<int> result;
     for (int i = 0; i < m_treeWidget->topLevelItemCount(); ++i) {
@@ -186,3 +190,37 @@ bool TargetsPage::needToDisplayPage() const
     }
     return false;
 }
+
+void TargetsPage::writeUserFile(const QString &proFileName) const
+{
+    Qt4Manager *manager = ExtensionSystem::PluginManager::instance()->getObject<Qt4Manager>();
+    Q_ASSERT(manager);
+
+    Qt4Project *pro = new Qt4Project(manager, proFileName);
+    if (setupProject(pro))
+        pro->saveSettings();
+    delete pro;
+}
+
+bool TargetsPage::setupProject(Qt4ProjectManager::Qt4Project *project) const
+{
+    if (!project)
+        return false;
+
+    // Generate user settings:
+    QSet<QString> targets = selectedTargets();
+    if (targets.isEmpty())
+        return false;
+
+    QtVersionManager *vm = QtVersionManager::instance();
+
+    foreach (const QString &targetId, targets) {
+        QList<int> versionIds = selectedQtVersionIdsForTarget(targetId);
+        QList<QtVersion *> versions;
+        foreach (int id, versionIds)
+            versions.append(vm->version(id));
+        Qt4Target * target = project->targetFactory()->create(project, targetId, versions);
+        project->addTarget(target);
+    }
+    return true;
+}
diff --git a/src/plugins/qt4projectmanager/wizards/targetspage.h b/src/plugins/qt4projectmanager/wizards/targetspage.h
index 0051eeaa8bfd8487656a1420b2a5f5c4a667dcec..b838f00c6b0eae3729df19133ddffe8f07b8ebae 100644
--- a/src/plugins/qt4projectmanager/wizards/targetspage.h
+++ b/src/plugins/qt4projectmanager/wizards/targetspage.h
@@ -41,6 +41,8 @@ class QTreeWidget;
 QT_END_NAMESPACE
 
 namespace Qt4ProjectManager {
+class Qt4Project;
+
 namespace Internal {
 
 class TargetsPage : public QWizardPage
@@ -53,12 +55,15 @@ public:
     void setValidTargets(const QSet<QString> &targets);
 
     QSet<QString> selectedTargets() const;
-    QList<int> selectedVersionIdsForTarget(const QString &) const;
+    QList<int> selectedQtVersionIdsForTarget(const QString &) const;
 
     bool isComplete() const;
 
     bool needToDisplayPage() const;
 
+    void writeUserFile(const QString &proFileName) const;
+    bool setupProject(Qt4Project *project) const;
+
 private slots:
     void itemWasClicked();