Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.h	(revision 44018)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsElement.h	(revision 44019)
@@ -49,7 +49,4 @@
 
 signals:
-
-    /* Notifier: Build stuff: */
-    void sigBuildDone();
 
     /* Notifiers: Hover stuff: */
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsGroup.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsGroup.cpp	(revision 44018)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsGroup.cpp	(revision 44019)
@@ -30,6 +30,4 @@
     , m_pBuildStep(0)
 {
-    /* Prepare connections: */
-    prepareConnections();
 }
 
@@ -97,7 +95,5 @@
 
         /* Create next build-step: */
-        m_pBuildStep = new UIBuildStep(this, strStepId, iStepNumber + 1);
-        connect(pSet, SIGNAL(sigBuildDone()), m_pBuildStep, SLOT(sltStepDone()), Qt::QueuedConnection);
-        connect(m_pBuildStep, SIGNAL(sigStepDone(QString, int)), this, SLOT(sltBuildStep(QString, int)), Qt::QueuedConnection);
+        m_pBuildStep = new UIBuildStep(this, pSet, strStepId, iStepNumber + 1);
 
         /* Build set: */
@@ -108,4 +104,6 @@
         /* Update model: */
         model()->updateLayout();
+        /* Notify listener about build done: */
+        emit sigBuildDone();
     }
 }
@@ -173,9 +171,4 @@
         default: AssertMsgFailed(("Invalid item type!")); break;
     }
-}
-
-void UIGDetailsGroup::prepareConnections()
-{
-    connect(this, SIGNAL(sigBuildStep(QString, int)), this, SLOT(sltBuildStep(QString, int)), Qt::QueuedConnection);
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsGroup.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsGroup.h	(revision 44018)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsGroup.h	(revision 44019)
@@ -31,9 +31,4 @@
 {
     Q_OBJECT;
-
-signals:
-
-    /* Notifier: Build stuff: */
-    void sigBuildStep(QString strStepId, int iStepNumber);
 
 public:
@@ -78,5 +73,4 @@
 
     /* Helpers: Prepare stuff: */
-    void prepareConnections();
     void loadSettings();
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsItem.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsItem.cpp	(revision 44018)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsItem.cpp	(revision 44019)
@@ -46,4 +46,8 @@
         setAcceptHoverEvents(true);
     }
+
+    /* Setup connections: */
+    connect(this, SIGNAL(sigBuildStep(QString, int)),
+            this, SLOT(sltBuildStep(QString, int)), Qt::QueuedConnection);
 }
 
@@ -97,4 +101,9 @@
 }
 
+void UIGDetailsItem::sltBuildStep(QString, int)
+{
+    AssertMsgFailed(("This item doesn't support building!"));
+}
+
 /* static */
 void UIGDetailsItem::configurePainterShape(QPainter *pPainter,
@@ -144,9 +153,12 @@
 }
 
-UIBuildStep::UIBuildStep(QObject *pParent, const QString &strStepId, int iStepNumber)
+UIBuildStep::UIBuildStep(QObject *pParent, QObject *pBuildObject, const QString &strStepId, int iStepNumber)
     : QObject(pParent)
     , m_strStepId(strStepId)
     , m_iStepNumber(iStepNumber)
 {
+    /* Prepare connections: */
+    connect(pBuildObject, SIGNAL(sigBuildDone()), this, SLOT(sltStepDone()), Qt::QueuedConnection);
+    connect(this, SIGNAL(sigStepDone(QString, int)), pParent, SLOT(sltBuildStep(QString, int)), Qt::QueuedConnection);
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsItem.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsItem.h	(revision 44018)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsItem.h	(revision 44019)
@@ -47,4 +47,10 @@
     Q_OBJECT;
 
+signals:
+
+    /* Notifiers: Build stuff: */
+    void sigBuildStep(QString strStepId, int iStepNumber);
+    void sigBuildDone();
+
 public:
 
@@ -77,4 +83,9 @@
     virtual void updateLayout() = 0;
 
+protected slots:
+
+    /* Handler: Build stuff: */
+    virtual void sltBuildStep(QString strStepId, int iStepNumber);
+
 protected:
 
@@ -104,5 +115,5 @@
 
     /* Constructor: */
-    UIBuildStep(QObject *pParent, const QString &strStepId, int iStepNumber);
+    UIBuildStep(QObject *pParent, QObject *pBuildObject, const QString &strStepId, int iStepNumber);
 
 private slots:
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsSet.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsSet.cpp	(revision 44018)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsSet.cpp	(revision 44019)
@@ -143,7 +143,5 @@
         {
             /* Create next build-step: */
-            m_pBuildStep = new UIBuildStep(this, strStepId, iStepNumber + 1);
-            connect(pElement, SIGNAL(sigBuildDone()), m_pBuildStep, SLOT(sltStepDone()), Qt::QueuedConnection);
-            connect(m_pBuildStep, SIGNAL(sigStepDone(QString, int)), this, SLOT(sltBuildStep(QString, int)), Qt::QueuedConnection);
+            m_pBuildStep = new UIBuildStep(this, pElement, strStepId, iStepNumber + 1);
 
             /* Build element: */
@@ -165,5 +163,5 @@
         foreach (UIGDetailsItem *pItem, items())
             pItem->update();
-        /* Notify group about build done: */
+        /* Notify listener about build done: */
         emit sigBuildDone();
     }
@@ -316,7 +314,4 @@
 void UIGDetailsSet::prepareConnections()
 {
-    /* Build connections: */
-    connect(this, SIGNAL(sigBuildStep(QString, int)), this, SLOT(sltBuildStep(QString, int)), Qt::QueuedConnection);
-
     /* Global-events connections: */
     connect(gVBoxEvents, SIGNAL(sigMachineStateChange(QString, KMachineState)), this, SLOT(sltMachineStateChange(QString)));
Index: trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsSet.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsSet.h	(revision 44018)
+++ trunk/src/VBox/Frontends/VirtualBox/src/selector/graphics/details/UIGDetailsSet.h	(revision 44019)
@@ -36,10 +36,4 @@
 {
     Q_OBJECT;
-
-signals:
-
-    /* Notifiers: Build stuff: */
-    void sigBuildStep(QString strSetId, int iStepNumber);
-    void sigBuildDone();
 
 public:
