diff --git a/cdist/config_install.py b/cdist/config_install.py
index 43bfb7e4..baf76f0a 100644
--- a/cdist/config_install.py
+++ b/cdist/config_install.py
@@ -75,32 +75,45 @@ class ConfigInstall(object):
                                                          self.context.local.type_path):
             yield cdist_object
 
+    def iterate_once(self):
+        """
+            Iterate over the objects once - helper method for 
+            iterate_until_finished
+        """
+        objects_changed  = False
+
+        for cdist_object in self.object_list():
+            if cdist_object.requirements_unfinished(cdist_object.requirements):
+                """We cannot do anything for this poor object"""
+                continue
+        
+            if cdist_object.state == core.CdistObject.STATE_UNDEF:
+                """Prepare the virgin object"""
+        
+                self.object_prepare(cdist_object)
+                objects_changed = True
+        
+            if cdist_object.requirements_unfinished(cdist_object.autorequire):
+                """The previous step created objects we depend on - wait for them"""
+                continue
+        
+            if cdist_object.state == core.CdistObject.STATE_PREPARED:
+                self.object_run(cdist_object)
+                objects_changed = True
+
+        return objects_changed
+
+
     def iterate_until_finished(self):
-        # Continue process until no new objects are created anymore
+        """
+            Go through all objects and solve them
+            one after another
+        """
 
         objects_changed = True
 
         while objects_changed:
-            objects_changed  = False
-
-            for cdist_object in self.object_list():
-                if cdist_object.requirements_unfinished(cdist_object.requirements):
-                    """We cannot do anything for this poor object"""
-                    continue
-
-                if cdist_object.state == core.CdistObject.STATE_UNDEF:
-                    """Prepare the virgin object"""
-
-                    self.object_prepare(cdist_object)
-                    objects_changed = True
-
-                if cdist_object.requirements_unfinished(cdist_object.autorequire):
-                    """The previous step created objects we depend on - wait for them"""
-                    continue
-
-                if cdist_object.state == core.CdistObject.STATE_PREPARED:
-                    self.object_run(cdist_object)
-                    objects_changed = True
+            objects_changed = self.iterate_once()
 
         # Check whether all objects have been finished
         unfinished_objects = []