diff --git a/lib/Drupal/configuration/Config/ContentTypeConfiguration.php b/lib/Drupal/configuration/Config/ContentTypeConfiguration.php
index c419191..7e5051c 100644
--- a/lib/Drupal/configuration/Config/ContentTypeConfiguration.php
+++ b/lib/Drupal/configuration/Config/ContentTypeConfiguration.php
@@ -84,6 +84,25 @@ class ContentTypeConfiguration extends Configuration {
   }
 
   /**
+   * Overrides Drupal\configuration\Config\Configuration::alterDependencies().
+   */
+  public static function alterDependencies(Configuration $config, &$stack) {
+    if ($config->getComponent() == 'permission') {
+
+      foreach (node_permissions_get_configured_types() as $type) {
+        foreach (array_keys(node_list_permissions($type)) as $permission) {
+          $data = $config->getData();
+          if ($permission == $data['permission']) {
+            $content_type = ConfigurationManagement::createConfigurationInstance('content_type.' . $type);
+            $config->addToDependencies($content_type);
+            break;
+          }
+        }
+      }
+    }
+  }
+
+  /**
    * Implements Drupal\configuration\Config\Configuration::prepareBuild().
    */
   protected function prepareBuild() {
diff --git a/lib/Drupal/configuration/Config/ImageStyleConfiguration.php b/lib/Drupal/configuration/Config/ImageStyleConfiguration.php
index a406549..eb65cd9 100644
--- a/lib/Drupal/configuration/Config/ImageStyleConfiguration.php
+++ b/lib/Drupal/configuration/Config/ImageStyleConfiguration.php
@@ -79,12 +79,10 @@ class ImageStyleConfiguration extends Configuration {
         foreach ($field['display'] as $display) {
           if (!empty($display['settings']) && !empty($display['settings']['image_style'])) {
             $identifier = $display['settings']['image_style'];
-            if (empty($stack['image_style.' . $identifier])) {
-              $image_style = new ImageStyleConfiguration($identifier);
-              $image_style->build();
-              $config->addToDependencies($image_style);
-              $stack['image_style.' . $identifier] = TRUE;
-            }
+
+            $image_style = new ImageStyleConfiguration($identifier);
+            $image_style->build();
+            $config->addToDependencies($image_style);
           }
         }
       }
diff --git a/lib/Drupal/configuration/Config/MenuLinkConfiguration.php b/lib/Drupal/configuration/Config/MenuLinkConfiguration.php
index a4681ae..c03eb9e 100644
--- a/lib/Drupal/configuration/Config/MenuLinkConfiguration.php
+++ b/lib/Drupal/configuration/Config/MenuLinkConfiguration.php
@@ -132,12 +132,9 @@ class MenuLinkConfiguration extends Configuration {
         $parent_menulink = menu_link_load($menulink['plid']);
         if ($parent_menulink) {
           $identifier = sha1(str_replace('-', '_', $parent_menulink['menu_name']) . ':' . $parent_menulink['link_path']);
-          if (empty($stack['menu_link.' . $identifier])) {
-            $menulink_config = new MenuLinkConfiguration($identifier);
-            $menulink_config->build();
-            $config->addToDependencies($menulink_config);
-            $stack['menu_link.' . $identifier] = TRUE;
-          }
+          $menulink_config = new MenuLinkConfiguration($identifier);
+          $menulink_config->build();
+          $config->addToDependencies($menulink_config);
         }
       }
     }
diff --git a/lib/Drupal/configuration/Config/PageManagerHandlerConfiguration.php b/lib/Drupal/configuration/Config/PageManagerHandlerConfiguration.php
index fd3bb29..eb847d4 100644
--- a/lib/Drupal/configuration/Config/PageManagerHandlerConfiguration.php
+++ b/lib/Drupal/configuration/Config/PageManagerHandlerConfiguration.php
@@ -48,12 +48,11 @@ class PageManagerHandlerConfiguration extends CtoolsConfiguration {
     if ($config->getComponent() == 'page_manager_pages' && !$config->broken) {
       $config_data = $config->getData();
       $id = 'page_manager_handlers.page_' . $config_data->name . '_panel_context';
-      if (empty($stack[$id])) {
-        $page_handler = ConfigurationManagement::createConfigurationInstance($id);
-        $page_handler->build();
-        $config->addToDependencies($page_handler);
-        $stack[$id] = TRUE;
-      }
+
+      $page_handler = ConfigurationManagement::createConfigurationInstance($id);
+      $page_handler->build();
+      $config->addToDependencies($page_handler);
+
     }
   }
 
diff --git a/lib/Drupal/configuration/Config/PermissionConfiguration.php b/lib/Drupal/configuration/Config/PermissionConfiguration.php
index d1da728..8ecaf78 100644
--- a/lib/Drupal/configuration/Config/PermissionConfiguration.php
+++ b/lib/Drupal/configuration/Config/PermissionConfiguration.php
@@ -65,38 +65,22 @@ class PermissionConfiguration extends Configuration {
    * Overrides Drupal\configuration\Config\Configuration::alterDependencies().
    */
   public static function alterDependencies(Configuration $config, &$stack) {
-    if ($config->getComponent() == 'permission') {
-
-      foreach (node_permissions_get_configured_types() as $type) {
-        foreach (array_keys(node_list_permissions($type)) as $permission) {
-          $data = $config->getData();
-          if ($permission == $data['permission']) {
-            $content_type = ConfigurationManagement::createConfigurationInstance('content_type.' . $type);
-            $config->addToDependencies($content_type);
-            break;
-          }
-        }
-      }
-    }
     if ($config->getComponent() == 'content_type') {
       $permissions = node_list_permissions($config->getIdentifier());
 
       foreach (array_keys($permissions) as $permission) {
         $identifier = str_replace(' ', '_', $permission);
-        // Avoid include multiple times the same dependency.
-        if (empty($stack['permission.' . $identifier])) {
-          $perm = new PermissionConfiguration($identifier);
-          $perm->build();
-
-          // Add the content type as a dependency of the permission.
-          $perm->addToDependencies($config);
-
-          // Add the permission as a child configuration of the content type
-          // The permission is not required to load the content type but is
-          // a nice to have.
-          $config->addToOptionalConfigurations($perm);
-          $stack['permission.' . $identifier] = TRUE;
-        }
+
+        $perm = new PermissionConfiguration($identifier);
+        $perm->build();
+
+        // Add the content type as a dependency of the permission.
+        $perm->addToDependencies($config);
+
+        // Add the permission as a child configuration of the content type
+        // The permission is not required to load the content type but is
+        // a nice to have.
+        $config->addToOptionalConfigurations($perm);
       }
     }
     elseif ($config->getComponent() == 'text_format') {
@@ -104,20 +88,17 @@ class PermissionConfiguration extends Configuration {
       $permission = filter_permission_name($format);
       if (!empty($permission)) {
         $identifier = str_replace(' ', '_', $permission);
-        // Avoid include multiple times the same dependency.
-        if (empty($stack['permission.' . $identifier])) {
-          $perm = new PermissionConfiguration($identifier);
-          $perm->build();
-
-          // Add the text format as a dependency of the permission.
-          $perm->addToDependencies($config);
-
-          // Add the permission as a child configuration of the filter
-          // The permission is not required to load the filter format but is
-          // a nice to have.
-          $config->addToOptionalConfigurations($perm);
-          $stack['permission.' . $identifier] = TRUE;
-        }
+
+        $perm = new PermissionConfiguration($identifier);
+        $perm->build();
+
+        // Add the text format as a dependency of the permission.
+        $perm->addToDependencies($config);
+
+        // Add the permission as a child configuration of the filter
+        // The permission is not required to load the filter format but is
+        // a nice to have.
+        $config->addToOptionalConfigurations($perm);
       }
     }
   }
diff --git a/lib/Drupal/configuration/Config/TextFormatConfiguration.php b/lib/Drupal/configuration/Config/TextFormatConfiguration.php
index 6376894..9eb3525 100644
--- a/lib/Drupal/configuration/Config/TextFormatConfiguration.php
+++ b/lib/Drupal/configuration/Config/TextFormatConfiguration.php
@@ -58,6 +58,28 @@ class TextFormatConfiguration extends Configuration {
   }
 
   /**
+   * Overrides Drupal\configuration\Config\Configuration::alterDependencies().
+   */
+  public static function alterDependencies(Configuration $config, &$stack) {
+    if ($config->getComponent() == 'permission') {
+
+    // Generate permissions for each text format. Warn the administrator that any
+    // of them are potentially unsafe.
+    foreach (filter_formats() as $format) {
+      $permission = filter_permission_name($format);
+      if (!empty($permission)) {
+          $data = $config->getData();
+          if ($permission == $data['permission']) {
+            $text_format = ConfigurationManagement::createConfigurationInstance('text_format.' . $format->format);
+            $config->addToDependencies($text_format);
+            break;
+          }
+        }
+      }
+    }
+  }
+
+  /**
    * Implements Drupal\configuration\Config\Configuration::prepareBuild().
    */
   protected function prepareBuild() {
diff --git a/lib/Drupal/configuration/Config/VariableConfiguration.php b/lib/Drupal/configuration/Config/VariableConfiguration.php
index ff7d96a..00fc5fc 100644
--- a/lib/Drupal/configuration/Config/VariableConfiguration.php
+++ b/lib/Drupal/configuration/Config/VariableConfiguration.php
@@ -93,18 +93,15 @@ class VariableConfiguration extends Configuration {
       $fields = field_info_instances($entity_type, $config->getIdentifier());
       foreach ($variables as $variable) {
         $identifier = $variable . '_' . $config->getIdentifier();
-        // Avoid include multiple times the same dependency.
-        if (empty($stack['variable.' . $identifier])) {
-          $in_db = db_query("SELECT 1 FROM {variable} WHERE name = :name", array(':name' => $identifier))->fetchField();
-          // Some variables are not in the database and their values are
-          // provided by the second paramenter of variable_get.
-          // Only inform about configurations that are indeed in the database.
-          if ($in_db) {
-            $var_config = new VariableConfiguration($identifier);
-            $var_config->build();
-            $config->addToDependencies($var_config);
-            $stack['variable.' . $identifier] = TRUE;
-          }
+
+        $in_db = db_query("SELECT 1 FROM {variable} WHERE name = :name", array(':name' => $identifier))->fetchField();
+        // Some variables are not in the database and their values are
+        // provided by the second paramenter of variable_get.
+        // Only inform about configurations that are indeed in the database.
+        if ($in_db) {
+          $var_config = new VariableConfiguration($identifier);
+          $var_config->build();
+          $config->addToDependencies($var_config);
         }
       }
     }
diff --git a/lib/Drupal/configuration/Config/ViewConfiguration.php b/lib/Drupal/configuration/Config/ViewConfiguration.php
index 0f9335e..70e1716 100644
--- a/lib/Drupal/configuration/Config/ViewConfiguration.php
+++ b/lib/Drupal/configuration/Config/ViewConfiguration.php
@@ -105,12 +105,11 @@ class ViewConfiguration extends CtoolsConfiguration {
               // Display block from a view.
               case 'views':
                 $config_id = 'views_view.' . $id;
-                if (empty($stack[$config_id])) {
-                  $view = ConfigurationManagement::createConfigurationInstance($config_id);
-                  $view->build();
-                  $config->addToDependencies($view);
-                  $stack[$config_id] = TRUE;
-                }
+
+                $view = ConfigurationManagement::createConfigurationInstance($config_id);
+                $view->build();
+                $config->addToDependencies($view);
+
                 $config->addToDependencies($view);
                 break;
             }
@@ -118,23 +117,19 @@ class ViewConfiguration extends CtoolsConfiguration {
           // A view added directly.
           case 'views':
             $config_id = 'views_view.' . $object->subtype;
-            if (empty($stack[$config_id])) {
-              $view = ConfigurationManagement::createConfigurationInstance($config_id);
-              $view->build();
-              $config->addToDependencies($view);
-              $stack[$config_id] = TRUE;
-            }
+
+            $view = ConfigurationManagement::createConfigurationInstance($config_id);
+            $view->build();
+            $config->addToDependencies($view);
             break;
           // A view added using the Views content panes module.
           case 'views_panes':
             list($subtype, ) = explode('-', $object->subtype);
             $config_id = 'views_view.' . $subtype;
-            if (empty($stack[$config_id])) {
-              $view = ConfigurationManagement::createConfigurationInstance($config_id);
-              $view->build();
-              $config->addToDependencies($view);
-            }
-            $stack[$config_id] = TRUE;
+
+            $view = ConfigurationManagement::createConfigurationInstance($config_id);
+            $view->build();
+            $config->addToDependencies($view);
             break;
         }
       }
diff --git a/lib/Drupal/configuration/Config/VocabularyConfiguration.php b/lib/Drupal/configuration/Config/VocabularyConfiguration.php
index 62082b1..72f47d2 100644
--- a/lib/Drupal/configuration/Config/VocabularyConfiguration.php
+++ b/lib/Drupal/configuration/Config/VocabularyConfiguration.php
@@ -71,12 +71,11 @@ class VocabularyConfiguration extends Configuration {
       $field = $config->data['field_config'];
       if ($field['type'] == 'taxonomy_term_reference' && $field['settings']['allowed_values']) {
         foreach ($field['settings']['allowed_values'] as $vocabulary) {
-          if (empty($stack['vocabulary.' . $vocabulary['vocabulary']])) {
-            $vocabulary_conf = new VocabularyConfiguration($vocabulary['vocabulary']);
-            $vocabulary_conf->build();
-            $config->addToDependencies($vocabulary_conf);
-            $stack['vocabulary.' . $vocabulary['vocabulary']] = TRUE;
-          }
+
+          $vocabulary_conf = new VocabularyConfiguration($vocabulary['vocabulary']);
+          $vocabulary_conf->build();
+          $config->addToDependencies($vocabulary_conf);
+
         }
       }
     }
diff --git a/lib/Drupal/configuration/Config/WysiwygConfiguration.php b/lib/Drupal/configuration/Config/WysiwygConfiguration.php
index a09d868..a551d55 100644
--- a/lib/Drupal/configuration/Config/WysiwygConfiguration.php
+++ b/lib/Drupal/configuration/Config/WysiwygConfiguration.php
@@ -68,15 +68,10 @@ class WysiwygConfiguration extends Configuration {
         // Text format may vanish without deleting the wysiwyg profile.
         if (isset($formats[$format]) && $format == $config->getIdentifier()) {
           $identifier = $format;
-          if (empty($stack['wysiwyg.' . $identifier])) {
-            $wysiwig_profile = new WysiwygConfiguration($identifier);
-            $wysiwig_profile->build();
-
-            $config->addToOptionalConfigurations($wysiwig_profile);
-
-            $wysiwig_profile->addToDependencies($config);
-            $stack['wysiwyg.' . $identifier] = TRUE;
-          }
+          $wysiwig_profile = new WysiwygConfiguration($identifier);
+          $wysiwig_profile->build();
+          $config->addToOptionalConfigurations($wysiwig_profile);
+          $wysiwig_profile->addToDependencies($config);
         }
       }
     }
