diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp
index 96b16d59d31731bd465ef1f93aac14c9c6c72d16..32125bb100774bb2c57446bf1da9b5dbf9d50cc9 100644
--- a/src/plugins/projectexplorer/toolchain.cpp
+++ b/src/plugins/projectexplorer/toolchain.cpp
@@ -170,16 +170,24 @@ bool MinGWToolChain::equals(ToolChain *other) const
 
 void MinGWToolChain::addToEnvironment(ProjectExplorer::Environment &env)
 {
+    //qDebug()<<"MinGWToolChain::addToEnvironment";
     QString binDir = m_mingwPath + "/bin";
     if (QFileInfo(binDir).exists())
         env.prependOrSetPath(binDir);
+//    if (QFileInfo(binDir).exists())
+//        qDebug()<<"Adding "<<binDir<<" to the PATH";
 }
 
 
 MSVCToolChain::MSVCToolChain(const QString &name)
     : m_name(name), m_valuesSet(false)
 {
-
+    if (m_name.isEmpty()) { // Could be because system qt doesn't set this
+        QSettings registry("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7",
+                       QSettings::NativeFormat);
+        if (registry.allKeys().count())
+            m_name = registry.allKeys().first();
+    }
 }
 
 ToolChain::ToolChainType MSVCToolChain::type() const
@@ -211,10 +219,11 @@ QList<HeaderPath> MSVCToolChain::systemHeaderPaths()
     //TODO fix this code
     ProjectExplorer::Environment env = ProjectExplorer::Environment::systemEnvironment();
     addToEnvironment(env);
-#ifdef QTCREATOR_WITH_MSVC_INCLUDES
-    return env.value("INCLUDE").split(QLatin1Char(';'));
-#endif
-    return QList<HeaderPath>();
+    QList<HeaderPath> headerPaths;
+    foreach(const QString &path, env.value("INCLUDE").split(QLatin1Char(';'))) {
+        headerPaths.append(HeaderPath(path, HeaderPath::GlobalHeaderPath));
+    }
+    return headerPaths;
 }
 
 void MSVCToolChain::addToEnvironment(ProjectExplorer::Environment &env)
@@ -222,6 +231,8 @@ void MSVCToolChain::addToEnvironment(ProjectExplorer::Environment &env)
     if (!m_valuesSet) {
         QSettings registry("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7",
                        QSettings::NativeFormat);
+        if (m_name.isEmpty())
+            return;
         QString path = registry.value(m_name).toString();
         ProjectExplorer::Environment oldEnv(env);
         QString desc;
@@ -264,11 +275,12 @@ void MSVCToolChain::addToEnvironment(ProjectExplorer::Environment &env)
         m_valuesSet = true;
     }
 
+    //qDebug()<<"MSVC Environment:";
     QList< QPair<QString, QString> >::const_iterator it, end;
     end = m_values.constEnd();
     for (it = m_values.constBegin(); it != end; ++it) {
         env.set((*it).first, (*it).second);
-        qDebug()<<"variable:"<<(*it).first<<"value:"<<(*it).second;
+        //qDebug()<<"variable:"<<(*it).first<<"value:"<<(*it).second;
     }
 
 }
@@ -325,4 +337,6 @@ void WinCEToolChain::addToEnvironment(ProjectExplorer::Environment &env)
     CeSdkHandler cesdkhandler;
     cesdkhandler.parse(path);
     cesdkhandler.find(m_platform).addToEnvironment(env);
+    //qDebug()<<"WinCE Final Environment:";
+    //qDebug()<<env.toStringList();
 }
diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp
index 492dc2c50d046cf7a1de3a7d9e381eeb355ef0f4..cac25f7566a0b02e32bd5ac8fa5e33bcd3493aaf 100644
--- a/src/plugins/qt4projectmanager/qt4project.cpp
+++ b/src/plugins/qt4projectmanager/qt4project.cpp
@@ -404,6 +404,7 @@ void Qt4Project::scheduleUpdateCodeModel()
 
 ProjectExplorer::ToolChain *Qt4Project::toolChain(const QString &buildConfiguration) const
 {
+    qDebug()<<"Qt4Project::toolChain() for buildconfiguration:"<<buildConfiguration;
     Q_UNUSED(buildConfiguration);
     ToolChain *m_test;
     QtVersion *version = qtVersion(activeBuildConfiguration());
@@ -415,10 +416,13 @@ ProjectExplorer::ToolChain *Qt4Project::toolChain(const QString &buildConfigurat
         qtVersion(activeBuildConfiguration())->addToEnvironment(env);
         qmake_cxx = env.searchInPath(qmake_cxx);
         m_test = ToolChain::createMinGWToolChain(qmake_cxx, version->mingwDirectory());
+        qDebug()<<"Mingw ToolChain";
     } else if(t == ToolChain::MSVC) {
         m_test = ToolChain::createMSVCToolChain(version->msvcVersion());
+        //qDebug()<<"MSVC ToolChain ("<<version->msvcVersion()<<")";
     } else if(t == ToolChain::WINCE) {
         m_test = ToolChain::createWinCEToolChain(version->msvcVersion(), version->wincePlatform());
+        //qDebug()<<"WinCE ToolChain ("<<version->msvcVersion()<<","<<version->wincePlatform()<<")";
     } else if(t == ToolChain::GCC || t == ToolChain::LinuxICC) {
         QStringList list = rootProjectNode()->variableValue(Internal::CxxCompilerVar);
         QString qmake_cxx = list.isEmpty() ? QString::null : list.first();
@@ -426,8 +430,14 @@ ProjectExplorer::ToolChain *Qt4Project::toolChain(const QString &buildConfigurat
         qtVersion(activeBuildConfiguration())->addToEnvironment(env);
         qmake_cxx = env.searchInPath(qmake_cxx);
         m_test = ToolChain::createGccToolChain(qmake_cxx);
+        //qDebug()<<"GCC ToolChain ("<<qmake_cxx<<")";
+    } else {
+        qDebug()<<"Could not detect ToolChain for"<<version->mkspec();
+        qDebug()<<"Qt Creator doesn't know about the system includes, nor the systems defines.";
     }
 
+
+
     if (m_test == m_toolChain) {
         delete m_test;
     } else {
@@ -462,6 +472,12 @@ void Qt4Project::updateCodeModel()
     if (tc) {
         predefinedMacros = tc->predefinedMacros();
         allHeaderPaths = tc->systemHeaderPaths();
+        //qDebug()<<"Predifined Macros";
+        //qDebug()<<tc->predefinedMacros();
+        //qDebug()<<"";
+        //qDebug()<<"System Header Paths";
+        //foreach(const HeaderPath &hp, tc->systemHeaderPaths())
+        //    qDebug()<<hp.path();
     }
     foreach (HeaderPath headerPath, allHeaderPaths) {
         if (headerPath.kind() == HeaderPath::FrameworkHeaderPath)
@@ -867,14 +883,14 @@ void Qt4Project::checkForDeletedApplicationProjects()
     foreach (Qt4ProFileNode * node, applicationProFiles())
         paths.append(node->path());
 
-    qDebug()<<"Still existing paths :"<<paths;
+//    qDebug()<<"Still existing paths :"<<paths;
 
     QList<QSharedPointer<Qt4RunConfiguration> > removeList;
     foreach (QSharedPointer<RunConfiguration> rc, runConfigurations()) {
         if (QSharedPointer<Qt4RunConfiguration> qt4rc = rc.dynamicCast<Qt4RunConfiguration>()) {
             if (!paths.contains(qt4rc->proFilePath())) {
                 removeList.append(qt4rc);
-                qDebug()<<"Removing runConfiguration for "<<qt4rc->proFilePath();
+//                qDebug()<<"Removing runConfiguration for "<<qt4rc->proFilePath();
             }
         }
     }
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index 58f196b3edec7cac564cf675ef4f2ffc13825448..2e7440bb57191c9381b012cef8ea19437c18d025 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -1183,15 +1183,16 @@ ProjectExplorer::ToolChain::ToolChainType QtVersion::toolchainType() const
     if (!isValid())
         return ProjectExplorer::ToolChain::INVALID;
     const QString &spec = mkspec();
+//    qDebug()<<"spec="<<spec;
     if (spec.contains("win32-msvc") || spec.contains(QLatin1String("win32-icc")))
         return ProjectExplorer::ToolChain::MSVC;
-    else if (spec == "win32-g++")
+    else if (spec.contains("win32-g++"))
         return ProjectExplorer::ToolChain::MinGW;
     else if (spec == QString::null)
         return ProjectExplorer::ToolChain::INVALID;
-    else if (spec.startsWith("wince"))
+    else if (spec.contains("wince"))
         return ProjectExplorer::ToolChain::WINCE;
-    else if (spec.startsWith("linux-icc"))
+    else if (spec.contains("linux-icc"))
         return ProjectExplorer::ToolChain::LinuxICC;
     else
         return ProjectExplorer::ToolChain::GCC;
@@ -1224,7 +1225,7 @@ QString QtVersion::msvcVersion() const
 
 QString QtVersion::wincePlatform() const
 {
-    qDebug()<<"QtVersion::wincePlatform returning"<<ProjectExplorer::CeSdkHandler::platformName(mkspecPath() + "/qmake.conf");
+//    qDebug()<<"QtVersion::wincePlatform returning"<<ProjectExplorer::CeSdkHandler::platformName(mkspecPath() + "/qmake.conf");
     return ProjectExplorer::CeSdkHandler::platformName(mkspecPath() + "/qmake.conf");
 }