diff --git a/features.module b/features.module
index fe17e4f..dc3c9c6 100644
--- a/features.module
+++ b/features.module
@@ -309,6 +309,9 @@ function features_modules_disabled($modules) {
 /**
  * Implements hook_modules_enabled().
  */
+/**
+ * Implements hook_modules_enabled().
+ */
 function features_modules_enabled($modules) {
   // Go through all modules and gather features that can be enabled.
   $items = array();
@@ -319,9 +322,18 @@ function features_modules_enabled($modules) {
   }
 
   if (!empty($items)) {
+    // Need to include any new files.
+    // @todo Redo function so can take in list of modules to include.
+    features_include_defaults(NULL, TRUE);
     _features_restore('enable', $items);
     // Rebuild the list of features includes.
     features_include(TRUE);
+    // Reorders components to match hook order and removes non-existant.
+    $all_components = array_keys(features_get_components());
+    foreach ($items as $module => $components) {
+      $items[$module] = array_intersect($all_components, $components);
+    }
+    _features_restore('rebuild', $items);
   }
 }
 
