diff --git a/src/plugins/autotoolsprojectmanager/autotoolstarget.cpp b/src/plugins/autotoolsprojectmanager/autotoolstarget.cpp
index ea93603cb2395bf2813def2db65a3b441229be18..1ed7d5de700cf82e2cb8ba67716afa24a0b40775 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolstarget.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolstarget.cpp
@@ -118,10 +118,8 @@ bool AutotoolsTargetFactory::supportsTargetId(const QString &id) const
     return id == QLatin1String(Constants::DEFAULT_AUTOTOOLS_TARGET_ID);
 }
 
-QStringList AutotoolsTargetFactory::supportedTargetIds(Project *parent) const
+QStringList AutotoolsTargetFactory::supportedTargetIds() const
 {
-    if (!qobject_cast<AutotoolsProject *>(parent))
-        return QStringList();
     return QStringList() << QLatin1String(Constants::DEFAULT_AUTOTOOLS_TARGET_ID);
 }
 
diff --git a/src/plugins/autotoolsprojectmanager/autotoolstarget.h b/src/plugins/autotoolsprojectmanager/autotoolstarget.h
index 636a0983180b287f9b0f1303bf1e5982302fe1e9..55aa55fc844283976b6a7d5e882bedd98ced327c 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolstarget.h
+++ b/src/plugins/autotoolsprojectmanager/autotoolstarget.h
@@ -84,7 +84,7 @@ public:
 
     bool supportsTargetId(const QString &id) const;
 
-    QStringList supportedTargetIds(ProjectExplorer::Project *parent) const;
+    QStringList supportedTargetIds() const;
     QString displayNameForId(const QString &id) const;
 
     bool canCreate(ProjectExplorer::Project *parent, const QString &id) const;
diff --git a/src/plugins/cmakeprojectmanager/cmaketarget.cpp b/src/plugins/cmakeprojectmanager/cmaketarget.cpp
index 36ccd1ca7e8cd374f0fa6a9586646c86eae6f7e8..31d47abbf2322ece7a732f60ae2b2aa37e02ee06 100644
--- a/src/plugins/cmakeprojectmanager/cmaketarget.cpp
+++ b/src/plugins/cmakeprojectmanager/cmaketarget.cpp
@@ -179,10 +179,8 @@ CMakeTargetFactory::~CMakeTargetFactory()
 {
 }
 
-QStringList CMakeTargetFactory::supportedTargetIds(ProjectExplorer::Project *parent) const
+QStringList CMakeTargetFactory::supportedTargetIds() const
 {
-    if (!qobject_cast<CMakeProject *>(parent))
-        return QStringList();
     return QStringList() << QLatin1String(DEFAULT_CMAKE_TARGET_ID);
 }
 QString CMakeTargetFactory::displayNameForId(const QString &id) const
diff --git a/src/plugins/cmakeprojectmanager/cmaketarget.h b/src/plugins/cmakeprojectmanager/cmaketarget.h
index 799c62d102e6b1c284c5f5fadd4c1cdcea0388bd..51da026a6841d206acc221f3cd6a9351ed848530 100644
--- a/src/plugins/cmakeprojectmanager/cmaketarget.h
+++ b/src/plugins/cmakeprojectmanager/cmaketarget.h
@@ -85,7 +85,7 @@ public:
 
     bool supportsTargetId(const QString &id) const;
 
-    QStringList supportedTargetIds(ProjectExplorer::Project *parent) const;
+    QStringList supportedTargetIds() const;
     QString displayNameForId(const QString &id) const;
 
     bool canCreate(ProjectExplorer::Project *parent, const QString &id) const;
diff --git a/src/plugins/genericprojectmanager/generictarget.cpp b/src/plugins/genericprojectmanager/generictarget.cpp
index 617acd279fb642df988caefb330ab8b2ef8781b2..f3572ca5cec76b90a4c48b87bfd8852535a3704e 100644
--- a/src/plugins/genericprojectmanager/generictarget.cpp
+++ b/src/plugins/genericprojectmanager/generictarget.cpp
@@ -101,10 +101,8 @@ bool GenericTargetFactory::supportsTargetId(const QString &id) const
     return id == QLatin1String(GENERIC_DESKTOP_TARGET_ID);
 }
 
-QStringList GenericTargetFactory::supportedTargetIds(ProjectExplorer::Project *parent) const
+QStringList GenericTargetFactory::supportedTargetIds() const
 {
-    if (!qobject_cast<GenericProject *>(parent))
-        return QStringList();
     return QStringList() << QLatin1String(GENERIC_DESKTOP_TARGET_ID);
 }
 
diff --git a/src/plugins/genericprojectmanager/generictarget.h b/src/plugins/genericprojectmanager/generictarget.h
index df2186a86ab6b42b92d521f9e7fe98788cabbaf7..7f4df5d3f358159f952cfd43ffba6bd6fa361aaa 100644
--- a/src/plugins/genericprojectmanager/generictarget.h
+++ b/src/plugins/genericprojectmanager/generictarget.h
@@ -85,7 +85,7 @@ public:
 
     bool supportsTargetId(const QString &id) const;
 
-    QStringList supportedTargetIds(ProjectExplorer::Project *parent) const;
+    QStringList supportedTargetIds() const;
     QString displayNameForId(const QString &id) const;
 
     bool canCreate(ProjectExplorer::Project *parent, const QString &id) const;
diff --git a/src/plugins/madde/qt4maemotargetfactory.cpp b/src/plugins/madde/qt4maemotargetfactory.cpp
index 34db48c66a501189e0967aab1c7eddf30331b854..6a2327a9ffdda407e6e4a36c707d6975adafa4bc 100644
--- a/src/plugins/madde/qt4maemotargetfactory.cpp
+++ b/src/plugins/madde/qt4maemotargetfactory.cpp
@@ -71,17 +71,12 @@ bool Qt4MaemoTargetFactory::supportsTargetId(const QString &id) const
     return MaemoGlobal::isMaemoTargetId(id);
 }
 
-QStringList Qt4MaemoTargetFactory::supportedTargetIds(ProjectExplorer::Project *parent) const
+QStringList Qt4MaemoTargetFactory::supportedTargetIds() const
 {
     QStringList targetIds;
-    if (parent && !qobject_cast<Qt4Project *>(parent))
-        return targetIds;
-    if (!QtSupport::QtVersionManager::instance()->versionsForTargetId(QLatin1String(MAEMO5_DEVICE_TARGET_ID)).isEmpty())
-        targetIds << QLatin1String(MAEMO5_DEVICE_TARGET_ID);
-    if (!QtSupport::QtVersionManager::instance()->versionsForTargetId(QLatin1String(HARMATTAN_DEVICE_TARGET_ID)).isEmpty())
-        targetIds << QLatin1String(HARMATTAN_DEVICE_TARGET_ID);
-    if (!QtSupport::QtVersionManager::instance()->versionsForTargetId(QLatin1String(MEEGO_DEVICE_TARGET_ID)).isEmpty())
-        targetIds << QLatin1String(MEEGO_DEVICE_TARGET_ID);
+    targetIds << QLatin1String(MAEMO5_DEVICE_TARGET_ID)
+              << QLatin1String(HARMATTAN_DEVICE_TARGET_ID)
+              << QLatin1String(MEEGO_DEVICE_TARGET_ID);
     return targetIds;
 }
 
@@ -106,12 +101,15 @@ bool Qt4MaemoTargetFactory::canCreate(ProjectExplorer::Project *parent, const QS
 {
     if (!qobject_cast<Qt4Project *>(parent))
         return false;
-    return supportsTargetId(id);
+    if (!supportsTargetId(id))
+        return false;
+
+    return !QtSupport::QtVersionManager::instance()->versionsForTargetId(id).isEmpty();
 }
 
 bool Qt4MaemoTargetFactory::canRestore(ProjectExplorer::Project *parent, const QVariantMap &map) const
 {
-    return canCreate(parent, idFromMap(map));
+    return qobject_cast<Qt4Project *>(parent) && supportsTargetId(idFromMap(map));
 }
 
 ProjectExplorer::Target *Qt4MaemoTargetFactory::restore(ProjectExplorer::Project *parent, const QVariantMap &map)
diff --git a/src/plugins/madde/qt4maemotargetfactory.h b/src/plugins/madde/qt4maemotargetfactory.h
index a2e76b6d1c5a35ab5c728bd2cd18283e7de0c5fa..88b4a9dbec9952545ae1b0ea5bfd9e9f7c0c6313 100644
--- a/src/plugins/madde/qt4maemotargetfactory.h
+++ b/src/plugins/madde/qt4maemotargetfactory.h
@@ -45,7 +45,7 @@ public:
     Qt4MaemoTargetFactory(QObject *parent = 0);
     ~Qt4MaemoTargetFactory();
 
-    QStringList supportedTargetIds(ProjectExplorer::Project *parent) const;
+    QStringList supportedTargetIds() const;
     QString displayNameForId(const QString &id) const;
     QIcon iconForId(const QString &id) const;
 
diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp
index 4c2a93cfe40993ecb4bfa7437a9a263c64c1c172..f6684cd69d78abd361abbe417ebc53f7fb33e4ad 100644
--- a/src/plugins/projectexplorer/projectwindow.cpp
+++ b/src/plugins/projectexplorer/projectwindow.cpp
@@ -312,11 +312,14 @@ bool ProjectWindow::useTargetPage(ProjectExplorer::Project *project)
         return false;
     if (project->targets().size() > 1)
         return true;
-    QStringList tmp;
+    int count = 0;
     foreach (ITargetFactory *fac, ExtensionSystem::PluginManager::instance()->getObjects<ITargetFactory>()) {
-        tmp.append(fac->supportedTargetIds(project));
-        if (tmp.size() > 1)
-            return true;
+        foreach (const QString &targetId, fac->supportedTargetIds()) {
+            if (fac->canCreate(project, targetId))
+                ++count;
+            if (count > 1)
+                return true;
+        }
     }
     return false;
 }
diff --git a/src/plugins/projectexplorer/target.h b/src/plugins/projectexplorer/target.h
index f3cafe35728d5971679f6c6ab8f4df7494787a1a..e69f677722a3d91ef1a1f1189a876db5ea28c351 100644
--- a/src/plugins/projectexplorer/target.h
+++ b/src/plugins/projectexplorer/target.h
@@ -168,7 +168,7 @@ class PROJECTEXPLORER_EXPORT ITargetFactory :
 public:
     explicit ITargetFactory(QObject *parent = 0);
 
-    virtual QStringList supportedTargetIds(ProjectExplorer::Project *project) const = 0;
+    virtual QStringList supportedTargetIds() const = 0;
     virtual bool supportsTargetId(const QString &id) const = 0;
 
     // used to translate the types to names to display to the user
diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp
index 1f2db853b68471b7a0fc811f0ca40110b7568a10..0bce0538cd019c455ecbb490a7ac6476e8dcfe33 100644
--- a/src/plugins/projectexplorer/targetsettingspanel.cpp
+++ b/src/plugins/projectexplorer/targetsettingspanel.cpp
@@ -316,9 +316,11 @@ void TargetSettingsPanelWidget::updateTargetAddAndRemoveButtons()
             ExtensionSystem::PluginManager::instance()->getObjects<ITargetFactory>();
 
     foreach (ITargetFactory *fac, factories) {
-        foreach (const QString &id, fac->supportedTargetIds(m_project)) {
+        foreach (const QString &id, fac->supportedTargetIds()) {
             if (m_project->target(id))
                 continue;
+            if (!fac->canCreate(m_project, id))
+                continue;
             QString displayName = fac->displayNameForId(id);
             QAction *action = new QAction(displayName, m_addMenu);
             action->setData(QVariant(id));
diff --git a/src/plugins/qmlprojectmanager/qmlprojecttarget.cpp b/src/plugins/qmlprojectmanager/qmlprojecttarget.cpp
index 1d4411b150c26ab3f4159655d9470b9a292296f6..68b874ba71112565a9424f36cb7f1145235e2ede 100644
--- a/src/plugins/qmlprojectmanager/qmlprojecttarget.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojecttarget.cpp
@@ -102,10 +102,8 @@ bool QmlProjectTargetFactory::supportsTargetId(const QString &id) const
     return id == QLatin1String(Constants::QML_VIEWER_TARGET_ID);
 }
 
-QStringList QmlProjectTargetFactory::supportedTargetIds(ProjectExplorer::Project *parent) const
+QStringList QmlProjectTargetFactory::supportedTargetIds() const
 {
-    if (!qobject_cast<QmlProject *>(parent))
-        return QStringList();
     return QStringList() << QLatin1String(Constants::QML_VIEWER_TARGET_ID);
 }
 
diff --git a/src/plugins/qmlprojectmanager/qmlprojecttarget.h b/src/plugins/qmlprojectmanager/qmlprojecttarget.h
index 5e388d23e34bcc2922a2391c7f034cdda0e54b7c..fed3f969cca9af12017d54abc37fa709b5a525eb 100644
--- a/src/plugins/qmlprojectmanager/qmlprojecttarget.h
+++ b/src/plugins/qmlprojectmanager/qmlprojecttarget.h
@@ -74,7 +74,7 @@ public:
     ~QmlProjectTargetFactory();
 
     bool supportsTargetId(const QString &id) const;
-    QStringList supportedTargetIds(ProjectExplorer::Project *parent) const;
+    QStringList supportedTargetIds() const;
     QString displayNameForId(const QString &id) const;
 
     bool canCreate(ProjectExplorer::Project *parent, const QString &id) const;
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp
index dcc3724aa432337378ffae0f5c2ba830358347d9..d2e4c6e59a72c16b6cd093a3639a0acd9a290e58 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.cpp
@@ -69,13 +69,9 @@ bool Qt4DesktopTargetFactory::supportsTargetId(const QString &id) const
     return id == QLatin1String(Constants::DESKTOP_TARGET_ID);
 }
 
-QStringList Qt4DesktopTargetFactory::supportedTargetIds(ProjectExplorer::Project *parent) const
+QStringList Qt4DesktopTargetFactory::supportedTargetIds() const
 {
-    if (parent && !qobject_cast<Qt4Project *>(parent))
-        return QStringList();
-    const QString desktopId = QLatin1String(Constants::DESKTOP_TARGET_ID);
-    return QtSupport::QtVersionManager::instance()->supportsTargetId(desktopId) ?
-           QStringList(desktopId) : QStringList();
+    return QStringList(QLatin1String(Constants::DESKTOP_TARGET_ID));
 }
 
 QString Qt4DesktopTargetFactory::displayNameForId(const QString &id) const
@@ -103,12 +99,14 @@ bool Qt4DesktopTargetFactory::canCreate(ProjectExplorer::Project *parent, const
 {
     if (!qobject_cast<Qt4Project *>(parent))
         return false;
-    return supportsTargetId(id);
+    if (!supportsTargetId(id))
+        return false;
+    return QtSupport::QtVersionManager::instance()->supportsTargetId(id);
 }
 
 bool Qt4DesktopTargetFactory::canRestore(ProjectExplorer::Project *parent, const QVariantMap &map) const
 {
-    return canCreate(parent, idFromMap(map));
+    return qobject_cast<Qt4Project *>(parent) && supportsTargetId(idFromMap(map));
 }
 
 ProjectExplorer::Target  *Qt4DesktopTargetFactory::restore(ProjectExplorer::Project *parent, const QVariantMap &map)
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h
index e389b65bbd0603991febd660ddaf7ebf74a452dd..4ad88fa13f30cc62934ff3263a2846138f8536d7 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4desktoptargetfactory.h
@@ -44,7 +44,7 @@ public:
     Qt4DesktopTargetFactory(QObject *parent = 0);
     ~Qt4DesktopTargetFactory();
 
-    QStringList supportedTargetIds(ProjectExplorer::Project *parent) const;
+    QStringList supportedTargetIds() const;
     QString displayNameForId(const QString &id) const;
     QIcon iconForId(const QString &id) const;
 
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp
index 162038aafcf22fe966a1133e6fcee123561f7e4b..9cc4bb10b80197f2c25052dc1ff32a3479e865e1 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.cpp
@@ -69,13 +69,9 @@ bool Qt4SimulatorTargetFactory::supportsTargetId(const QString &id) const
     return id == QLatin1String(Constants::QT_SIMULATOR_TARGET_ID);
 }
 
-QStringList Qt4SimulatorTargetFactory::supportedTargetIds(ProjectExplorer::Project *parent) const
+QStringList Qt4SimulatorTargetFactory::supportedTargetIds() const
 {
-    if (parent && !qobject_cast<Qt4Project *>(parent))
-        return QStringList();
-    const QString simulatorId = QLatin1String(Constants::QT_SIMULATOR_TARGET_ID);
-    return QtSupport::QtVersionManager::instance()->supportsTargetId(simulatorId) ?
-           QStringList(simulatorId) : QStringList();
+    return QStringList() << QLatin1String(Constants::QT_SIMULATOR_TARGET_ID);
 }
 
 QString Qt4SimulatorTargetFactory::displayNameForId(const QString &id) const
@@ -103,12 +99,14 @@ bool Qt4SimulatorTargetFactory::canCreate(ProjectExplorer::Project *parent, cons
 {
     if (!qobject_cast<Qt4Project *>(parent))
         return false;
-    return supportsTargetId(id);
+    if (!supportsTargetId(id))
+        return false;
+    return QtSupport::QtVersionManager::instance()->supportsTargetId(id);
 }
 
 bool Qt4SimulatorTargetFactory::canRestore(ProjectExplorer::Project *parent, const QVariantMap &map) const
 {
-    return canCreate(parent, idFromMap(map));
+    return qobject_cast<Qt4Project *>(parent) && supportsTargetId(idFromMap(map));
 }
 
 ProjectExplorer::Target *Qt4SimulatorTargetFactory::restore(ProjectExplorer::Project *parent, const QVariantMap &map)
diff --git a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.h b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.h
index f2ffa33ecb47094b2c675ff071a13ce7d0e94c5e..200ea73c2ada0a0fe638f5b4ebb3c4dab8c5acaf 100644
--- a/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.h
+++ b/src/plugins/qt4projectmanager/qt-desktop/qt4simulatortargetfactory.h
@@ -47,7 +47,7 @@ public:
 
     bool supportsTargetId(const QString &id);
 
-    QStringList supportedTargetIds(ProjectExplorer::Project *parent) const;
+    QStringList supportedTargetIds() const;
     QString displayNameForId(const QString &id) const;
     QIcon iconForId(const QString &id) const;
 
diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
index 57a7abdf59dd10b09253a4f1cb983494ccc15d6e..e3d2c81366290e80cccafa0a34d26af48a2da513 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
+++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.cpp
@@ -74,20 +74,11 @@ bool Qt4SymbianTargetFactory::supportsTargetId(const QString &id) const
             || id == QLatin1String(Constants::S60_EMULATOR_TARGET_ID);
 }
 
-QStringList Qt4SymbianTargetFactory::supportedTargetIds(ProjectExplorer::Project *parent) const
+QStringList Qt4SymbianTargetFactory::supportedTargetIds() const
 {
-    if (parent && !qobject_cast<Qt4Project *>(parent))
-        return QStringList();
-
     QStringList ids;
-    // The QtVersionManager will just check whether theres
-    const QString deviceId = QLatin1String(Constants::S60_DEVICE_TARGET_ID);
-    if (QtSupport::QtVersionManager::instance()->supportsTargetId(deviceId))
-        ids << deviceId;
-    const QString emulatorId = QLatin1String(Constants::S60_EMULATOR_TARGET_ID);
-    if (QtSupport::QtVersionManager::instance()->supportsTargetId(emulatorId))
-        ids << emulatorId;
-
+    ids << QLatin1String(Constants::S60_DEVICE_TARGET_ID)
+        << QLatin1String(Constants::S60_EMULATOR_TARGET_ID);
     return ids;
 }
 
@@ -109,12 +100,14 @@ bool Qt4SymbianTargetFactory::canCreate(ProjectExplorer::Project *parent, const
 {
     if (!qobject_cast<Qt4Project *>(parent))
         return false;
-    return supportsTargetId(id);
+    if (!supportsTargetId(id))
+        return false;
+    return QtSupport::QtVersionManager::instance()->supportsTargetId(id);
 }
 
 bool Qt4SymbianTargetFactory::canRestore(ProjectExplorer::Project *parent, const QVariantMap &map) const
 {
-    return canCreate(parent, idFromMap(map));
+    return qobject_cast<Qt4Project *>(parent) && supportsTargetId(idFromMap(map));
 }
 
 ProjectExplorer::Target *Qt4SymbianTargetFactory::restore(ProjectExplorer::Project *parent, const QVariantMap &map)
diff --git a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h
index fc6c42c36f84867389d9be8cf889e29259069a20..b33b5b1611a1e6469db1f9272ae7bbf42806d503 100644
--- a/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h
+++ b/src/plugins/qt4projectmanager/qt-s60/qt4symbiantargetfactory.h
@@ -44,7 +44,7 @@ public:
     Qt4SymbianTargetFactory(QObject *parent = 0);
     ~Qt4SymbianTargetFactory();
 
-    QStringList supportedTargetIds(ProjectExplorer::Project *parent) const;
+    QStringList supportedTargetIds() const;
     bool supportsTargetId(const QString &id) const;
     QString displayNameForId(const QString &id) const;
     QIcon iconForId(const QString &id) const;
diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp
index 8c58242179e45e3f9fdafc4337026f6c51905910..5f98f5a471547700ac6285460628a1ebeb8361b5 100644
--- a/src/plugins/qt4projectmanager/qt4target.cpp
+++ b/src/plugins/qt4projectmanager/qt4target.cpp
@@ -1251,7 +1251,7 @@ QList<BuildConfigurationInfo> BuildConfigurationInfo::importBuildConfigurations(
     QList<Qt4BaseTargetFactory *> factories =
             ExtensionSystem::PluginManager::instance()->getObjects<Qt4BaseTargetFactory>();
     foreach (Qt4BaseTargetFactory *factory, factories) {
-        foreach (const QString &id, factory->supportedTargetIds(0)) {
+        foreach (const QString &id, factory->supportedTargetIds()) {
             QString expectedBuildprefix = factory->shadowBuildDirectory(proFilePath, id, QString());
             QString baseDir = QFileInfo(expectedBuildprefix).absolutePath();
             foreach (const QString &dir, QDir(baseDir).entryList()) {
diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
index 76858f05d399d8478fa79ce73d57b21527e427fc..fe37d6b9e3842262ae044ab4ac8ae03b8532ae90 100644
--- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
+++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp
@@ -152,7 +152,7 @@ void TargetSetupPage::setupWidgets()
     QList<Qt4BaseTargetFactory *> factories = ExtensionSystem::PluginManager::instance()->getObjects<Qt4BaseTargetFactory>();
     bool atLeastOneTargetSelected = false;
     foreach (Qt4BaseTargetFactory *factory, factories) {
-        QStringList ids = factory->supportedTargetIds(0);
+        QStringList ids = factory->supportedTargetIds();
         foreach (const QString &id, ids) {
             if (!factory->targetFeatures(id).contains(m_requiredTargetFeatures))
                 continue;
@@ -167,7 +167,6 @@ void TargetSetupPage::setupWidgets()
                                                                                     m_selectedPlatform);
 
 
-
             Qt4TargetSetupWidget *widget =
                     factory->createTargetSetupWidget(id, m_proFilePath,
                                                      m_minimumQtVersionNumber,
diff --git a/src/plugins/remotelinux/embeddedlinuxtargetfactory.cpp b/src/plugins/remotelinux/embeddedlinuxtargetfactory.cpp
index 4d7488689c4ab6d2cc669f705e1ac41f103a454f..07b1894f2dbdb31c382b8daf2677e404a7e493ff 100644
--- a/src/plugins/remotelinux/embeddedlinuxtargetfactory.cpp
+++ b/src/plugins/remotelinux/embeddedlinuxtargetfactory.cpp
@@ -80,12 +80,9 @@ QSet<QString> EmbeddedLinuxTargetFactory::targetFeatures(const QString & /*id*/)
     return features;
 }
 
-QStringList EmbeddedLinuxTargetFactory::supportedTargetIds(ProjectExplorer::Project *project) const
+QStringList EmbeddedLinuxTargetFactory::supportedTargetIds() const
 {
-    Q_UNUSED(project);
-    if (QtSupport::QtVersionManager::instance()->supportsTargetId(RemoteLinux::Constants::EMBEDDED_LINUX_TARGET_ID))
-        return QStringList() << QLatin1String(RemoteLinux::Constants::EMBEDDED_LINUX_TARGET_ID);
-    return QStringList();
+    return QStringList() << QLatin1String(RemoteLinux::Constants::EMBEDDED_LINUX_TARGET_ID);
 }
 
 bool EmbeddedLinuxTargetFactory::supportsTargetId(const QString &id) const
@@ -102,7 +99,7 @@ QString EmbeddedLinuxTargetFactory::displayNameForId(const QString &id) const
 
 bool EmbeddedLinuxTargetFactory::canRestore(ProjectExplorer::Project *parent, const QVariantMap &map) const
 {
-    return canCreate(parent, ProjectExplorer::idFromMap(map));
+    return qobject_cast<Qt4ProjectManager::Qt4Project *>(parent) && supportsTargetId(ProjectExplorer::idFromMap(map));
 }
 
 ProjectExplorer::Target *EmbeddedLinuxTargetFactory::restore(ProjectExplorer::Project *parent, const QVariantMap &map)
@@ -124,7 +121,10 @@ bool EmbeddedLinuxTargetFactory::canCreate(ProjectExplorer::Project *parent, con
     if (!project)
         return false;
 
-    return supportsTargetId(id);
+    if (!supportsTargetId(id))
+        return false;
+
+    return QtSupport::QtVersionManager::instance()->supportsTargetId(id);
 }
 
 ProjectExplorer::Target *EmbeddedLinuxTargetFactory::create(ProjectExplorer::Project *parent,
diff --git a/src/plugins/remotelinux/embeddedlinuxtargetfactory.h b/src/plugins/remotelinux/embeddedlinuxtargetfactory.h
index 4b90b9dadf8ae1b83285977c289c5f7c2cac67c8..1f6709ced65762aa60457a5e96249417efd236f6 100644
--- a/src/plugins/remotelinux/embeddedlinuxtargetfactory.h
+++ b/src/plugins/remotelinux/embeddedlinuxtargetfactory.h
@@ -51,7 +51,7 @@ public:
 
     QSet<QString> targetFeatures(const QString &id) const;
 
-    QStringList supportedTargetIds(ProjectExplorer::Project *project) const;
+    QStringList supportedTargetIds() const;
     bool supportsTargetId(const QString &id) const;
 
     QString displayNameForId(const QString &id) const;