Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.cpp	(revision 79574)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.cpp	(revision 79575)
@@ -65,4 +65,47 @@
 }
 
+bool UIWizardNewCloudVM::createVSDForm()
+{
+    /* Prepare result: */
+    bool fResult = false;
+
+    /* Main API request sequence, can be interrupted after any step: */
+    do
+    {
+        /* Acquire prepared client and description: */
+        CCloudClient comClient = client();
+        CVirtualSystemDescription comDescription = vsd();
+        AssertReturn(comClient.isNotNull() && comDescription.isNotNull(), false);
+
+        /* Read Cloud Client description form: */
+        CVirtualSystemDescriptionForm comForm;
+        CProgress comProgress = comClient.GetLaunchDescriptionForm(comDescription, comForm);
+        if (!comClient.isOk())
+        {
+            msgCenter().cannotAcquireCloudClientParameter(comClient);
+            break;
+        }
+
+        /* Show "Acquire launch form" progress: */
+        msgCenter().showModalProgressDialog(comProgress, tr("Acquire launch form..."),
+                                            ":/progress_refresh_90px.png", 0, 0);
+        if (!comProgress.isOk() || comProgress.GetResultCode() != 0)
+        {
+            msgCenter().cannotAcquireCloudClientParameter(comProgress);
+            break;
+        }
+
+        /* Remember Virtual System Description Form: */
+        setVSDForm(comForm);
+
+        /* Finally, success: */
+        fResult = true;
+    }
+    while (0);
+
+    /* Return result: */
+    return fResult;
+}
+
 bool UIWizardNewCloudVM::createCloudVM()
 {
@@ -74,6 +117,6 @@
     {
         /* Acquire prepared client and description: */
-        CCloudClient comClient = field("client").value<CCloudClient>();
-        CVirtualSystemDescription comDescription = field("vsd").value<CVirtualSystemDescription>();
+        CCloudClient comClient = client();
+        CVirtualSystemDescription comDescription = vsd();
         AssertReturn(comClient.isNotNull() && comDescription.isNotNull(), false);
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.h	(revision 79574)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVM.h	(revision 79575)
@@ -24,4 +24,10 @@
 /* GUI includes: */
 #include "UIWizard.h"
+
+/* COM includes: */
+#include "COMEnums.h"
+#include "CCloudClient.h"
+#include "CVirtualSystemDescription.h"
+#include "CVirtualSystemDescriptionForm.h"
 
 /** New Cloud VM wizard. */
@@ -51,5 +57,23 @@
     virtual void prepare() /* override */;
 
-    /** Create New Cloud VM. */
+    /** Defines Cloud @a comClient object. */
+    void setClient(const CCloudClient &comClient) { m_comClient = comClient; }
+    /** Returns Cloud Client object. */
+    CCloudClient client() const { return m_comClient; }
+
+    /** Defines Virtual System @a comDescription object. */
+    void setVSD(const CVirtualSystemDescription &comDescription) { m_comVSD = comDescription; }
+    /** Returns Virtual System Description object. */
+    CVirtualSystemDescription vsd() const { return m_comVSD; }
+
+    /** Defines Virtual System Description @a comForm object. */
+    void setVSDForm(const CVirtualSystemDescriptionForm &comForm) { m_comVSDForm = comForm; }
+    /** Returns Virtual System Description Form object. */
+    CVirtualSystemDescriptionForm vsdForm() const { return m_comVSDForm; }
+
+    /** Creates VSD Form. */
+    bool createVSDForm();
+
+    /** Creates New Cloud VM. */
     bool createCloudVM();
 
@@ -58,4 +82,13 @@
     /** Handles translation event. */
     virtual void retranslateUi() /* override */;
+
+private:
+
+    /** Holds the Cloud Client object reference. */
+    CCloudClient                   m_comClient;
+    /** Holds the Virtual System Description object reference. */
+    CVirtualSystemDescription      m_comVSD;
+    /** Holds the Virtual System Description Form object reference. */
+    CVirtualSystemDescriptionForm  m_comVSDForm;
 };
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.cpp	(revision 79574)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.cpp	(revision 79575)
@@ -277,5 +277,5 @@
     m_pAccountImageList->clear();
     /* Clear Cloud Client: */
-    m_comCloudClient = CCloudClient();
+    setClient(CCloudClient());
 
     /* If profile chosen: */
@@ -286,5 +286,5 @@
         {
             /* Acquire Cloud Client: */
-            m_comCloudClient = m_comCloudProfile.CreateCloudClient();
+            CCloudClient comCloudClient = m_comCloudProfile.CreateCloudClient();
             if (!m_comCloudProfile.isOk())
             {
@@ -292,4 +292,7 @@
                 break;
             }
+
+            /* Remember Cloud Client: */
+            setClient(comCloudClient);
 
             /* Gather image names, ids and states.
@@ -301,8 +304,8 @@
 
             /* Ask for cloud custom images: */
-            CProgress comProgress = m_comCloudClient.ListImages(cloudImageStates, comNames, comIDs);
-            if (!m_comCloudClient.isOk())
-            {
-                msgCenter().cannotAcquireCloudClientParameter(m_comCloudClient);
+            CProgress comProgress = comCloudClient.ListImages(cloudImageStates, comNames, comIDs);
+            if (!comCloudClient.isOk())
+            {
+                msgCenter().cannotAcquireCloudClientParameter(comCloudClient);
                 break;
             }
@@ -345,9 +348,10 @@
 {
     /* Clear description & form properties: */
-    m_comVSD = CVirtualSystemDescription();
-    m_comVSDForm = CVirtualSystemDescriptionForm();
+    setVSD(CVirtualSystemDescription());
+    setVSDForm(CVirtualSystemDescriptionForm());
 
     /* If client created: */
-    if (m_comCloudClient.isNotNull())
+    CCloudClient comCloudClient = client();
+    if (comCloudClient.isNotNull())
     {
         /* Main API request sequence, can be interrupted after any step: */
@@ -381,34 +385,19 @@
             /* Make sure there is at least one virtual system description created: */
             AssertReturnVoid(!descriptions.isEmpty());
-            m_comVSD = descriptions.at(0);
+            CVirtualSystemDescription comVSD = descriptions.at(0);
+
+            /* Remember Virtual System Description: */
+            setVSD(comVSD);
 
             /* Add image id to virtual system description: */
-            m_comVSD.AddDescription(KVirtualSystemDescriptionType_CloudImageId, imageId(), QString());
-            if (!m_comVSD.isOk())
-            {
-                msgCenter().cannotAddVirtualSystemDescriptionValue(m_comVSD);
-                break;
-            }
-
-            /* Read Cloud Client description form: */
-            CVirtualSystemDescriptionForm comForm;
-            CProgress comLaunchDescriptionFormProgress = m_comCloudClient.GetLaunchDescriptionForm(m_comVSD, comForm);
-            if (!m_comCloudClient.isOk())
-            {
-                msgCenter().cannotAcquireCloudClientParameter(m_comCloudClient);
-                break;
-            }
-
-            /* Show "Acquire launch form" progress: */
-            msgCenter().showModalProgressDialog(comLaunchDescriptionFormProgress, UIWizardNewCloudVM::tr("Acquire launch form..."),
-                                                ":/progress_refresh_90px.png", 0, 0);
-            if (!comLaunchDescriptionFormProgress.isOk() || comLaunchDescriptionFormProgress.GetResultCode() != 0)
-            {
-                msgCenter().cannotAcquireCloudClientParameter(comLaunchDescriptionFormProgress);
-                break;
-            }
-
-            /* Remember form: */
-            m_comVSDForm = comForm;
+            comVSD.AddDescription(KVirtualSystemDescriptionType_CloudImageId, imageId(), QString());
+            if (!comVSD.isOk())
+            {
+                msgCenter().cannotAddVirtualSystemDescriptionValue(comVSD);
+                break;
+            }
+
+            /* Create Virtual System Description Form: */
+            qobject_cast<UIWizardNewCloudVM*>(wizardImp())->createVSDForm();
         }
         while (0);
@@ -487,17 +476,32 @@
 }
 
+void UIWizardNewCloudVMPage1::setClient(const CCloudClient &comClient)
+{
+    qobject_cast<UIWizardNewCloudVM*>(wizardImp())->setClient(comClient);
+}
+
 CCloudClient UIWizardNewCloudVMPage1::client() const
 {
-    return m_comCloudClient;
+    return qobject_cast<UIWizardNewCloudVM*>(wizardImp())->client();
+}
+
+void UIWizardNewCloudVMPage1::setVSD(const CVirtualSystemDescription &comDescription)
+{
+    qobject_cast<UIWizardNewCloudVM*>(wizardImp())->setVSD(comDescription);
 }
 
 CVirtualSystemDescription UIWizardNewCloudVMPage1::vsd() const
 {
-    return m_comVSD;
+    return qobject_cast<UIWizardNewCloudVM*>(wizardImp())->vsd();
+}
+
+void UIWizardNewCloudVMPage1::setVSDForm(const CVirtualSystemDescriptionForm &comForm)
+{
+    qobject_cast<UIWizardNewCloudVM*>(wizardImp())->setVSDForm(comForm);
 }
 
 CVirtualSystemDescriptionForm UIWizardNewCloudVMPage1::vsdForm() const
 {
-    return m_comVSDForm;
+    return qobject_cast<UIWizardNewCloudVM*>(wizardImp())->vsdForm();
 }
 
@@ -672,9 +676,4 @@
     connect(m_pAccountImageList, &QListWidget::currentRowChanged,
             this, &UIWizardNewCloudVMPageBasic1::completeChanged);
-
-    /* Register fields: */
-    registerField("client", this, "client");
-    registerField("vsd", this, "vsd");
-    registerField("vsdForm", this, "vsdForm");
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.h	(revision 79574)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic1.h	(revision 79575)
@@ -94,8 +94,17 @@
     /** Returns image ID. */
     QString imageId() const;
-    /** Returns Cloud Client. */
+
+    /** Defines Cloud @a comClient object. */
+    void setClient(const CCloudClient &comClient);
+    /** Returns Cloud Client object. */
     CCloudClient client() const;
+
+    /** Defines Virtual System @a comDescription object. */
+    void setVSD(const CVirtualSystemDescription &comDescription);
     /** Returns Virtual System Description object. */
     CVirtualSystemDescription vsd() const;
+
+    /** Defines Virtual System Description @a comForm object. */
+    void setVSDForm(const CVirtualSystemDescriptionForm &comForm);
     /** Returns Virtual System Description Form object. */
     CVirtualSystemDescriptionForm vsdForm() const;
@@ -105,15 +114,9 @@
 
     /** Holds the Cloud Provider Manager reference. */
-    CCloudProviderManager          m_comCloudProviderManager;
+    CCloudProviderManager  m_comCloudProviderManager;
     /** Holds the Cloud Provider object reference. */
-    CCloudProvider                 m_comCloudProvider;
+    CCloudProvider         m_comCloudProvider;
     /** Holds the Cloud Profile object reference. */
-    CCloudProfile                  m_comCloudProfile;
-    /** Holds the Cloud Client object reference. */
-    CCloudClient                   m_comCloudClient;
-    /** Holds the Virtual System Description object reference. */
-    CVirtualSystemDescription      m_comVSD;
-    /** Holds the Virtual System Description Form object reference. */
-    CVirtualSystemDescriptionForm  m_comVSDForm;
+    CCloudProfile          m_comCloudProfile;
 
     /** Holds the destination layout instance. */
@@ -144,7 +147,4 @@
 {
     Q_OBJECT;
-    Q_PROPERTY(CCloudClient client READ client);
-    Q_PROPERTY(CVirtualSystemDescription vsd READ vsd);
-    Q_PROPERTY(CVirtualSystemDescriptionForm vsdForm READ vsdForm);
 
 public:
@@ -154,4 +154,7 @@
 
 protected:
+
+    /** Allows access wizard from base part. */
+    virtual UIWizard *wizardImp() const /* override */ { return UIWizardPage::wizard(); }
 
     /** Handle any Qt @a pEvent. */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic2.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic2.cpp	(revision 79574)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic2.cpp	(revision 79575)
@@ -26,8 +26,4 @@
 #include "UIWizardNewCloudVMPageBasic2.h"
 
-/* COM includes: */
-#include "CVirtualSystemDescription.h"
-#include "CVirtualSystemDescriptionForm.h"
-
 
 /*********************************************************************************************************************************
@@ -42,8 +38,13 @@
 {
     /* Acquire VSD form: */
-    CVirtualSystemDescriptionForm comForm = fieldImp("vsdForm").value<CVirtualSystemDescriptionForm>();
+    CVirtualSystemDescriptionForm comForm = vsdForm();
     /* Make sure the properties table get the new description form: */
     if (comForm.isNotNull())
         m_pFormEditor->setVirtualSystemDescriptionForm(comForm);
+}
+
+CVirtualSystemDescriptionForm UIWizardNewCloudVMPage2::vsdForm() const
+{
+    return qobject_cast<UIWizardNewCloudVM*>(wizardImp())->vsdForm();
 }
 
@@ -107,5 +108,5 @@
 
     /* Check whether we have proper VSD form: */
-    CVirtualSystemDescriptionForm comForm = fieldImp("vsdForm").value<CVirtualSystemDescriptionForm>();
+    CVirtualSystemDescriptionForm comForm = vsdForm();
     fResult = comForm.isNotNull();
     Assert(fResult);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic2.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic2.h	(revision 79574)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageBasic2.h	(revision 79575)
@@ -40,4 +40,7 @@
     void refreshFormPropertiesTable();
 
+    /** Returns Virtual System Description Form object. */
+    CVirtualSystemDescriptionForm vsdForm() const;
+
     /** Holds the Form Editor widget instance. */
     UIFormEditorWidgetPointer  m_pFormEditor;
@@ -56,6 +59,6 @@
 protected:
 
-    /** Allows to access 'field()' from base part. */
-    virtual QVariant fieldImp(const QString &strFieldName) const /* override */ { return UIWizardPage::field(strFieldName); }
+    /** Allows access wizard from base part. */
+    virtual UIWizard *wizardImp() const /* override */ { return UIWizardPage::wizard(); }
 
     /** Handles translation event. */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageExpert.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageExpert.cpp	(revision 79574)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageExpert.cpp	(revision 79575)
@@ -176,9 +176,4 @@
     connect(m_pAccountImageList, &QListWidget::currentRowChanged,
             this, &UIWizardNewCloudVMPageExpert::sltHandleInstanceListChange);
-
-    /* Register fields: */
-    registerField("client", this, "client");
-    registerField("vsd", this, "vsd");
-    registerField("vsdForm", this, "vsdForm");
 }
 
@@ -246,5 +241,5 @@
               && !imageId().isNull()
               && vsd().isNotNull()
-              && vsdForm().isNotNull();
+              && UIWizardNewCloudVMPage1::vsdForm().isNotNull();
 
     /* Return result: */
@@ -261,5 +256,5 @@
 
     /* Check whether we have proper VSD form: */
-    CVirtualSystemDescriptionForm comForm = fieldImp("vsdForm").value<CVirtualSystemDescriptionForm>();
+    CVirtualSystemDescriptionForm comForm = UIWizardNewCloudVMPage1::vsdForm();
     fResult = comForm.isNotNull();
     Assert(fResult);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageExpert.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageExpert.h	(revision 79574)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/newcloudvm/UIWizardNewCloudVMPageExpert.h	(revision 79575)
@@ -35,7 +35,4 @@
 {
     Q_OBJECT;
-    Q_PROPERTY(CCloudClient client READ client);
-    Q_PROPERTY(CVirtualSystemDescription vsd READ vsd);
-    Q_PROPERTY(CVirtualSystemDescriptionForm vsdForm READ vsdForm);
 
 public:
@@ -46,6 +43,6 @@
 protected:
 
-    /** Allows to access 'field()' from base part. */
-    virtual QVariant fieldImp(const QString &strFieldName) const /* override */ { return UIWizardPage::field(strFieldName); }
+    /** Allows access wizard from base part. */
+    virtual UIWizard *wizardImp() const /* override */ { return UIWizardPage::wizard(); }
 
     /** Handle any Qt @a pEvent. */
