diff --git a/src/plugins/duieditor/duieditor.cpp b/src/plugins/duieditor/duieditor.cpp
index 2d37da2534095ae51e12f87fe52e818347048b0c..ba36654f33e2b886c511fe61b6a5f4ac1c0ae358 100644
--- a/src/plugins/duieditor/duieditor.cpp
+++ b/src/plugins/duieditor/duieditor.cpp
@@ -379,7 +379,7 @@ ScriptEditor::ScriptEditor(const Context &context, QWidget *parent) :
     setMarksVisible(true);
     setCodeFoldingSupported(true);
     setCodeFoldingVisible(true);
-    setMimeType(DuiEditor::Constants::C_DUIEDITOR_MIMETYPE);
+    setMimeType(DuiEditor::Constants::DUIEDITOR_MIMETYPE);
 
     m_updateDocumentTimer = new QTimer(this);
     m_updateDocumentTimer->setInterval(UPDATE_DOCUMENT_DEFAULT_INTERVAL);
diff --git a/src/plugins/duieditor/duieditor.pro b/src/plugins/duieditor/duieditor.pro
index 7dd25ac1107a892d1099ce720d883c83274652ea..a02768c73e2035d25a8dcc531e1dbdacb58b6112 100644
--- a/src/plugins/duieditor/duieditor.pro
+++ b/src/plugins/duieditor/duieditor.pro
@@ -26,7 +26,8 @@ HEADERS += duieditor.h \
     qmlexpressionundercursor.h \
     qmllookupcontext.h \
     qmlresolveexpression.h \
-    qmlsymbol.h
+    qmlsymbol.h \
+    qmlfilewizard.h
 SOURCES += duieditor.cpp \
     duieditorfactory.cpp \
     duieditorplugin.cpp \
@@ -43,5 +44,6 @@ SOURCES += duieditor.cpp \
     qmlexpressionundercursor.cpp \
     qmllookupcontext.cpp \
     qmlresolveexpression.cpp \
-    qmlsymbol.cpp
+    qmlsymbol.cpp \
+    qmlfilewizard.cpp
 RESOURCES += duieditor.qrc
diff --git a/src/plugins/duieditor/duieditorconstants.h b/src/plugins/duieditor/duieditorconstants.h
index fd4db20c975c160870216c40686bb36be0fdef5e..a8b8d60b11d0f261a4d3ab6d7fe1c71e8fed1a32 100644
--- a/src/plugins/duieditor/duieditorconstants.h
+++ b/src/plugins/duieditor/duieditorconstants.h
@@ -38,7 +38,7 @@ const char * const RUN_SEP = "DuiEditor.Run.Separator";
 const char * const C_DUIEDITOR = "QML Editor";
 const char * const TASK_INDEX = "DuiEditor.TaskIndex";
 
-const char * const C_DUIEDITOR_MIMETYPE = "application/x-dui";
+const char * const DUIEDITOR_MIMETYPE = "application/x-dui";
 
 } // namespace Constants
 } // namespace DuiEditor
diff --git a/src/plugins/duieditor/duieditorfactory.cpp b/src/plugins/duieditor/duieditorfactory.cpp
index 92fc7ca046528e9f2174d134e3b2547bae86b55d..cfbe6757cd5c296272f774f78afe8bd8483d8318 100644
--- a/src/plugins/duieditor/duieditorfactory.cpp
+++ b/src/plugins/duieditor/duieditorfactory.cpp
@@ -44,7 +44,7 @@ using namespace DuiEditor::Constants;
 DuiEditorFactory::DuiEditorFactory(const Context &context, QObject *parent)
   : Core::IEditorFactory(parent),
     m_kind(QLatin1String(C_DUIEDITOR)),
-    m_mimeTypes(QLatin1String(DuiEditor::Constants::C_DUIEDITOR_MIMETYPE)),
+    m_mimeTypes(QLatin1String(DuiEditor::Constants::DUIEDITOR_MIMETYPE)),
     m_context(context),
     m_actionHandler(new DuiEditorActionHandler)
 {
diff --git a/src/plugins/duieditor/duieditorplugin.cpp b/src/plugins/duieditor/duieditorplugin.cpp
index b4923418f2c007413f2533a35f7ddde89d62d366..53fa98d1abc66e5646a9a0f858b9e530fc2c9186 100644
--- a/src/plugins/duieditor/duieditorplugin.cpp
+++ b/src/plugins/duieditor/duieditorplugin.cpp
@@ -36,6 +36,7 @@
 #include "duicodecompletion.h"
 #include "duihoverhandler.h"
 #include "duimodelmanager.h"
+#include "qmlfilewizard.h"
 
 #include <coreplugin/icore.h>
 #include <coreplugin/coreconstants.h>
@@ -57,6 +58,7 @@
 #include <QtCore/QSettings>
 #include <QtGui/QAction>
 
+using namespace DuiEditor;
 using namespace DuiEditor::Internal;
 using namespace DuiEditor::Constants;
 
@@ -75,7 +77,6 @@ DuiEditorPlugin::DuiEditorPlugin() :
 DuiEditorPlugin::~DuiEditorPlugin()
 {
     removeObject(m_editor);
-    removeObject(m_wizard);
     delete m_actionHandler;
     m_instance = 0;
 }
@@ -101,15 +102,11 @@ bool DuiEditorPlugin::initialize(const QStringList & /*arguments*/, QString *err
     addObject(m_editor);
 
     Core::BaseFileWizardParameters wizardParameters(Core::IWizard::FileWizard);
-    wizardParameters.setDescription(tr("Creates a Qt QML file."));
-    wizardParameters.setName(tr("Qt QML File"));
     wizardParameters.setCategory(QLatin1String("Qt"));
     wizardParameters.setTrCategory(tr("Qt"));
-    m_wizard = new TextEditor::TextFileWizard(QLatin1String(DuiEditor::Constants::C_DUIEDITOR_MIMETYPE),
-                                              QLatin1String(DuiEditor::Constants::C_DUIEDITOR),
-                                              QLatin1String("dui$"),
-                                              wizardParameters, this);
-    addObject(m_wizard);
+    wizardParameters.setDescription(tr("Creates a Qt QML file."));
+    wizardParameters.setName(tr("Qt QML File"));
+    addAutoReleasedObject(new QmlFileWizard(wizardParameters, core));
 
     m_actionHandler = new TextEditor::TextEditorActionHandler(DuiEditor::Constants::C_DUIEDITOR,
           TextEditor::TextEditorActionHandler::Format
diff --git a/src/plugins/duieditor/duieditorplugin.h b/src/plugins/duieditor/duieditorplugin.h
index 9d8b1b49d539ca275d4d8bc4a0d16046cecfb543..54c947040ef84dcf3949702768b9f0e48d340615 100644
--- a/src/plugins/duieditor/duieditorplugin.h
+++ b/src/plugins/duieditor/duieditorplugin.h
@@ -33,13 +33,13 @@
 #include <extensionsystem/iplugin.h>
 
 namespace TextEditor {
-class TextFileWizard;
 class TextEditorActionHandler;
 } // namespace TextEditor
 
 namespace DuiEditor {
 
 class DuiModelManagerInterface;
+class QmlFileWizard;
 
 namespace Internal {
 
@@ -74,7 +74,7 @@ private:
     Context m_scriptcontext;
 
     DuiModelManagerInterface *m_modelManager;
-    TextEditor::TextFileWizard *m_wizard;
+    QmlFileWizard *m_wizard;
     DuiEditorFactory *m_editor;
     TextEditor::TextEditorActionHandler *m_actionHandler;
     DuiCodeCompletion *m_completion;
diff --git a/src/plugins/duieditor/qmlfilewizard.cpp b/src/plugins/duieditor/qmlfilewizard.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1529908ce72fe515e796bc49250d0aa29d3bb3a4
--- /dev/null
+++ b/src/plugins/duieditor/qmlfilewizard.cpp
@@ -0,0 +1,45 @@
+#include "duieditorconstants.h"
+#include "qmlfilewizard.h"
+
+#include <QtCore/QFileInfo>
+#include <QtCore/QTextStream>
+
+using namespace DuiEditor;
+
+QmlFileWizard::QmlFileWizard(const BaseFileWizardParameters &parameters,
+                             QObject *parent):
+    Core::StandardFileWizard(parameters, parent)
+{
+}
+
+Core::GeneratedFiles QmlFileWizard::generateFilesFromPath(const QString &path,
+                                                          const QString &name,
+                                                          QString * /*errorMessage*/) const
+
+{
+    const QString mimeType = QLatin1String(Constants::DUIEDITOR_MIMETYPE);
+    const QString fileName = Core::BaseFileWizard::buildFileName(path, name, preferredSuffix(mimeType));
+
+    Core::GeneratedFile file(fileName);
+    file.setEditorKind(QLatin1String(Constants::C_DUIEDITOR));
+    file.setContents(fileContents(fileName));
+
+    return Core::GeneratedFiles() << file;
+}
+
+QString QmlFileWizard::fileContents(const QString &fileName) const
+{
+    const QString baseName = QFileInfo(fileName).completeBaseName();
+    QString contents;
+    QTextStream str(&contents);
+//    str << CppTools::AbstractEditorSupport::licenseTemplate();
+
+    str << QLatin1String("import Qt 4.6\n")
+        << QLatin1String("\n")
+        << QLatin1String("Rectangle {\n")
+        << QLatin1String("    width: 640\n")
+        << QLatin1String("    height: 480\n")
+        << QLatin1String("}\n");
+
+    return contents;
+}
diff --git a/src/plugins/duieditor/qmlfilewizard.h b/src/plugins/duieditor/qmlfilewizard.h
new file mode 100644
index 0000000000000000000000000000000000000000..cb040bceaa797fc4834ff13578e8e8f4c45fd648
--- /dev/null
+++ b/src/plugins/duieditor/qmlfilewizard.h
@@ -0,0 +1,29 @@
+#ifndef QMLFILEWIZARD_H
+#define QMLFILEWIZARD_H
+
+#include <coreplugin/basefilewizard.h>
+
+namespace DuiEditor {
+
+class QmlFileWizard: public Core::StandardFileWizard
+{
+    Q_OBJECT
+
+public:
+    typedef Core::BaseFileWizardParameters BaseFileWizardParameters;
+
+    QmlFileWizard(const BaseFileWizardParameters &parameters,
+                  QObject *parent = 0);
+
+protected:
+    QString fileContents(const QString &baseName) const;
+
+protected:
+    Core::GeneratedFiles generateFilesFromPath(const QString &path,
+                                               const QString &fileName,
+                                               QString *errorMessage) const;
+};
+
+} // namespace DuiEditor
+
+#endif // QMLFILEWIZARD_H
diff --git a/src/plugins/duieditor/qmllookupcontext.cpp b/src/plugins/duieditor/qmllookupcontext.cpp
index 1847f35536179aa335b2b709c7d23e876cfb1c51..199737293c031de34ee26e486e3af13e1844241e 100644
--- a/src/plugins/duieditor/qmllookupcontext.cpp
+++ b/src/plugins/duieditor/qmllookupcontext.cpp
@@ -168,3 +168,40 @@ QString QmlLookupContext::toString(UiQualifiedId *id)
 
     return str;
 }
+
+QList<QmlSymbol*> QmlLookupContext::visibleSymbols(QmlJS::AST::Node *scope)
+{
+    // FIXME
+}
+
+QList<QmlSymbol*> QmlLookupContext::visibleTypes()
+{
+    QList<QmlSymbol*> result;
+
+    UiProgram *program = _doc->program();
+    if (!program)
+        return result;
+
+    for (UiImportList *iter = program->imports; iter; iter = iter->next) {
+        UiImport *import = iter->import;
+        if (!import)
+            continue;
+
+        if (!(import->fileName))
+            continue;
+        const QString path = import->fileName->asString();
+
+        // TODO: handle "import as".
+
+        const QMap<QString, DuiDocument::Ptr> types = _snapshot.componentsDefinedByImportedDocuments(_doc, path);
+        foreach (const DuiDocument::Ptr typeDoc, types) {
+            UiProgram *typeProgram = typeDoc->program();
+
+            if (typeProgram && typeProgram->members && typeProgram->members->member) {
+                result.append(createSymbol(typeDoc->fileName(), typeProgram->members->member));
+            }
+        }
+    }
+
+    return result;
+}
diff --git a/src/plugins/duieditor/qmllookupcontext.h b/src/plugins/duieditor/qmllookupcontext.h
index 4813f37e30cbea332daf8cf68ea86a8d9e2bd3ec..bf3817a0b689b66ff5b486749db67ae270bbd320 100644
--- a/src/plugins/duieditor/qmllookupcontext.h
+++ b/src/plugins/duieditor/qmllookupcontext.h
@@ -27,6 +27,9 @@ public:
     DuiDocument::Ptr document() const
     { return _doc; }
 
+    QList<QmlSymbol*> visibleSymbols(QmlJS::AST::Node *scope);
+    QList<QmlSymbol*> visibleTypes();
+
 private:
     QmlSymbol *createSymbol(const QString &fileName, QmlJS::AST::UiObjectMember *node);