diff --git a/share/qtcreator/qmljsdebugger/include/jsdebuggeragent.h b/share/qtcreator/qmljsdebugger/include/jsdebuggeragent.h
index 89667d7193e030441e351f9b5e7f2fca1f6b6717..39b559cabe33592242dcf1e7c9b8953bab71e9b8 100644
--- a/share/qtcreator/qmljsdebugger/include/jsdebuggeragent.h
+++ b/share/qtcreator/qmljsdebugger/include/jsdebuggeragent.h
@@ -63,6 +63,7 @@
 #include "qmljsdebugger_global.h"
 
 QT_FORWARD_DECLARE_CLASS(QScriptContext);
+QT_FORWARD_DECLARE_CLASS(QDeclarativeEngine);
 
 namespace QmlJSDebugger {
 
@@ -73,6 +74,7 @@ class QMLJSDEBUGGER_EXPORT JSDebuggerAgent : public QDeclarativeDebugService , p
     Q_OBJECT
 public:
     JSDebuggerAgent(QScriptEngine *engine);
+    JSDebuggerAgent(QDeclarativeEngine *engine);
     ~JSDebuggerAgent();
 
     // reimplemented
diff --git a/share/qtcreator/qmljsdebugger/jsdebuggeragent.cpp b/share/qtcreator/qmljsdebugger/jsdebuggeragent.cpp
index e489be6b1d666c6df691b33636bbbb33a75c7a2d..24c61eead00ddb02a24ac6dbda5d8e2db1c8c926 100644
--- a/share/qtcreator/qmljsdebugger/jsdebuggeragent.cpp
+++ b/share/qtcreator/qmljsdebugger/jsdebuggeragent.cpp
@@ -49,6 +49,7 @@
 #include <QtCore/QUrl>
 #include <QtCore/QDateTime>
 #include <QtScript/qscriptvalueiterator.h>
+#include <private/qdeclarativeengine_p.h>
 
 namespace QmlJSDebugger {
 
@@ -190,6 +191,12 @@ JSDebuggerAgent::JSDebuggerAgent(QScriptEngine *engine)
     , state(NoState)
 {}
 
+JSDebuggerAgent::JSDebuggerAgent(QDeclarativeEngine *engine)
+    : QDeclarativeDebugService("JSDebugger")
+    , QScriptEngineAgent(QDeclarativeEnginePrivate::getScriptEngine(engine))
+    , state(NoState)
+{}
+
 /*!
   Destroys this QScriptDebuggerAgent.
 */
diff --git a/share/qtcreator/qmljsdebugger/qmljsdebugger-lib.pri b/share/qtcreator/qmljsdebugger/qmljsdebugger-lib.pri
index 1ca47b8b7f1c6242238a2967e4a8259f952e3c27..f4918263780616f86cce6310bb8e5a6296a27678 100644
--- a/share/qtcreator/qmljsdebugger/qmljsdebugger-lib.pri
+++ b/share/qtcreator/qmljsdebugger/qmljsdebugger-lib.pri
@@ -10,20 +10,26 @@ contains(CONFIG, dll) {
 
 include($$PWD/private_headers.pri)
 
-include($$PWD/editor/editor.pri)
-
 ## Input
 HEADERS += \
     include/jsdebuggeragent.h \
-    include/qdeclarativeviewobserver.h \
-    include/qdeclarativeobserverservice.h \
-    include/qmlobserverconstants.h \
-    include/qmljsdebugger_global.h \
-    qdeclarativeviewobserver_p.h
+    include/qmljsdebugger_global.h
 
 SOURCES += \
-    jsdebuggeragent.cpp \
-    qdeclarativeviewobserver.cpp \
-    qdeclarativeobserverservice.cpp
+    jsdebuggeragent.cpp
+
+contains(DEFINES, QMLOBSERVER) {
+    include($$PWD/editor/editor.pri)
+
+    HEADERS += \
+        include/qdeclarativeviewobserver.h \
+        include/qdeclarativeobserverservice.h \
+        include/qmlobserverconstants.h \
+        qdeclarativeviewobserver_p.h
+
+    SOURCES += \
+        qdeclarativeviewobserver.cpp \
+        qdeclarativeobserverservice.cpp
+}
 
 OTHER_FILES += qmljsdebugger.pri
diff --git a/share/qtcreator/qmljsdebugger/qmljsdebugger.pro b/share/qtcreator/qmljsdebugger/qmljsdebugger.pro
index 457644a2a533ed9737ff3a223a8a6e7059598941..5f3eb509580b0479012ce266276d5c487ccd6524 100644
--- a/share/qtcreator/qmljsdebugger/qmljsdebugger.pro
+++ b/share/qtcreator/qmljsdebugger/qmljsdebugger.pro
@@ -2,6 +2,8 @@ TEMPLATE = lib
 CONFIG+=dll
 TARGET = QmlJSDebugger
 
+DEFINES += QMLOBSERVER
+
 unix:QMAKE_CXXFLAGS_DEBUG += -O3
 
 include(../../../src/qtcreatorlibrary.pri)
diff --git a/share/qtcreator/templates/qmlapp/app.pro b/share/qtcreator/templates/qmlapp/app.pro
index 74669876dc4ac734ef3e2577173b198747741f79..e893e8e3c20afe83d253181752794effb3755cca 100644
--- a/share/qtcreator/templates/qmlapp/app.pro
+++ b/share/qtcreator/templates/qmlapp/app.pro
@@ -22,8 +22,9 @@ symbian:TARGET.UID3 = 0xE1111234
 
 symbian:ICON = symbianicon.svg
 
-# Define to enable the Qml Observer in debug mode
-# QMLOBSERVER #
+# Define QMLJSDEBUGGER to enable basic debugging (setting breakpoints etc)
+# Define QMLOBSERVER for advanced features (requires experimental QmlInspector plugin!)
+#DEFINES += QMLJSDEBUGGER
 #DEFINES += QMLOBSERVER
 
 SOURCES += main.cpp
diff --git a/share/qtcreator/templates/qmlapp/qmlapplicationviewer/qmlapplicationviewer.cpp b/share/qtcreator/templates/qmlapp/qmlapplicationviewer/qmlapplicationviewer.cpp
index 2de38e5f446b5d204fcfb82dfd5936ef8013226e..2e4adfc3b2fb54d02ae2ea31f1baca89593e667c 100644
--- a/share/qtcreator/templates/qmlapp/qmlapplicationviewer/qmlapplicationviewer.cpp
+++ b/share/qtcreator/templates/qmlapp/qmlapplicationviewer/qmlapplicationviewer.cpp
@@ -7,6 +7,9 @@
 #include <QtDeclarative/QDeclarativeEngine>
 #include <QtDeclarative/QDeclarativeContext>
 
+#if defined(QMLJSDEBUGGER)
+#include <jsdebuggeragent.h>
+#endif
 #if defined(QMLOBSERVER)
 #include <qdeclarativeviewobserver.h>
 #endif
@@ -50,6 +53,9 @@ QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) :
 {
     connect(engine(), SIGNAL(quit()), SLOT(close()));
     setResizeMode(QDeclarativeView::SizeRootObjectToView);
+#ifdef QMLJSDEBUGGER
+    new QmlJSDebugger::JSDebuggerAgent(engine());
+#endif
 #ifdef QMLOBSERVER
     new QmlJSDebugger::QDeclarativeViewObserver(this, parent);
 #endif
diff --git a/share/qtcreator/templates/qmlapp/qmlapplicationviewer/qmlapplicationviewer.pri b/share/qtcreator/templates/qmlapp/qmlapplicationviewer/qmlapplicationviewer.pri
index 600262ac94a9b840cb67d44395eabf321e84e495..22f9ffd0079778e55f4d004131957a60e528843f 100644
--- a/share/qtcreator/templates/qmlapp/qmlapplicationviewer/qmlapplicationviewer.pri
+++ b/share/qtcreator/templates/qmlapp/qmlapplicationviewer/qmlapplicationviewer.pri
@@ -8,14 +8,17 @@ HEADERS += $$PWD/qmlapplicationviewer.h
 INCLUDEPATH += $$PWD
 
 contains(DEFINES, QMLOBSERVER) {
+    DEFINES *= QMLJSDEBUGGER
+}
+contains(DEFINES, QMLJSDEBUGGER) {
     CONFIG(debug, debug|release) {
-        isEmpty(QMLOBSERVER_PATH) {
-            warning(QMLOBSERVER_PATH was not set. QMLOBSERVER not activated.)
-            DEFINES -= QMLOBSERVER
+        isEmpty(QMLJSDEBUGGER_PATH) {
+            warning(QMLJSDEBUGGER_PATH was not set. QMLJSDEBUGGER not activated.)
+            DEFINES -= QMLJSDEBUGGER
         } else {
-            include($$QMLOBSERVER_PATH/qmljsdebugger-lib.pri)
+            include($$QMLJSDEBUGGER_PATH/qmljsdebugger-lib.pri)
         }
     } else {
-        DEFINES -= QMLOBSERVER
+        DEFINES -= QMLJSDEBUGGER
     }
 }
diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index 0619b7a78bb754c775e37ace5818fd12beb9ffd5..0e71f4e26a05db842256c4dbd050c442b136d27f 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -128,7 +128,7 @@ QStringList QMakeStep::allArguments()
 /// moreArguments,
 /// -unix for Maemo
 /// -after OBJECTS_DIR, MOC_DIR, UI_DIR, RCC_DIR
-/// QMAKE_VAR_QMLOBSERVER_PATH
+/// QMAKE_VAR_QMLJSDEBUGGER_PATH
 QStringList QMakeStep::moreArguments()
 {
     Qt4BuildConfiguration *bc = qt4BuildConfiguration();
@@ -152,7 +152,7 @@ QStringList QMakeStep::moreArguments()
                   << QLatin1String("RCC_DIR=rcc");
     }
 
-    arguments << QLatin1String(Constants::QMAKEVAR_QMLOBSERVER_PATH) + QLatin1Char('=') +
+    arguments << QLatin1String(Constants::QMAKEVAR_QMLJSDEBUGGER_PATH) + QLatin1Char('=') +
             Core::ICore::instance()->resourcePath() + QLatin1String("/qmljsdebugger");
     return arguments;
 }
diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
index 3ead32b80f46f56cf9aefd600dab2661d3c25b7f..43ba7dff082b72601758f1cb9bc6c20889f90322 100644
--- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
+++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp
@@ -525,7 +525,7 @@ QStringList Qt4BuildConfiguration::removeQMLInspectorFromArgumentList(const QStr
 {
     QStringList result;
     foreach (const QString &str, old)
-        if (!str.startsWith(QLatin1String(Constants::QMAKEVAR_QMLOBSERVER_PATH)))
+        if (!str.startsWith(QLatin1String(Constants::QMAKEVAR_QMLJSDEBUGGER_PATH)))
             result << str;
     return result;
 }
diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h
index 1eb2c36122cfc720bb7e86ebc3202ad2636e5a3b..9d62da41eeec1354c3aea4bf80afec2154db7f2c 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h
+++ b/src/plugins/qt4projectmanager/qt4projectmanagerconstants.h
@@ -112,7 +112,7 @@ const char * const ICON_WINDOW = ":/qt4projectmanager/images/window.png";
 const char * const ICON_QML_STANDALONE = ":/wizards/images/qml_standalone.png";
 
 // Env variables
-const char * const QMAKEVAR_QMLOBSERVER_PATH = "QMLOBSERVER_PATH";
+const char * const QMAKEVAR_QMLJSDEBUGGER_PATH = "QMLJSDEBUGGER_PATH";
 
 } // namespace Constants
 } // namespace Qt4ProjectManager
diff --git a/src/plugins/qt4projectmanager/wizards/qmlstandaloneapp.cpp b/src/plugins/qt4projectmanager/wizards/qmlstandaloneapp.cpp
index 0a2daa6cc730898483a61b4521a031f505f84573..dd77566272f03484eb3d31f47db2f3222ba07cd6 100644
--- a/src/plugins/qt4projectmanager/wizards/qmlstandaloneapp.cpp
+++ b/src/plugins/qt4projectmanager/wizards/qmlstandaloneapp.cpp
@@ -242,7 +242,7 @@ void QmlStandaloneApp::handleCurrentProFileTemplateLine(const QString &line,
             }
         }
         proFile << "DEPLOYMENTFOLDERS = " << folders.join(QLatin1String(" ")) << endl;
-    } else if (line.contains(QLatin1String("# QMLOBSERVER"))) {
+    } else if (line.contains(QLatin1String("# QMLJSDEBUGGER"))) {
         // ### disabled for now; figure out the private headers problem first.
         //uncommentNextLine = true;
         Q_UNUSED(uncommentNextLine);