diff --git a/src/plugins/coreplugin/coreplugin.pro b/src/plugins/coreplugin/coreplugin.pro
index 5eedf3bab85c4ba904ce06e4ece876a01e65ad1b..5efa111749e2e85d162c1fbe43d5fdd6f3f6d1a2 100644
--- a/src/plugins/coreplugin/coreplugin.pro
+++ b/src/plugins/coreplugin/coreplugin.pro
@@ -73,7 +73,8 @@ SOURCES += mainwindow.cpp \
     mimedatabase.cpp \
     icore.cpp \
     editormanager/ieditor.cpp \
-    dialogs/ioptionspage.cpp
+    dialogs/ioptionspage.cpp \
+    dialogs/iwizard.cpp
 HEADERS += mainwindow.h \
     welcomemode.h \
     welcomemode_p.h \
diff --git a/src/plugins/coreplugin/dialogs/iwizard.cpp b/src/plugins/coreplugin/dialogs/iwizard.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a73a30f0bc8617a5ffc6e6cfaf8c6255f712ff09
--- /dev/null
+++ b/src/plugins/coreplugin/dialogs/iwizard.cpp
@@ -0,0 +1,97 @@
+#include "iwizard.h"
+
+/*!
+    \class Core::IWizard
+    \mainclass
+
+    \brief The class IWizard is the base class for all wizards
+    (for example shown in \gui {File | New}).
+
+    The wizard interface is a very thin abstraction for the \gui{New...} wizards.
+    Basically it defines what to show to the user in the wizard selection dialogs,
+    and a hook that is called if the user selects the wizard.
+
+    Wizards can then perform any operations they like, including showing dialogs and
+    creating files. Often it is not necessary to create your own wizard from scratch,
+    instead use one of the predefined wizards and adapt it to your needs.
+
+    To make your wizard known to the system, add your IWizard instance to the
+    plugin manager's object pool in your plugin's initialize method:
+    \code
+        bool MyPlugin::initialize(const QStringList &arguments, QString *errorString)
+        {
+            // ... do setup
+            addAutoReleasedObject(new MyWizard);
+            // ... do more setup
+        }
+    \endcode
+    \sa Core::BaseFileWizard
+    \sa Core::StandardFileWizard
+*/
+
+/*!
+    \enum Core::IWizard::Kind
+    Used to specify what kind of objects the wizard creates. This information is used
+    to show e.g. only wizards that create projects when selecting a \gui{New Project}
+    menu item.
+    \value FileWizard
+        The wizard creates one or more files.
+    \value ClassWizard
+        The wizard creates a new class (e.g. source+header files).
+    \value ProjectWizard
+        The wizard creates a new project.
+*/
+
+/*!
+    \fn IWizard::IWizard(QObject *parent)
+    \internal
+*/
+
+/*!
+    \fn IWizard::~IWizard()
+    \internal
+*/
+
+/*!
+    \fn Kind IWizard::kind() const
+    Returns what kind of objects are created by the wizard.
+    \sa Kind
+*/
+
+/*!
+    \fn QIcon IWizard::icon() const
+    Returns an icon to show in the wizard selection dialog.
+*/
+
+/*!
+    \fn QString IWizard::description() const
+    Returns a translated description to show when this wizard is selected
+    in the dialog.
+*/
+
+/*!
+    \fn QString IWizard::name() const
+    Returns the translated name of the wizard, how it should appear in the
+    dialog.
+*/
+
+/*!
+    \fn QString IWizard::category() const
+    Returns a category ID to add the wizard to.
+*/
+
+/*!
+    \fn QString IWizard::trCategory() const
+    Returns the translated string of the category, how it should appear
+    in the dialog.
+*/
+
+/*!
+    \fn QStringList IWizard::runWizard(const QString &path, QWidget *parent)
+    This method is executed when the wizard has been selected by the user
+    for execution. Any dialogs the wizard opens should use the given \a parent.
+    The \a path argument is a suggestion for the location where files should be
+    created. The wizard should fill this in it's path selection elements as a
+    default path.
+    Returns a list of files (absolute paths) that have been created, if any.
+*/
diff --git a/src/plugins/coreplugin/dialogs/iwizard.h b/src/plugins/coreplugin/dialogs/iwizard.h
index 4807d52f183c524a1c7b55483a8b74f257f07774..00f292ce6db9caf6a2a90b097ffd9dbe9317b9ee 100644
--- a/src/plugins/coreplugin/dialogs/iwizard.h
+++ b/src/plugins/coreplugin/dialogs/iwizard.h
@@ -51,6 +51,7 @@ public:
     };
 
     IWizard(QObject *parent = 0) : QObject(parent) {}
+    virtual ~IWizard() {}
 
     virtual Kind kind() const = 0;
     virtual QIcon icon() const = 0;