diff --git a/setup/class_setup.inc b/setup/class_setup.inc
index 1496ccef576643f7abc79babff6e7167025310b7..ea42be777b5d54ce6ba7751765d7a94ee37795fc 100644
--- a/setup/class_setup.inc
+++ b/setup/class_setup.inc
@@ -50,13 +50,13 @@ class setup
   function __construct()
   {
     $this->o_steps = array(
-      new Step_Welcome(),
-      new Step_Language(),
-      new Step_Checks(),
-      new Step_Ldap(),
-      new Step_Config_before_init(),
-      new Step_Migrate(),
-      new Step_Finish(),
+      new Step_Welcome($this),
+      new Step_Language($this),
+      new Step_Checks($this),
+      new Step_Ldap($this),
+      new Step_Config_before_init($this),
+      new Step_Migrate($this),
+      new Step_Finish($this),
     );
 
     $this->i_steps = count($this->o_steps);
@@ -67,11 +67,6 @@ class setup
       header("Location: index.php");
       exit();
     }
-
-    foreach ($this->o_steps as &$step) {
-      $step->parent = &$this;
-    }
-    unset($step);
   }
 
   function execute()
@@ -318,7 +313,7 @@ class setup
 
   function reBuildConfigStep ($completed = NULL)
   {
-    $this->o_steps[$this->i_config] = new Step_Config($this->captured_values);
+    $this->o_steps[$this->i_config] = new Step_Config($this, $this->captured_values);
     if ($completed !== NULL) {
       $this->o_steps[$this->i_config]->is_completed = $completed;
     }
diff --git a/setup/class_setupStep.inc b/setup/class_setupStep.inc
index 72856350241da914c306a4ec3ad685f9230d9205..608abbf98d040e942d83ea03e04c43e90353cab6 100644
--- a/setup/class_setupStep.inc
+++ b/setup/class_setupStep.inc
@@ -35,9 +35,9 @@ class setupStep extends simplePlugin
     return array();
   }
 
-  function __construct()
+  function __construct($parent)
   {
-    parent::__construct();
+    parent::__construct(NULL, NULL, $parent);
     $this->update_strings();
   }
 
diff --git a/setup/class_setupStep_Config.inc b/setup/class_setupStep_Config.inc
index d88495a5e97ad4ec289b653e5e2f38c85b9dfc88..bc5881998a124b13f17075e2a496579fb267a986 100644
--- a/setup/class_setupStep_Config.inc
+++ b/setup/class_setupStep_Config.inc
@@ -47,10 +47,10 @@ class Step_Config extends configInLdap
     return array();
   }
 
-  function __construct($cv)
+  function __construct($parent, $cv)
   {
     global $config;
-    parent::__construct(CONFIGRDN.$config->current['BASE']);
+    parent::__construct(CONFIGRDN.$config->current['BASE'], NULL, $parent, TRUE);
 
     $this->attributesInfo['miscellaneous']['class'] = array('invisible');
     $this->attributesInfo['debug']['class'] = array('invisible');
diff --git a/setup/class_setupStep_Language.inc b/setup/class_setupStep_Language.inc
index 5b45b66b4162d8a83f26fc2f9273ce3d648d8663..cfd3e4cd7ff555400ca771ce779c13121de62f8a 100644
--- a/setup/class_setupStep_Language.inc
+++ b/setup/class_setupStep_Language.inc
@@ -47,9 +47,9 @@ class Step_Language extends setupStep
     );
   }
 
-  function __construct()
+  function __construct($parent)
   {
-    parent::__construct();
+    parent::__construct($parent);
     $this->lang = get_browser_language();
     $this->attributesAccess['lang_selected']->setSize(20);
   }
diff --git a/setup/class_setupStep_Ldap.inc b/setup/class_setupStep_Ldap.inc
index ceadacb1d1833246fc1b8e0d17e36fbe9d20a18e..80c366da4de58dc402407fac506a3fcdc5b68ad4 100644
--- a/setup/class_setupStep_Ldap.inc
+++ b/setup/class_setupStep_Ldap.inc
@@ -91,9 +91,9 @@ class Step_Ldap extends setupStep
     );
   }
 
-  function __construct()
+  function __construct($parent)
   {
-    parent::__construct();
+    parent::__construct($parent);
     $this->update_strings();
     $this->attributesAccess['base']->setSubmitForm(TRUE);
     $this->attributesAccess['admin']->setLinearRendering(TRUE);
diff --git a/setup/class_setupStep_Migrate.inc b/setup/class_setupStep_Migrate.inc
index bdfbc4c06828d33538df1517d08431eb030c2459..3847f75187add221b97107c543cbc85d501d3a5a 100644
--- a/setup/class_setupStep_Migrate.inc
+++ b/setup/class_setupStep_Migrate.inc
@@ -212,9 +212,9 @@ class Step_Migrate extends setupStep
     );
   }
 
-  function __construct()
+  function __construct($parent)
   {
-    parent::__construct();
+    parent::__construct($parent);
     $this->fill_defaultRoles();
   }
 
diff --git a/setup/class_setupStep_Welcome.inc b/setup/class_setupStep_Welcome.inc
index 2b07a795705d5df77ceb64859f9324fe0970671e..a2a2d2874a0fda488188d6a43e067b377b57354c 100644
--- a/setup/class_setupStep_Welcome.inc
+++ b/setup/class_setupStep_Welcome.inc
@@ -35,9 +35,9 @@ class Step_Welcome extends setupStep
     );
   }
 
-  function __construct()
+  function __construct($parent)
   {
-    parent::__construct();
+    parent::__construct($parent);
 
     $this->is_enabled     = TRUE;
     $this->is_active      = TRUE;