Index: trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 43422)
+++ trunk/src/VBox/Frontends/VirtualBox/src/medium/UIMediumManager.cpp	(revision 43424)
@@ -1097,6 +1097,9 @@
 
     /* Show Clone VD wizard: */
-    UIWizardCloneVD wizard(this, pItem->medium().medium());
-    wizard.exec();
+    UISafePointerWizard pWizard = new UIWizardCloneVD(this, pItem->medium().medium());
+    pWizard->prepare();
+    pWizard->exec();
+    if (pWizard)
+        delete pWizard;
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 43422)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 43424)
@@ -1136,6 +1136,9 @@
              && machine.GetTeleporterEnabled()))
     {
-        UIWizardFirstRun wzd(mainMachineWindow(), session().GetMachine());
-        wzd.exec();
+        UISafePointerWizard pWizard = new UIWizardFirstRun(mainMachineWindow(), session().GetMachine());
+        pWizard->prepare();
+        pWizard->exec();
+        if (pWizard)
+            delete pWizard;
     }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 43422)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp	(revision 43424)
@@ -278,7 +278,10 @@
     QString strTmpFile = strFileName;
 #endif /* !Q_WS_MAC */
-    UIWizardImportApp wizard(this, strTmpFile);
-    if (strFileName.isEmpty() || wizard.isValid())
-        wizard.exec();
+    UISafePointerWizardImportApp pWizard = new UIWizardImportApp(this, strTmpFile);
+    pWizard->prepare();
+    if (strFileName.isEmpty() || pWizard->isValid())
+        pWizard->exec();
+    if (pWizard)
+        delete pWizard;
 }
 
@@ -294,6 +297,9 @@
         names << items[i]->name();
     /* Show Export Appliance wizard: */
-    UIWizardExportApp wizard(this, names);
-    wizard.exec();
+    UISafePointerWizard pWizard = new UIWizardExportApp(this, names);
+    pWizard->prepare();
+    pWizard->exec();
+    if (pWizard)
+        delete pWizard;
 }
 
@@ -416,6 +422,9 @@
 
     /* Show Clone VM wizard: */
-    UIWizardCloneVM wizard(this, pItem->machine());
-    wizard.exec();
+    UISafePointerWizard pWizard = new UIWizardCloneVM(this, pItem->machine());
+    pWizard->prepare();
+    pWizard->exec();
+    if (pWizard)
+        delete pWizard;
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.cpp	(revision 43422)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/VBoxSnapshotsWgt.cpp	(revision 43424)
@@ -705,6 +705,9 @@
 
     /* Show Clone VM wizard: */
-    UIWizardCloneVM wzd(this, machine, snapshot);
-    wzd.exec();
+    UISafePointerWizard pWizard = new UIWizardCloneVM(this, machine, snapshot);
+    pWizard->prepare();
+    pWizard->exec();
+    if (pWizard)
+        delete pWizard;
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp	(revision 43422)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp	(revision 43424)
@@ -899,14 +899,12 @@
     else if (!selectionList().isEmpty())
         pGroup = selectionList().first()->parentItem();
+    QString strGroupName;
     if (pGroup)
-    {
-        UIWizardNewVM wizard(&vboxGlobal().selectorWnd(), fullName(pGroup));
-        wizard.exec();
-    }
-    else
-    {
-        UIWizardNewVM wizard(&vboxGlobal().selectorWnd());
-        wizard.exec();
-    }
+        strGroupName = fullName(pGroup);
+    UISafePointerWizard pWizard = new UIWizardNewVM(&vboxGlobal().selectorWnd(), strGroupName);
+    pWizard->prepare();
+    pWizard->exec();
+    if (pWizard)
+        delete pWizard;
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 43422)
+++ trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsStorage.cpp	(revision 43424)
@@ -3088,6 +3088,10 @@
     QFileInfo fileInfo(m_strMachineSettingsFilePath);
     /* Show New VD wizard: */
-    UIWizardNewVD dlg(this, QString(), fileInfo.absolutePath(), guestOSType.GetRecommendedHDD());
-    return dlg.exec() == QDialog::Accepted ? dlg.virtualDisk().GetId() : QString();
+    UISafePointerWizardNewVD pWizard = new UIWizardNewVD(this, QString(), fileInfo.absolutePath(), guestOSType.GetRecommendedHDD());
+    pWizard->prepare();
+    QString strResult = pWizard->exec() == QDialog::Accepted ? pWizard->virtualDisk().GetId() : QString();
+    if (pWizard)
+        delete pWizard;
+    return strResult;
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizard.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizard.cpp	(revision 43422)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizard.cpp	(revision 43424)
@@ -28,12 +28,4 @@
 #include "VBoxGlobal.h"
 #include "QIRichTextLabel.h"
-
-int	UIWizard::exec()
-{
-    /* Prepare wizard: */
-    prepare();
-    /* Call to base-class: */
-    return QWizard::exec();
-}
 
 void UIWizard::sltCurrentIdChanged(int iId)
@@ -243,5 +235,6 @@
 
         /* Get some (first) of those pages: */
-        UIWizardPage *pPage = qobject_cast<UIWizardPage*>(page(0));
+        QList<int> pids = pageIds();
+        UIWizardPage *pPage = qobject_cast<UIWizardPage*>(page(pids.first()));
         /* Calculate actual label width: */
         int iPageWidth = pPage->minimumWidth();
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizard.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizard.h	(revision 43422)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/UIWizard.h	(revision 43424)
@@ -20,6 +20,7 @@
 #define __UIWizard_h__
 
-/* Global includes: */
+/* Qt includes: */
 #include <QWizard>
+#include <QPointer>
 
 /* Local includes: */
@@ -54,13 +55,11 @@
     Q_OBJECT;
 
-public slots:
-
-    /* Exec slot: */
-    int	exec();
-
 public:
 
     /* Mode related stuff: */
     UIWizardMode mode() { return m_mode; }
+
+    /* Page related methods: */
+    virtual void prepare();
 
 protected slots:
@@ -82,5 +81,4 @@
     /* Page related methods: */
     void setPage(int iId, UIWizardPage *pPage);
-    virtual void prepare();
     void cleanup();
 
@@ -119,4 +117,6 @@
 };
 
+typedef QPointer<UIWizard> UISafePointerWizard;
+
 #endif // __UIWizard_h__
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportApp.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportApp.h	(revision 43422)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportApp.h	(revision 43424)
@@ -46,4 +46,7 @@
     UIWizardImportApp(QWidget *pParent, const QString &strFileName);
 
+    /* Pages related stuff: */
+    void prepare();
+
     /* Is appliance valid? */
     bool isValid() const;
@@ -70,11 +73,10 @@
     void retranslateUi();
 
-    /* Pages related stuff: */
-    void prepare();
-
     /* Variables: */
     QString m_strFileName;
 };
 
+typedef QPointer<UIWizardImportApp> UISafePointerWizardImportApp;
+
 #endif /* __UIWizardImportApp_h__ */
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.h	(revision 43422)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvd/UIWizardNewVD.h	(revision 43424)
@@ -54,4 +54,7 @@
                   UIWizardMode mode = UIWizardMode_Auto);
 
+    /* Pages related stuff: */
+    void prepare();
+
     /* Returns virtual-disk: */
     CMedium virtualDisk() const { return m_virtualDisk; }
@@ -71,7 +74,4 @@
     void retranslateUi();
 
-    /* Pages related stuff: */
-    void prepare();
-
     /* Variables: */
     QString m_strDefaultName;
@@ -81,4 +81,6 @@
 };
 
+typedef QPointer<UIWizardNewVD> UISafePointerWizardNewVD;
+
 #endif // __UIWizardNewVD_h__
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.cpp	(revision 43422)
+++ trunk/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic3.cpp	(revision 43424)
@@ -77,17 +77,21 @@
 {
     /* Create New Virtual Hard Drive wizard: */
-    UIWizardNewVD dlg(thisImp(),
-                      fieldImp("machineBaseName").toString(),
-                      fieldImp("machineFolder").toString(),
-                      fieldImp("type").value<CGuestOSType>().GetRecommendedHDD(),
-                      wizardImp()->mode());
-    if (dlg.exec() == QDialog::Accepted)
-    {
-        m_virtualDisk = dlg.virtualDisk();
+    UISafePointerWizardNewVD pWizard = new UIWizardNewVD(thisImp(),
+                                                         fieldImp("machineBaseName").toString(),
+                                                         fieldImp("machineFolder").toString(),
+                                                         fieldImp("type").value<CGuestOSType>().GetRecommendedHDD(),
+                                                         wizardImp()->mode());
+    pWizard->prepare();
+    bool fResult = false;
+    if (pWizard->exec() == QDialog::Accepted)
+    {
+        fResult = true;
+        m_virtualDisk = pWizard->virtualDisk();
         m_pDiskSelector->setCurrentItem(m_virtualDisk.GetId());
         m_pDiskPresent->click();
-        return true;
-    }
-    return false;
+    }
+    if (pWizard)
+        delete pWizard;
+    return fResult;
 }
 
