diff --git a/profiles/commerce_kickstart/.travis.yml b/profiles/commerce_kickstart/.travis.yml
index b0f87ed..4920153 100644
--- a/profiles/commerce_kickstart/.travis.yml
+++ b/profiles/commerce_kickstart/.travis.yml
@@ -69,6 +69,7 @@ install:
   - cd drupal
   - drush make --yes profiles/commerce_kickstart/drupal-org-core.make --prepare-install
   - drush make --yes profiles/commerce_kickstart/drupal-org.make --no-core --contrib-destination=profiles/commerce_kickstart
+  - drush dl diff
   - cd ../
 
   # Verify that all the .make files will work on Drupal.org.
@@ -100,10 +101,15 @@ before_script:
   - if [[ "$UPGRADE" == none ]]; then cd drupal; else cd commerce_kickstart-$UPGRADE; fi
   - drush si commerce_kickstart --db-url=mysql://root:@127.0.0.1/drupal --account-name=admin --account-pass=admin --site-mail=admin@example.com --site-name="Commerce Kickstart" --yes
   - drush pm-disable dblog --yes
+
+  # HACK Revert all features - needed because features limits rebuilds triggered by drush
+  - if [[ "$UPGRADE" == none ]]; then drush fra -y; fi
+
+  # Switching directory
   - cd ../drupal
 
   # If we're an upgrade test, run the upgrade process.
-  - if [[ "$UPGRADE" != none ]]; then cp -a ../commerce_kickstart-$UPGRADE/sites/default/* sites/default/ && drush updb --yes; fi
+  - if [[ "$UPGRADE" != none ]]; then cp -a ../commerce_kickstart-$UPGRADE/sites/default/* sites/default/ && drush updb --yes; drush cc all; fi
 
   # Start server
   - drush runserver --server=builtin 8888 > /dev/null 2>&1 &
@@ -112,6 +118,10 @@ before_script:
 
 script:
 
+  # If this isn't an upgrade, we test if any features are overridden.
+  - if [[ "$UPGRADE" == none ]]; then ../../scripts/check-overridden.sh; fi
+
+  # Run Behat tests.
   - ./bin/behat --config behat.travis.yml
 
 notifications:
diff --git a/profiles/commerce_kickstart/commerce_kickstart.install b/profiles/commerce_kickstart/commerce_kickstart.install
index 238f3e6..a70a198 100644
--- a/profiles/commerce_kickstart/commerce_kickstart.install
+++ b/profiles/commerce_kickstart/commerce_kickstart.install
@@ -298,6 +298,9 @@ function commerce_kickstart_configure_store_form_submit(&$form, &$form_state) {
   variable_set('commerce_kickstart_choose_tax_country', $form_state['values']['commerce_kickstart_choose_tax_country']);
   variable_set('commerce_default_currency', $form_state['values']['commerce_default_currency']);
   variable_set('commerce_enabled_currencies', array($form_state['values']['commerce_default_currency'] => $form_state['values']['commerce_default_currency']));
+  // Kickstart features rebuild themselves in their hook_enable() hooks, disable
+  // features_modules_enabled() until the end of install.
+  variable_set('features_rebuild_on_module_install', FALSE);
 }
 
 /**
@@ -483,6 +486,9 @@ function commerce_kickstart_install_finished(&$install_state) {
   variable_set('install_profile', drupal_get_profile());
   variable_set('install_task', 'done');
 
+  // Restore features behavior.
+  variable_set('features_rebuild_on_module_install', TRUE);
+
   // Flush all caches to ensure that any full bootstraps during the installer
   // do not leave stale cached data, and that any content types or other items
   // registered by the install profile are registered correctly.
@@ -688,6 +694,37 @@ function commerce_kickstart_install() {
 
   // Check DFP User Agreement.
   variable_set('commerce_kickstart_dfp_eula', TRUE);
+
+  // Creating needed fields
+  $field_image = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_image',
+    'foreign keys' => array(
+      'fid' => array(
+        'columns' => array(
+          'fid' => 'fid',
+        ),
+        'table' => 'file_managed',
+      ),
+    ),
+    'indexes' => array(
+      'fid' => array(
+        0 => 'fid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'image',
+    'settings' => array(
+      'default_image' => 0,
+      'uri_scheme' => 'public',
+    ),
+    'translatable' => 1,
+    'type' => 'image',
+  );
+  field_create_field($field_image);
 }
 
 /**
@@ -1164,4 +1201,4 @@ function commerce_kickstart_update_7220() {
   variable_del('chosen_minimum');
   variable_set('chosen_minimum_single', 'Always Apply');
   variable_set('chosen_minimum_multiple', 'Always Apply');
-}
\ No newline at end of file
+}
diff --git a/profiles/commerce_kickstart/commerce_kickstart.profile b/profiles/commerce_kickstart/commerce_kickstart.profile
index b545af5..e6be071 100644
--- a/profiles/commerce_kickstart/commerce_kickstart.profile
+++ b/profiles/commerce_kickstart/commerce_kickstart.profile
@@ -261,3 +261,40 @@ function commerce_kickstart_crumbs_get_info() {
 
   return $crumbs;
 }
+
+/**
+ * Rebuilds a feature using the same logic as features_modules_enabled().
+ *
+ * Called from the hook_enable() of every Kickstart feature.
+ *
+ * features_modules_enabled() runs too late, so when a feature's hook_enable()
+ * or hook_install() runs, the feature hasn't been rebuild yet, no exported
+ * structures exist in the system and can't be modified.
+ * It also rebuilds all features at once, which makes it prone to timeouts.
+ * This is why Kickstart disables features_modules_enabled() and rebuilds
+ * each feature manually in its hook_enable() hook.
+ *
+ * Some features components do not provide dependency sorting and require a
+ * manual revert, or require for unknown reasons (menu_links.) The $revert
+ * array provides Kickstart modules a method to revert specific components.
+ */
+function commerce_kickstart_rebuild_feature($module, $revert = array()) {
+  $feature = features_load_feature($module, TRUE);
+  $items[$module] = array_keys($feature->info['features']);
+  // Need to include any new files.
+  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);
+
+  // Revert any components, if specified.
+  if (!empty($revert)) {
+    features_revert(array($module => $revert));
+  }
+}
diff --git a/profiles/commerce_kickstart/drupal-org.make b/profiles/commerce_kickstart/drupal-org.make
index 5ce886e..8e904ec 100644
--- a/profiles/commerce_kickstart/drupal-org.make
+++ b/profiles/commerce_kickstart/drupal-org.make
@@ -19,13 +19,10 @@ projects[views_bulk_operations][version] = 3.2
 projects[views_bulk_operations][subdir] = "contrib"
 projects[addressfield][version] = 1.0
 projects[addressfield][subdir] = "contrib"
-projects[features][version] = 1.0
-projects[features][patch][] = "http://drupal.org/files/1572578-part-one.patch"
-projects[features][patch][] = "http://drupal.org/files/1597186-1-features-do-not-cache-includes.patch"
-projects[features][patch][] = "http://drupal.org/files/927566-multiple-link_path.patch"
-projects[features][patch][] = "http://drupal.org/files/1669720-fix-features-flush-cache.patch"
-projects[features][patch][] = "http://drupal.org/files/1588596-11-features-array_diff_assoc_recursive.patch"
+projects[features][version] = "2.3"
 projects[features][subdir] = "contrib"
+projects[features][patch][] = "http://drupal.org/files/issues/1572578-27-allow-rebuild-to-be-disabled.patch"
+projects[features][patch][] = "http://drupal.org/files/issues/features-fix-modules-enabled-2143765-1.patch"
 projects[strongarm][version] = 2.0
 projects[strongarm][subdir] = "contrib"
 projects[taxonomy_menu][version] = 1.5
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.features.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.features.inc
index f561c99..aa78c65 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.features.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.features.inc
@@ -7,8 +7,7 @@
 /**
  * Implements hook_ctools_plugin_api().
  */
-function commerce_kickstart_block_ctools_plugin_api() {
-  list($module, $api) = func_get_args();
+function commerce_kickstart_block_ctools_plugin_api($module = NULL, $api = NULL) {
   if ($module == "strongarm" && $api == "strongarm") {
     return array("version" => "1");
   }
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.features.menu_links.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.features.menu_links.inc
index 42e0ddd..6f47670 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.features.menu_links.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.features.menu_links.inc
@@ -21,11 +21,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'identifier' => 'menu-footer-navigation_about-us:node/2',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '-50',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => -50,
+    'customized' => 0,
     'parent_identifier' => 'menu-footer-navigation_company-info:<nolink>',
   );
   // Exported menu link: menu-footer-navigation_company-info:<nolink>
@@ -41,11 +42,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'toolbar_break' => 0,
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '1',
-    'expanded' => '1',
-    'weight' => '-50',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 1,
+    'expanded' => 1,
+    'weight' => -50,
+    'customized' => 0,
   );
   // Exported menu link: menu-footer-navigation_our-security-policy:node/8
   $menu_links['menu-footer-navigation_our-security-policy:node/8'] = array(
@@ -60,11 +62,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'identifier' => 'menu-footer-navigation_our-security-policy:node/8',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '-49',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => -49,
+    'customized' => 0,
     'parent_identifier' => 'menu-footer-navigation_security--privacy:<nolink>',
   );
   // Exported menu link: menu-footer-navigation_press-links:node/6
@@ -78,11 +81,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'identifier' => 'menu-footer-navigation_press-links:node/6',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '-49',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => -49,
+    'customized' => 0,
     'parent_identifier' => 'menu-footer-navigation_company-info:<nolink>',
   );
   // Exported menu link: menu-footer-navigation_security--privacy:<nolink>
@@ -98,11 +102,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'toolbar_break' => 0,
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '1',
-    'expanded' => '1',
-    'weight' => '-48',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 1,
+    'expanded' => 1,
+    'weight' => -48,
+    'customized' => 0,
   );
   // Exported menu link: menu-footer-navigation_service--support:<nolink>
   $menu_links['menu-footer-navigation_service--support:<nolink>'] = array(
@@ -117,11 +122,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'toolbar_break' => 0,
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '1',
-    'expanded' => '1',
-    'weight' => '-49',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 1,
+    'expanded' => 1,
+    'weight' => -49,
+    'customized' => 0,
   );
   // Exported menu link: menu-footer-navigation_service-agreements:node/7
   $menu_links['menu-footer-navigation_service-agreements:node/7'] = array(
@@ -136,11 +142,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'identifier' => 'menu-footer-navigation_service-agreements:node/7',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '-50',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => -50,
+    'customized' => 0,
     'parent_identifier' => 'menu-footer-navigation_service--support:<nolink>',
   );
   // Exported menu link: menu-footer-navigation_shipping--returns:<nolink>
@@ -156,11 +163,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'toolbar_break' => 0,
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '1',
-    'expanded' => '1',
-    'weight' => '-47',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 1,
+    'expanded' => 1,
+    'weight' => -47,
+    'customized' => 0,
   );
   // Exported menu link: menu-footer-navigation_shipping-fees:node/5
   $menu_links['menu-footer-navigation_shipping-fees:node/5'] = array(
@@ -175,11 +183,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'identifier' => 'menu-footer-navigation_shipping-fees:node/5',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '1',
-    'expanded' => '0',
-    'weight' => '-50',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 1,
+    'expanded' => 0,
+    'weight' => -50,
+    'customized' => 0,
     'parent_identifier' => 'menu-footer-navigation_shipping--returns:<nolink>',
   );
   // Exported menu link: menu-footer-navigation_terms-of-use:node/3
@@ -193,11 +202,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'identifier' => 'menu-footer-navigation_terms-of-use:node/3',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '-50',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => -50,
+    'customized' => 0,
     'parent_identifier' => 'menu-footer-navigation_security--privacy:<nolink>',
   );
   // Exported menu link: menu-payment-methods_american-express:<front>
@@ -217,11 +227,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'identifier' => 'menu-payment-methods_american-express:<front>',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '1',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '-47',
+    'hidden' => 0,
+    'external' => 1,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => -47,
+    'customized' => 0,
   );
   // Exported menu link: menu-payment-methods_mastercard:<front>
   $menu_links['menu-payment-methods_mastercard:<front>'] = array(
@@ -240,11 +251,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'identifier' => 'menu-payment-methods_mastercard:<front>',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '1',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '-50',
+    'hidden' => 0,
+    'external' => 1,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => -50,
+    'customized' => 0,
   );
   // Exported menu link: menu-payment-methods_paypal:<front>
   $menu_links['menu-payment-methods_paypal:<front>'] = array(
@@ -263,11 +275,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'identifier' => 'menu-payment-methods_paypal:<front>',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '1',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '-49',
+    'hidden' => 0,
+    'external' => 1,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => -49,
+    'customized' => 0,
   );
   // Exported menu link: menu-payment-methods_visa:<front>
   $menu_links['menu-payment-methods_visa:<front>'] = array(
@@ -286,11 +299,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'identifier' => 'menu-payment-methods_visa:<front>',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '1',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '-48',
+    'hidden' => 0,
+    'external' => 1,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => -48,
+    'customized' => 0,
   );
   // Exported menu link: secondary-navigation_about:node/2
   $menu_links['secondary-navigation_about:node/2'] = array(
@@ -302,11 +316,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'identifier' => 'secondary-navigation_about:node/2',
     ),
     'module' => 'system',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '2',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => 2,
+    'customized' => 0,
   );
   // Exported menu link: secondary-navigation_contact:node/1
   $menu_links['secondary-navigation_contact:node/1'] = array(
@@ -318,11 +333,12 @@ function commerce_kickstart_block_menu_default_menu_links() {
       'identifier' => 'secondary-navigation_contact:node/1',
     ),
     'module' => 'system',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '1',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => 1,
+    'customized' => 0,
   );
   // Translatables
   // Included for use with string extractors like potx.
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.info b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.info
index 8f48a46..7f91593 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.info
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.info
@@ -2,7 +2,6 @@ name = Commerce Kickstart Block
 description = Provides blocks and menus.
 core = 7.x
 package = Commerce Kickstart
-php = 5.2.4
 dependencies[] = block
 dependencies[] = ctools
 dependencies[] = features
@@ -10,7 +9,7 @@ dependencies[] = menu
 dependencies[] = special_menu_items
 dependencies[] = strongarm
 features[ctools][] = strongarm:strongarm:1
-features[features_api][] = api:1
+features[features_api][] = api:2
 features[menu_custom][] = menu-footer-navigation
 features[menu_custom][] = menu-payment-methods
 features[menu_custom][] = secondary-navigation
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.install b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.install
index c04f0b0..5a341f1 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.install
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_block/commerce_kickstart_block.install
@@ -8,19 +8,7 @@
  * Implements hook_enable().
  */
 function commerce_kickstart_block_enable() {
-  // Rebuild the features static caches.
-  features_include(TRUE);
-
-  $module = 'commerce_kickstart_block';
-  $feature = feature_load($module);
-  $items[$module] = array_keys($feature->info['features']);
-  _features_restore('enable', $items);
-  _features_restore('rebuild', $items);
-
-  // For some unknown reason, we need to manually trigger the rebuild of the
-  // menu links, in features otherwise they won't appear.
-  // @todo Investigate.
-  features_revert(array($module => array('menu_links')));
+  commerce_kickstart_rebuild_feature('commerce_kickstart_block', array('menu_links'));
 
   $default_theme = variable_get('theme_default', 'omega_kickstart');
   // Make sure that the region list is populated for our theme.
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.field_base.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.field_base.inc
new file mode 100644
index 0000000..1aaded5
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.field_base.inc
@@ -0,0 +1,82 @@
+<?php
+/**
+ * @file
+ * commerce_kickstart_blog.features.field_base.inc
+ */
+
+/**
+ * Implements hook_field_default_field_bases().
+ */
+function commerce_kickstart_blog_field_default_field_bases() {
+  $field_bases = array();
+
+  // Exported field_base: 'field_blog_category'
+  $field_bases['field_blog_category'] = array(
+    'active' => 1,
+    'cardinality' => -1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_blog_category',
+    'foreign keys' => array(
+      'tid' => array(
+        'columns' => array(
+          'tid' => 'tid',
+        ),
+        'table' => 'taxonomy_term_data',
+      ),
+    ),
+    'indexes' => array(
+      'tid' => array(
+        0 => 'tid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'taxonomy',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => array(
+          'vocabulary' => 'blog_category',
+          'parent' => 0,
+        ),
+      ),
+    ),
+    'translatable' => 0,
+    'type' => 'taxonomy_term_reference',
+  );
+
+  // Exported field_base: 'field_tags'
+  $field_bases['field_tags'] = array(
+    'active' => 1,
+    'cardinality' => -1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_tags',
+    'foreign keys' => array(
+      'tid' => array(
+        'columns' => array(
+          'tid' => 'tid',
+        ),
+        'table' => 'taxonomy_term_data',
+      ),
+    ),
+    'indexes' => array(
+      'tid' => array(
+        0 => 'tid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'taxonomy',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => array(
+          'vocabulary' => 'tags',
+          'parent' => 0,
+        ),
+      ),
+    ),
+    'translatable' => 0,
+    'type' => 'taxonomy_term_reference',
+  );
+
+  return $field_bases;
+}
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.field_instance.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.field_instance.inc
new file mode 100644
index 0000000..2a43211
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.field_instance.inc
@@ -0,0 +1,297 @@
+<?php
+/**
+ * @file
+ * commerce_kickstart_blog.features.field_instance.inc
+ */
+
+/**
+ * Implements hook_field_default_field_instances().
+ */
+function commerce_kickstart_blog_field_default_field_instances() {
+  $field_instances = array();
+
+  // Exported field_instance: 'node-blog_post-body'
+  $field_instances['node-blog_post-body'] = array(
+    'bundle' => 'blog_post',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 1,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(
+          'trim_length' => 600,
+        ),
+        'type' => 'text_summary_or_trimmed',
+        'weight' => 1,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => '',
+    'field_name' => 'body',
+    'label' => 'Description',
+    'required' => 0,
+    'settings' => array(
+      'display_summary' => 1,
+      'text_processing' => 1,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'rows' => 20,
+        'summary_rows' => 5,
+      ),
+      'type' => 'text_textarea_with_summary',
+      'weight' => 1,
+    ),
+  );
+
+  // Exported field_instance: 'node-blog_post-field_blog_category'
+  $field_instances['node-blog_post-field_blog_category'] = array(
+    'bundle' => 'blog_post',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 2,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 2,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_blog_category',
+    'label' => 'Category',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 0,
+      'module' => 'taxonomy',
+      'settings' => array(
+        'autocomplete_path' => 'taxonomy/autocomplete',
+        'size' => 60,
+      ),
+      'type' => 'taxonomy_autocomplete',
+      'weight' => 3,
+    ),
+  );
+
+  // Exported field_instance: 'node-blog_post-field_image'
+  $field_instances['node-blog_post-field_image'] = array(
+    'bundle' => 'blog_post',
+    'deleted' => 0,
+    'description' => 'Upload an image to go with this article.',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => '',
+          'image_style' => 'blog_full',
+        ),
+        'type' => 'image',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'hidden',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => 'content',
+          'image_style' => 'blog_medium',
+        ),
+        'type' => 'image',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_image',
+    'label' => 'Image',
+    'required' => 1,
+    'settings' => array(
+      'alt_field' => 1,
+      'default_image' => 0,
+      'file_directory' => 'field/image/blog_post',
+      'file_extensions' => 'png gif jpg jpeg',
+      'max_filesize' => '',
+      'max_resolution' => '',
+      'min_resolution' => '',
+      'title_field' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'image',
+      'settings' => array(
+        'preview_image_style' => 'thumbnail',
+        'progress_indicator' => 'throbber',
+      ),
+      'type' => 'image_image',
+      'weight' => 2,
+    ),
+  );
+
+  // Exported field_instance: 'node-blog_post-field_tags'
+  $field_instances['node-blog_post-field_tags'] = array(
+    'bundle' => 'blog_post',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => 'Enter a comma-separated list of words to describe your content.',
+    'display' => array(
+      'default' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 3,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 3,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_tags',
+    'label' => 'Tags',
+    'required' => FALSE,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'taxonomy',
+      'settings' => array(
+        'autocomplete_path' => 'taxonomy/autocomplete',
+        'size' => 60,
+      ),
+      'type' => 'taxonomy_autocomplete',
+      'weight' => 4,
+    ),
+  );
+
+  // Exported field_instance: 'node-blog_post-title_field'
+  $field_instances['node-blog_post-title_field'] = array(
+    'bundle' => 'blog_post',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 4,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'h2',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => 1,
+    'settings' => array(
+      'hide_label' => array(
+        'entity' => 0,
+        'page' => 0,
+      ),
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Translatables
+  // Included for use with string extractors like potx.
+  t('Category');
+  t('Description');
+  t('Enter a comma-separated list of words to describe your content.');
+  t('Image');
+  t('Tags');
+  t('Title');
+  t('Upload an image to go with this article.');
+
+  return $field_instances;
+}
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.inc
index 101ff4b..eabd469 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.inc
@@ -7,35 +7,17 @@
 /**
  * Implements hook_ctools_plugin_api().
  */
-function commerce_kickstart_blog_ctools_plugin_api() {
-  list($module, $api) = func_get_args();
+function commerce_kickstart_blog_ctools_plugin_api($module = NULL, $api = NULL) {
   if ($module == "strongarm" && $api == "strongarm") {
     return array("version" => "1");
   }
 }
 
 /**
- * Implements hook_node_info().
- */
-function commerce_kickstart_blog_node_info() {
-  $items = array(
-    'blog_post' => array(
-      'name' => t('Blog Post'),
-      'base' => 'node_content',
-      'description' => t('Use <em>blog post</em> to write regular content.'),
-      'has_title' => '1',
-      'title_label' => t('Title'),
-      'help' => '',
-    ),
-  );
-  return $items;
-}
-
-/**
  * Implements hook_views_api().
  */
-function commerce_kickstart_blog_views_api() {
-  return array("version" => "3.0");
+function commerce_kickstart_blog_views_api($module = NULL, $api = NULL) {
+  return array("api" => "3.0");
 }
 
 /**
@@ -58,12 +40,13 @@ function commerce_kickstart_blog_image_default_styles() {
         'module' => 'image',
         'name' => 'image_scale_and_crop',
         'data' => array(
-          'width' => '940',
-          'height' => '380',
+          'width' => 940,
+          'height' => 380,
         ),
-        'weight' => '1',
+        'weight' => 1,
       ),
     ),
+    'label' => 'blog_full',
   );
 
   // Exported image style: blog_medium.
@@ -80,13 +63,31 @@ function commerce_kickstart_blog_image_default_styles() {
         'module' => 'image',
         'name' => 'image_scale_and_crop',
         'data' => array(
-          'width' => '430',
-          'height' => '300',
+          'width' => 430,
+          'height' => 300,
         ),
-        'weight' => '1',
+        'weight' => 1,
       ),
     ),
+    'label' => 'blog_medium',
   );
 
   return $styles;
 }
+
+/**
+ * Implements hook_node_info().
+ */
+function commerce_kickstart_blog_node_info() {
+  $items = array(
+    'blog_post' => array(
+      'name' => t('Blog Post'),
+      'base' => 'node_content',
+      'description' => t('Use <em>blog post</em> to write regular content.'),
+      'has_title' => '1',
+      'title_label' => t('Title'),
+      'help' => '',
+    ),
+  );
+  return $items;
+}
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.taxonomy.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.taxonomy.inc
index 96f9fba..5c7a860 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.taxonomy.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.features.taxonomy.inc
@@ -13,17 +13,17 @@ function commerce_kickstart_blog_taxonomy_default_vocabularies() {
       'name' => 'Blog category',
       'machine_name' => 'blog_category',
       'description' => '',
-      'hierarchy' => '0',
+      'hierarchy' => 0,
       'module' => 'taxonomy',
-      'weight' => '0',
+      'weight' => 0,
     ),
     'tags' => array(
       'name' => 'Tags',
       'machine_name' => 'tags',
       'description' => 'Use tags to group blog posts on similar topics.',
-      'hierarchy' => '0',
+      'hierarchy' => 0,
       'module' => 'taxonomy',
-      'weight' => '0',
+      'weight' => 0,
     ),
   );
 }
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.info b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.info
index cd13a32..5387d35 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.info
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.info
@@ -2,7 +2,6 @@ name = Commerce Kickstart Blog
 description = Provides the blog_post content type and related functionality.
 core = 7.x
 package = Commerce Kickstart
-php = 5.2.4
 dependencies[] = commerce_kickstart_migrate
 dependencies[] = ctools
 dependencies[] = features
@@ -12,16 +11,19 @@ dependencies[] = menu
 dependencies[] = options
 dependencies[] = strongarm
 dependencies[] = taxonomy
+dependencies[] = text
 dependencies[] = title
 dependencies[] = views
 features[ctools][] = strongarm:strongarm:1
 features[ctools][] = views:views_default:3.0
-features[features_api][] = api:1
-features[field][] = node-blog_post-body
-features[field][] = node-blog_post-field_blog_category
-features[field][] = node-blog_post-field_image
-features[field][] = node-blog_post-field_tags
-features[field][] = node-blog_post-title_field
+features[features_api][] = api:2
+features[field_base][] = field_blog_category
+features[field_base][] = field_tags
+features[field_instance][] = node-blog_post-body
+features[field_instance][] = node-blog_post-field_blog_category
+features[field_instance][] = node-blog_post-field_image
+features[field_instance][] = node-blog_post-field_tags
+features[field_instance][] = node-blog_post-title_field
 features[image][] = blog_full
 features[image][] = blog_medium
 features[node][] = blog_post
@@ -43,4 +45,7 @@ features[variable][] = node_submitted_blog_post
 features[variable][] = pathauto_node_blog_post_pattern
 features[views_view][] = blog
 features[views_view][] = blog_category_list
+features_exclude[field_base][body] = body
+features_exclude[field_base][title_field] = title_field
+features_exclude[field_base][field_image] = field_image
 files[] = commerce_kickstart_blog.migrate.inc
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.install b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.install
index 3c9d857..1f1c96e 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.install
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.install
@@ -4,13 +4,7 @@
  * Implements hook_enable().
  */
 function commerce_kickstart_blog_enable() {
-  // Rebuild the feature.
-  features_include(TRUE);
-  $module = 'commerce_kickstart_blog';
-  $feature = feature_load($module);
-  $items[$module] = array_keys($feature->info['features']);
-  _features_restore('enable', $items);
-  _features_restore('rebuild', $items);
+  commerce_kickstart_rebuild_feature('commerce_kickstart_blog');
 
   drupal_static_reset();
   $default_theme = variable_get('theme_default', 'omega_kickstart');
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.views_default.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.views_default.inc
index 36402b3..e328299 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.views_default.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_blog/commerce_kickstart_blog.views_default.inc
@@ -291,7 +291,7 @@ function commerce_kickstart_blog_views_default_views() {
   $handler->display->display_options['menu']['name'] = 'secondary-navigation';
   $export['blog'] = $view;
 
-  $view = new view;
+  $view = new view();
   $view->name = 'blog_category_list';
   $view->description = '';
   $view->tag = 'default';
@@ -304,6 +304,7 @@ function commerce_kickstart_blog_views_default_views() {
   /* Display: Master */
   $handler = $view->new_display('default', 'Master', 'default');
   $handler->display->display_options['title'] = 'Categories';
+  $handler->display->display_options['use_more_always'] = FALSE;
   $handler->display->display_options['access']['type'] = 'perm';
   $handler->display->display_options['cache']['type'] = 'none';
   $handler->display->display_options['query']['type'] = 'views_query';
@@ -316,17 +317,15 @@ function commerce_kickstart_blog_views_default_views() {
   $handler->display->display_options['empty']['area']['id'] = 'area';
   $handler->display->display_options['empty']['area']['table'] = 'views';
   $handler->display->display_options['empty']['area']['field'] = 'area';
-  $handler->display->display_options['empty']['area']['empty'] = FALSE;
   $handler->display->display_options['empty']['area']['content'] = 'No categories found.';
   $handler->display->display_options['empty']['area']['format'] = 'plain_text';
-  $handler->display->display_options['empty']['area']['tokenize'] = 0;
   /* Relationship: Taxonomy term: Representative node */
   $handler->display->display_options['relationships']['tid_representative']['id'] = 'tid_representative';
   $handler->display->display_options['relationships']['tid_representative']['table'] = 'taxonomy_term_data';
   $handler->display->display_options['relationships']['tid_representative']['field'] = 'tid_representative';
-  $handler->display->display_options['relationships']['tid_representative']['required'] = 1;
+  $handler->display->display_options['relationships']['tid_representative']['required'] = TRUE;
   $handler->display->display_options['relationships']['tid_representative']['subquery_sort'] = 'node.nid';
-  $handler->display->display_options['relationships']['tid_representative']['subquery_regenerate'] = 1;
+  $handler->display->display_options['relationships']['tid_representative']['subquery_regenerate'] = TRUE;
   $handler->display->display_options['relationships']['tid_representative']['subquery_view'] = '';
   $handler->display->display_options['relationships']['tid_representative']['subquery_namespace'] = '';
   /* Field: Taxonomy term: Term ID */
@@ -335,52 +334,18 @@ function commerce_kickstart_blog_views_default_views() {
   $handler->display->display_options['fields']['tid']['field'] = 'tid';
   $handler->display->display_options['fields']['tid']['label'] = '';
   $handler->display->display_options['fields']['tid']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['tid']['alter']['alter_text'] = 0;
-  $handler->display->display_options['fields']['tid']['alter']['make_link'] = 0;
-  $handler->display->display_options['fields']['tid']['alter']['absolute'] = 0;
-  $handler->display->display_options['fields']['tid']['alter']['external'] = 0;
-  $handler->display->display_options['fields']['tid']['alter']['replace_spaces'] = 0;
-  $handler->display->display_options['fields']['tid']['alter']['trim_whitespace'] = 0;
-  $handler->display->display_options['fields']['tid']['alter']['nl2br'] = 0;
-  $handler->display->display_options['fields']['tid']['alter']['word_boundary'] = 1;
-  $handler->display->display_options['fields']['tid']['alter']['ellipsis'] = 1;
-  $handler->display->display_options['fields']['tid']['alter']['more_link'] = 0;
-  $handler->display->display_options['fields']['tid']['alter']['strip_tags'] = 0;
-  $handler->display->display_options['fields']['tid']['alter']['trim'] = 0;
-  $handler->display->display_options['fields']['tid']['alter']['html'] = 0;
   $handler->display->display_options['fields']['tid']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['tid']['element_default_classes'] = 1;
-  $handler->display->display_options['fields']['tid']['hide_empty'] = 0;
-  $handler->display->display_options['fields']['tid']['empty_zero'] = 0;
-  $handler->display->display_options['fields']['tid']['hide_alter_empty'] = 1;
   $handler->display->display_options['fields']['tid']['separator'] = '';
-  $handler->display->display_options['fields']['tid']['format_plural'] = 0;
   /* Field: Taxonomy term: Name */
   $handler->display->display_options['fields']['name']['id'] = 'name';
   $handler->display->display_options['fields']['name']['table'] = 'taxonomy_term_data';
   $handler->display->display_options['fields']['name']['field'] = 'name';
   $handler->display->display_options['fields']['name']['label'] = '';
-  $handler->display->display_options['fields']['name']['alter']['alter_text'] = 0;
-  $handler->display->display_options['fields']['name']['alter']['make_link'] = 1;
+  $handler->display->display_options['fields']['name']['alter']['make_link'] = TRUE;
   $handler->display->display_options['fields']['name']['alter']['path'] = 'blog/category/[tid]';
-  $handler->display->display_options['fields']['name']['alter']['absolute'] = 0;
-  $handler->display->display_options['fields']['name']['alter']['external'] = 0;
-  $handler->display->display_options['fields']['name']['alter']['replace_spaces'] = 0;
-  $handler->display->display_options['fields']['name']['alter']['trim_whitespace'] = 0;
-  $handler->display->display_options['fields']['name']['alter']['nl2br'] = 0;
-  $handler->display->display_options['fields']['name']['alter']['word_boundary'] = 0;
-  $handler->display->display_options['fields']['name']['alter']['ellipsis'] = 0;
-  $handler->display->display_options['fields']['name']['alter']['more_link'] = 0;
-  $handler->display->display_options['fields']['name']['alter']['strip_tags'] = 0;
-  $handler->display->display_options['fields']['name']['alter']['trim'] = 0;
-  $handler->display->display_options['fields']['name']['alter']['html'] = 0;
+  $handler->display->display_options['fields']['name']['alter']['word_boundary'] = FALSE;
+  $handler->display->display_options['fields']['name']['alter']['ellipsis'] = FALSE;
   $handler->display->display_options['fields']['name']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['name']['element_default_classes'] = 1;
-  $handler->display->display_options['fields']['name']['hide_empty'] = 0;
-  $handler->display->display_options['fields']['name']['empty_zero'] = 0;
-  $handler->display->display_options['fields']['name']['hide_alter_empty'] = 1;
-  $handler->display->display_options['fields']['name']['link_to_taxonomy'] = 0;
-  $handler->display->display_options['fields']['name']['convert_spaces'] = 0;
   /* Filter criterion: Taxonomy vocabulary: Machine name */
   $handler->display->display_options['filters']['machine_name']['id'] = 'machine_name';
   $handler->display->display_options['filters']['machine_name']['table'] = 'taxonomy_vocabulary';
@@ -394,7 +359,6 @@ function commerce_kickstart_blog_views_default_views() {
   $handler->display->display_options['defaults']['style_plugin'] = FALSE;
   $handler->display->display_options['style_plugin'] = 'grid';
   $handler->display->display_options['style_options']['columns'] = '2';
-  $handler->display->display_options['style_options']['fill_single_line'] = 1;
   $handler->display->display_options['defaults']['style_options'] = FALSE;
   $handler->display->display_options['defaults']['row_plugin'] = FALSE;
   $handler->display->display_options['row_plugin'] = 'fields';
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.field_base.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.field_base.inc
new file mode 100644
index 0000000..2282c01
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.field_base.inc
@@ -0,0 +1,130 @@
+<?php
+/**
+ * @file
+ * commerce_kickstart_lite_product.features.field_base.inc
+ */
+
+/**
+ * Implements hook_field_default_field_bases().
+ */
+function commerce_kickstart_lite_product_field_default_field_bases() {
+  $field_bases = array();
+
+  // Exported field_base: 'commerce_price'
+  $field_bases['commerce_price'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(
+      0 => 'commerce_product',
+    ),
+    'field_name' => 'commerce_price',
+    'foreign keys' => array(),
+    'indexes' => array(
+      'currency_price' => array(
+        0 => 'amount',
+        1 => 'currency_code',
+      ),
+    ),
+    'locked' => 1,
+    'module' => 'commerce_price',
+    'settings' => array(),
+    'translatable' => 0,
+    'type' => 'commerce_price',
+  );
+
+  // Exported field_base: 'field_images'
+  $field_bases['field_images'] = array(
+    'active' => 1,
+    'cardinality' => -1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_images',
+    'foreign keys' => array(
+      'fid' => array(
+        'columns' => array(
+          'fid' => 'fid',
+        ),
+        'table' => 'file_managed',
+      ),
+    ),
+    'indexes' => array(
+      'fid' => array(
+        0 => 'fid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'image',
+    'settings' => array(
+      'default_image' => 0,
+      'uri_scheme' => 'public',
+    ),
+    'translatable' => 0,
+    'type' => 'image',
+  );
+
+  // Exported field_base: 'field_product'
+  $field_bases['field_product'] = array(
+    'active' => 1,
+    'cardinality' => -1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_product',
+    'foreign keys' => array(
+      'product_id' => array(
+        'columns' => array(
+          'product_id' => 'product_id',
+        ),
+        'table' => 'commerce_product',
+      ),
+    ),
+    'indexes' => array(
+      'product_id' => array(
+        0 => 'product_id',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'commerce_product_reference',
+    'settings' => array(
+      'options_list_limit' => NULL,
+    ),
+    'translatable' => 0,
+    'type' => 'commerce_product_reference',
+  );
+
+  // Exported field_base: 'field_product_category'
+  $field_bases['field_product_category'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_product_category',
+    'foreign keys' => array(
+      'tid' => array(
+        'columns' => array(
+          'tid' => 'tid',
+        ),
+        'table' => 'taxonomy_term_data',
+      ),
+    ),
+    'indexes' => array(
+      'tid' => array(
+        0 => 'tid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'taxonomy',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => array(
+          'vocabulary' => 'product_category',
+          'parent' => 0,
+        ),
+      ),
+    ),
+    'translatable' => 0,
+    'type' => 'taxonomy_term_reference',
+  );
+
+  return $field_bases;
+}
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.field_instance.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.field_instance.inc
new file mode 100644
index 0000000..05f1760
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.field_instance.inc
@@ -0,0 +1,501 @@
+<?php
+/**
+ * @file
+ * commerce_kickstart_lite_product.features.field_instance.inc
+ */
+
+/**
+ * Implements hook_field_default_field_instances().
+ */
+function commerce_kickstart_lite_product_field_default_field_instances() {
+  $field_instances = array();
+
+  // Exported field_instance: 'commerce_product-product-commerce_price'
+  $field_instances['commerce_product-product-commerce_price'] = array(
+    'bundle' => 'product',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 4,
+      ),
+      'commerce_line_item_display' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 2,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'line_item' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_extra_price_formatters',
+        'settings' => array(
+          'alternative_text_for_zero_price' => '',
+          'calculation' => TRUE,
+          'prefix' => 'From',
+          'suffix' => '',
+          'text_format' => 'plain_text',
+          'whole_numbers_only' => FALSE,
+        ),
+        'type' => 'commerce_price_prefix_suffix',
+        'weight' => 3,
+      ),
+      'node_teaser' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'token' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'commerce_price',
+    'label' => 'Price',
+    'required' => TRUE,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'commerce_price',
+      'settings' => array(
+        'currency_code' => 'default',
+      ),
+      'type' => 'commerce_price_full',
+      'weight' => 0,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-product-field_images'
+  $field_instances['commerce_product-product-field_images'] = array(
+    'bundle' => 'product',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => '',
+          'image_style' => 'product_thumbnail',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => '',
+          'image_style' => 'product_full',
+        ),
+        'type' => 'image',
+        'weight' => 3,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => 'content',
+          'image_style' => 'product_medium',
+        ),
+        'type' => 'image_delta',
+        'weight' => 1,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'fences_wrapper' => 'figure',
+    'field_name' => 'field_images',
+    'label' => 'Images',
+    'required' => 0,
+    'settings' => array(
+      'alt_field' => 0,
+      'default_image' => 0,
+      'file_directory' => '',
+      'file_extensions' => 'png gif jpg jpeg',
+      'max_filesize' => '',
+      'max_resolution' => '',
+      'min_resolution' => '',
+      'title_field' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'image',
+      'settings' => array(
+        'preview_image_style' => 'thumbnail',
+        'progress_indicator' => 'throbber',
+      ),
+      'type' => 'image_image',
+      'weight' => 40,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-product-title_field'
+  $field_instances['commerce_product-product-title_field'] = array(
+    'bundle' => 'product',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 3,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 6,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 2,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'fences_wrapper' => 'h2',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => TRUE,
+    'settings' => array(
+      'hide_label' => array(
+        'entity' => FALSE,
+        'page' => FALSE,
+      ),
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Exported field_instance: 'node-product_display-body'
+  $field_instances['node-product_display-body'] = array(
+    'bundle' => 'product_display',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 2,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 6,
+      ),
+      'teaser' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(
+          'trim_length' => 600,
+        ),
+        'type' => 'text_summary_or_trimmed',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => '',
+    'field_name' => 'body',
+    'label' => 'Body',
+    'required' => 0,
+    'settings' => array(
+      'display_summary' => 0,
+      'text_processing' => 1,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'rows' => 20,
+        'summary_rows' => 5,
+      ),
+      'type' => 'text_textarea_with_summary',
+      'weight' => 31,
+    ),
+  );
+
+  // Exported field_instance: 'node-product_display-field_product'
+  $field_instances['node-product_display-field_product'] = array(
+    'bundle' => 'product_display',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_cart',
+        'settings' => array(
+          'combine' => 1,
+          'default_quantity' => 1,
+          'line_item_type' => 'product',
+          'show_quantity' => 1,
+          'show_single_product_attributes' => 0,
+        ),
+        'type' => 'commerce_cart_add_to_cart_form',
+        'weight' => 3,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 7,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'div',
+    'field_name' => 'field_product',
+    'label' => 'Product',
+    'required' => 1,
+    'settings' => array(
+      'field_injection' => 1,
+      'referenceable_types' => array(
+        'product' => 'product',
+      ),
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'inline_entity_form',
+      'settings' => array(
+        'fields' => array(),
+        'type_settings' => array(
+          'allow_existing' => 0,
+          'autogenerate_title' => 1,
+          'delete_references' => 1,
+          'match_operator' => 'CONTAINS',
+          'use_variation_language' => 0,
+        ),
+      ),
+      'type' => 'inline_entity_form',
+      'weight' => 33,
+    ),
+  );
+
+  // Exported field_instance: 'node-product_display-field_product_category'
+  $field_instances['node-product_display-field_product_category'] = array(
+    'bundle' => 'product_display',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'inline',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 6,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_product_category',
+    'label' => 'Product category',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 32,
+    ),
+  );
+
+  // Exported field_instance: 'node-product_display-title_field'
+  $field_instances['node-product_display-title_field'] = array(
+    'bundle' => 'product_display',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'hidden',
+        'module' => 'title',
+        'settings' => array(
+          'title_class' => '',
+          'title_link' => 'content',
+          'title_style' => '_none',
+        ),
+        'type' => 'title_linked',
+        'weight' => 1,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'h2',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => TRUE,
+    'settings' => array(
+      'hide_label' => array(
+        'entity' => FALSE,
+        'page' => FALSE,
+      ),
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Translatables
+  // Included for use with string extractors like potx.
+  t('Body');
+  t('Images');
+  t('Price');
+  t('Product');
+  t('Product category');
+  t('Title');
+
+  return $field_instances;
+}
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.inc
index 9b9ac75..221bcfa 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.inc
@@ -14,7 +14,7 @@ function commerce_kickstart_lite_product_commerce_product_default_types() {
       'name' => 'Product',
       'description' => 'A basic product type.',
       'help' => '',
-      'revision' => '1',
+      'revision' => 1,
     ),
   );
   return $items;
@@ -23,8 +23,7 @@ function commerce_kickstart_lite_product_commerce_product_default_types() {
 /**
  * Implements hook_ctools_plugin_api().
  */
-function commerce_kickstart_lite_product_ctools_plugin_api() {
-  list($module, $api) = func_get_args();
+function commerce_kickstart_lite_product_ctools_plugin_api($module = NULL, $api = NULL) {
   if ($module == "strongarm" && $api == "strongarm") {
     return array("version" => "1");
   }
@@ -50,12 +49,13 @@ function commerce_kickstart_lite_product_image_default_styles() {
         'module' => 'image',
         'name' => 'image_scale_and_crop',
         'data' => array(
-          'width' => '400',
-          'height' => '550',
+          'width' => 400,
+          'height' => 550,
         ),
-        'weight' => '1',
+        'weight' => 1,
       ),
     ),
+    'label' => 'product_full',
   );
 
   // Exported image style: product_medium.
@@ -72,12 +72,13 @@ function commerce_kickstart_lite_product_image_default_styles() {
         'module' => 'image',
         'name' => 'image_scale_and_crop',
         'data' => array(
-          'width' => '230',
-          'height' => '260',
+          'width' => 230,
+          'height' => 260,
         ),
-        'weight' => '1',
+        'weight' => 1,
       ),
     ),
+    'label' => 'product_medium',
   );
 
   // Exported image style: product_thumbnail.
@@ -94,12 +95,13 @@ function commerce_kickstart_lite_product_image_default_styles() {
         'module' => 'image',
         'name' => 'image_scale_and_crop',
         'data' => array(
-          'width' => '110',
-          'height' => '130',
+          'width' => 110,
+          'height' => 130,
         ),
-        'weight' => '1',
+        'weight' => 1,
       ),
     ),
+    'label' => 'product_thumbnail',
   );
 
   return $styles;
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.taxonomy.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.taxonomy.inc
index 9ddcec2..158ba22 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.taxonomy.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.features.taxonomy.inc
@@ -13,9 +13,9 @@ function commerce_kickstart_lite_product_taxonomy_default_vocabularies() {
       'name' => 'Product category',
       'machine_name' => 'product_category',
       'description' => '',
-      'hierarchy' => '0',
+      'hierarchy' => 0,
       'module' => 'taxonomy',
-      'weight' => '0',
+      'weight' => 0,
     ),
   );
 }
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.info b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.info
index dafaa68..0eea52f 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.info
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.info
@@ -2,7 +2,6 @@ name = Commerce Kickstart Lite Product
 description = Provides the taxonomy vocabularies, product types, product display types, and related functionality.
 core = 7.x
 package = Commerce Kickstart
-php = 5.2.4
 dependencies[] = cloud_zoom
 dependencies[] = commerce_cart
 dependencies[] = commerce_extra_price_formatters
@@ -13,6 +12,7 @@ dependencies[] = commerce_price
 dependencies[] = commerce_product
 dependencies[] = commerce_product_reference
 dependencies[] = commerce_product_ui
+dependencies[] = ctools
 dependencies[] = features
 dependencies[] = image
 dependencies[] = image_delta_formatter
@@ -21,17 +21,22 @@ dependencies[] = menu
 dependencies[] = options
 dependencies[] = strongarm
 dependencies[] = taxonomy
+dependencies[] = text
 dependencies[] = title
 features[commerce_product_type][] = product
 features[ctools][] = strongarm:strongarm:1
-features[features_api][] = api:1
-features[field][] = commerce_product-product-commerce_price
-features[field][] = commerce_product-product-field_images
-features[field][] = commerce_product-product-title_field
-features[field][] = node-product_display-body
-features[field][] = node-product_display-field_product
-features[field][] = node-product_display-field_product_category
-features[field][] = node-product_display-title_field
+features[features_api][] = api:2
+features[field_base][] = commerce_price
+features[field_base][] = field_images
+features[field_base][] = field_product
+features[field_base][] = field_product_category
+features[field_instance][] = commerce_product-product-commerce_price
+features[field_instance][] = commerce_product-product-field_images
+features[field_instance][] = commerce_product-product-title_field
+features[field_instance][] = node-product_display-body
+features[field_instance][] = node-product_display-field_product
+features[field_instance][] = node-product_display-field_product_category
+features[field_instance][] = node-product_display-title_field
 features[image][] = product_full
 features[image][] = product_medium
 features[image][] = product_thumbnail
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.install b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.install
index 8ee9940..c1e5930 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.install
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_lite_product/commerce_kickstart_lite_product.install
@@ -6,14 +6,7 @@
  * Rebuilds the feature immediately after it's enabled.
  */
 function commerce_kickstart_lite_product_enable() {
-  // Rebuild the features static caches.
-  features_include(TRUE);
-
-  $module = 'commerce_kickstart_lite_product';
-  $feature = feature_load($module);
-  $items[$module] = array_keys($feature->info['features']);
-  _features_restore('enable', $items);
-  _features_restore('rebuild', $items);
+  commerce_kickstart_rebuild_feature('commerce_kickstart_lite_product');
 
   // Set up the zoom if it's enabled.
   if (variable_get('commerce_kickstart_product_zoom_enabled', FALSE)) {
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.features.field_instance.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.features.field_instance.inc
new file mode 100644
index 0000000..f103e53
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.features.field_instance.inc
@@ -0,0 +1,291 @@
+<?php
+/**
+ * @file
+ * commerce_kickstart_merchandising.features.field_instance.inc
+ */
+
+/**
+ * Implements hook_field_default_field_instances().
+ */
+function commerce_kickstart_merchandising_field_default_field_instances() {
+  $field_instances = array();
+
+  // Exported field_instance: 'comment-comment_node_ad_push-comment_body'
+  $field_instances['comment-comment_node_ad_push-comment_body'] = array(
+    'bundle' => 'comment_node_ad_push',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'comment',
+    'field_name' => 'comment_body',
+    'label' => 'Comment',
+    'required' => TRUE,
+    'settings' => array(
+      'text_processing' => 1,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'text',
+      'settings' => array(
+        'rows' => 5,
+      ),
+      'type' => 'text_textarea',
+      'weight' => 0,
+    ),
+  );
+
+  // Exported field_instance: 'node-ad_push-field_image'
+  $field_instances['node-ad_push-field_image'] = array(
+    'bundle' => 'ad_push',
+    'deleted' => 0,
+    'description' => 'Upload an image to go with this article.',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => '',
+          'image_style' => 'large',
+        ),
+        'type' => 'image',
+        'weight' => -1,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'hidden',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => 'content',
+          'image_style' => 'medium',
+        ),
+        'type' => 'image',
+        'weight' => -1,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_image',
+    'label' => 'Image',
+    'required' => 1,
+    'settings' => array(
+      'alt_field' => 1,
+      'default_image' => 0,
+      'file_directory' => 'field/image/brand',
+      'file_extensions' => 'png gif jpg jpeg',
+      'max_filesize' => '',
+      'max_resolution' => '',
+      'min_resolution' => '',
+      'title_field' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'image',
+      'settings' => array(
+        'preview_image_style' => 'thumbnail',
+        'progress_indicator' => 'throbber',
+      ),
+      'type' => 'image_image',
+      'weight' => 3,
+    ),
+  );
+
+  // Exported field_instance: 'node-ad_push-field_link'
+  $field_instances['node-ad_push-field_link'] = array(
+    'bundle' => 'ad_push',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => 'Link this content to a URL. It can either be relative to your site (for example : <em>all-products</em>) or an absolute path.',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'link',
+        'settings' => array(),
+        'type' => 'link_default',
+        'weight' => 2,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_link',
+    'label' => 'Link',
+    'required' => 0,
+    'settings' => array(
+      'attributes' => array(
+        'class' => '',
+        'configurable_title' => 0,
+        'rel' => '',
+        'target' => 'default',
+        'title' => '',
+      ),
+      'display' => array(
+        'url_cutoff' => '',
+      ),
+      'enable_tokens' => 1,
+      'title' => 'none',
+      'title_maxlength' => 128,
+      'title_value' => '',
+      'url' => 0,
+      'user_register_form' => FALSE,
+      'validate_url' => 1,
+    ),
+    'widget' => array(
+      'active' => 0,
+      'module' => 'link',
+      'settings' => array(),
+      'type' => 'link_field',
+      'weight' => 4,
+    ),
+  );
+
+  // Exported field_instance: 'node-ad_push-field_tagline'
+  $field_instances['node-ad_push-field_tagline'] = array(
+    'bundle' => 'ad_push',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => 'Short description of the content that you promote.',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 3,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_tagline',
+    'label' => 'Tagline',
+    'required' => 0,
+    'settings' => array(
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 80,
+      ),
+      'type' => 'text_textfield',
+      'weight' => 2,
+    ),
+  );
+
+  // Exported field_instance: 'node-ad_push-title_field'
+  $field_instances['node-ad_push-title_field'] = array(
+    'bundle' => 'ad_push',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 4,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'h2',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => 1,
+    'settings' => array(
+      'hide_label' => array(
+        'entity' => 0,
+        'page' => 0,
+      ),
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Translatables
+  // Included for use with string extractors like potx.
+  t('Comment');
+  t('Image');
+  t('Link');
+  t('Link this content to a URL. It can either be relative to your site (for example : <em>all-products</em>) or an absolute path.');
+  t('Short description of the content that you promote.');
+  t('Tagline');
+  t('Title');
+  t('Upload an image to go with this article.');
+
+  return $field_instances;
+}
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.features.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.features.inc
index e60b412..b8a41e5 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.features.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.features.inc
@@ -7,8 +7,7 @@
 /**
  * Implements hook_ctools_plugin_api().
  */
-function commerce_kickstart_merchandising_ctools_plugin_api() {
-  list($module, $api) = func_get_args();
+function commerce_kickstart_merchandising_ctools_plugin_api($module = NULL, $api = NULL) {
   if ($module == "strongarm" && $api == "strongarm") {
     return array("version" => "1");
   }
@@ -17,8 +16,8 @@ function commerce_kickstart_merchandising_ctools_plugin_api() {
 /**
  * Implements hook_views_api().
  */
-function commerce_kickstart_merchandising_views_api() {
-  return array("version" => "3.0");
+function commerce_kickstart_merchandising_views_api($module = NULL, $api = NULL) {
+  return array("api" => "3.0");
 }
 
 /**
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.info b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.info
index 864135f..eed3d13 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.info
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.info
@@ -2,9 +2,9 @@ name = Commerce Kickstart Merchandising
 description = Provides merchandising functionality.
 core = 7.x
 package = Commerce Kickstart
-php = 5.2.4
 dependencies[] = block
 dependencies[] = commerce_kickstart_migrate
+dependencies[] = commerce_kickstart_slideshow
 dependencies[] = ctools
 dependencies[] = features
 dependencies[] = image
@@ -14,15 +14,17 @@ dependencies[] = list
 dependencies[] = menu
 dependencies[] = path
 dependencies[] = strongarm
+dependencies[] = text
+dependencies[] = title
 dependencies[] = views
 features[ctools][] = strongarm:strongarm:1
 features[ctools][] = views:views_default:3.0
-features[features_api][] = api:1
-features[field][] = comment-comment_node_ad_push-comment_body
-features[field][] = node-ad_push-field_image
-features[field][] = node-ad_push-field_link
-features[field][] = node-ad_push-field_tagline
-features[field][] = node-ad_push-title_field
+features[features_api][] = api:2
+features[field_instance][] = comment-comment_node_ad_push-comment_body
+features[field_instance][] = node-ad_push-field_image
+features[field_instance][] = node-ad_push-field_link
+features[field_instance][] = node-ad_push-field_tagline
+features[field_instance][] = node-ad_push-title_field
 features[node][] = ad_push
 features[variable][] = comment_ad_push
 features[variable][] = field_bundle_settings_node__ad_push
@@ -35,4 +37,6 @@ features[variable][] = pathauto_node_ad_push_pattern
 features[variable][] = site_403
 features[variable][] = site_404
 features[views_view][] = ad_push
+features_exclude[field_base][title_field] = title_field
+features_exclude[field_base][field_image] = field_image
 files[] = commerce_kickstart_merchandising.migrate.inc
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.install b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.install
index 0eca155..75a8c9f 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.install
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_merchandising/commerce_kickstart_merchandising.install
@@ -4,13 +4,7 @@
  * Implements hook_enable().
  */
 function commerce_kickstart_merchandising_enable() {
-  // Rebuild the feature.
-  features_include(TRUE);
-  $module = 'commerce_kickstart_merchandising';
-  $feature = feature_load($module);
-  $items[$module] = array_keys($feature->info['features']);
-  _features_restore('enable', $items);
-  _features_restore('rebuild', $items);
+  commerce_kickstart_rebuild_feature('commerce_kickstart_merchandising');
 
   drupal_static_reset();
   $default_theme = variable_get('theme_default', 'omega_kickstart');
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.autosku_pattern.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.autosku_pattern.inc
new file mode 100644
index 0000000..0f182d8
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.autosku_pattern.inc
@@ -0,0 +1,86 @@
+<?php
+/**
+ * @file
+ * commerce_kickstart_product.autosku_pattern.inc
+ */
+
+/**
+ * Implements hook_default_commerce_autosku_patterns().
+ */
+function commerce_kickstart_product_default_commerce_autosku_patterns() {
+  $export = array();
+
+  $commerce_autosku_patterns = new stdClass();
+  $commerce_autosku_patterns->disabled = FALSE; /* Edit this to true to make a default commerce_autosku_patterns disabled initially */
+  $commerce_autosku_patterns->api_version = 1;
+  $commerce_autosku_patterns->product_type = 'bags_cases';
+  $commerce_autosku_patterns->pattern = '[commerce-product:title]';
+  $commerce_autosku_patterns->advanced = array(
+    'update_existing' => 0,
+    'hide_sku' => 1,
+    'case' => 'uppercase',
+  );
+  $export['bags_cases'] = $commerce_autosku_patterns;
+
+  $commerce_autosku_patterns = new stdClass();
+  $commerce_autosku_patterns->disabled = FALSE; /* Edit this to true to make a default commerce_autosku_patterns disabled initially */
+  $commerce_autosku_patterns->api_version = 1;
+  $commerce_autosku_patterns->product_type = 'drinks';
+  $commerce_autosku_patterns->pattern = '[commerce-product:title]';
+  $commerce_autosku_patterns->advanced = array(
+    'update_existing' => 0,
+    'hide_sku' => 1,
+    'case' => 'uppercase',
+  );
+  $export['drinks'] = $commerce_autosku_patterns;
+
+  $commerce_autosku_patterns = new stdClass();
+  $commerce_autosku_patterns->disabled = FALSE; /* Edit this to true to make a default commerce_autosku_patterns disabled initially */
+  $commerce_autosku_patterns->api_version = 1;
+  $commerce_autosku_patterns->product_type = 'hats';
+  $commerce_autosku_patterns->pattern = '[commerce-product:title]';
+  $commerce_autosku_patterns->advanced = array(
+    'update_existing' => 0,
+    'hide_sku' => 1,
+    'case' => 'uppercase',
+  );
+  $export['hats'] = $commerce_autosku_patterns;
+
+  $commerce_autosku_patterns = new stdClass();
+  $commerce_autosku_patterns->disabled = FALSE; /* Edit this to true to make a default commerce_autosku_patterns disabled initially */
+  $commerce_autosku_patterns->api_version = 1;
+  $commerce_autosku_patterns->product_type = 'shoes';
+  $commerce_autosku_patterns->pattern = '[commerce-product:title]';
+  $commerce_autosku_patterns->advanced = array(
+    'update_existing' => 0,
+    'hide_sku' => 1,
+    'case' => 'uppercase',
+  );
+  $export['shoes'] = $commerce_autosku_patterns;
+
+  $commerce_autosku_patterns = new stdClass();
+  $commerce_autosku_patterns->disabled = FALSE; /* Edit this to true to make a default commerce_autosku_patterns disabled initially */
+  $commerce_autosku_patterns->api_version = 1;
+  $commerce_autosku_patterns->product_type = 'storage_devices';
+  $commerce_autosku_patterns->pattern = '[commerce-product:title]';
+  $commerce_autosku_patterns->advanced = array(
+    'update_existing' => 0,
+    'hide_sku' => 1,
+    'case' => 'uppercase',
+  );
+  $export['storage_devices'] = $commerce_autosku_patterns;
+
+  $commerce_autosku_patterns = new stdClass();
+  $commerce_autosku_patterns->disabled = FALSE; /* Edit this to true to make a default commerce_autosku_patterns disabled initially */
+  $commerce_autosku_patterns->api_version = 1;
+  $commerce_autosku_patterns->product_type = 'tops';
+  $commerce_autosku_patterns->pattern = '[commerce-product:title]';
+  $commerce_autosku_patterns->advanced = array(
+    'update_existing' => 0,
+    'hide_sku' => 1,
+    'case' => 'uppercase',
+  );
+  $export['tops'] = $commerce_autosku_patterns;
+
+  return $export;
+}
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.field_base.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.field_base.inc
new file mode 100644
index 0000000..097bc4d
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.field_base.inc
@@ -0,0 +1,465 @@
+<?php
+/**
+ * @file
+ * commerce_kickstart_product.features.field_base.inc
+ */
+
+/**
+ * Implements hook_field_default_field_bases().
+ */
+function commerce_kickstart_product_field_default_field_bases() {
+  $field_bases = array();
+
+  // Exported field_base: 'commerce_price'
+  $field_bases['commerce_price'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(
+      0 => 'commerce_product',
+    ),
+    'field_name' => 'commerce_price',
+    'foreign keys' => array(),
+    'indexes' => array(
+      'currency_price' => array(
+        0 => 'amount',
+        1 => 'currency_code',
+      ),
+    ),
+    'locked' => 1,
+    'module' => 'commerce_price',
+    'settings' => array(),
+    'translatable' => 0,
+    'type' => 'commerce_price',
+  );
+
+  // Exported field_base: 'field_bag_size'
+  $field_bases['field_bag_size'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_bag_size',
+    'foreign keys' => array(
+      'tid' => array(
+        'columns' => array(
+          'tid' => 'tid',
+        ),
+        'table' => 'taxonomy_term_data',
+      ),
+    ),
+    'indexes' => array(
+      'tid' => array(
+        0 => 'tid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'taxonomy',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => array(
+          'vocabulary' => 'bag_size',
+          'parent' => 0,
+        ),
+      ),
+    ),
+    'translatable' => 0,
+    'type' => 'taxonomy_term_reference',
+  );
+
+  // Exported field_base: 'field_brand'
+  $field_bases['field_brand'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_brand',
+    'foreign keys' => array(
+      'tid' => array(
+        'columns' => array(
+          'tid' => 'tid',
+        ),
+        'table' => 'taxonomy_term_data',
+      ),
+    ),
+    'indexes' => array(
+      'tid' => array(
+        0 => 'tid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'taxonomy',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => array(
+          'vocabulary' => 'brand',
+          'parent' => 0,
+        ),
+      ),
+    ),
+    'translatable' => 0,
+    'type' => 'taxonomy_term_reference',
+  );
+
+  // Exported field_base: 'field_category'
+  $field_bases['field_category'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_category',
+    'foreign keys' => array(
+      'tid' => array(
+        'columns' => array(
+          'tid' => 'tid',
+        ),
+        'table' => 'taxonomy_term_data',
+      ),
+    ),
+    'indexes' => array(
+      'tid' => array(
+        0 => 'tid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'taxonomy',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => array(
+          'vocabulary' => 'category',
+          'parent' => 0,
+        ),
+      ),
+    ),
+    'translatable' => 0,
+    'type' => 'taxonomy_term_reference',
+  );
+
+  // Exported field_base: 'field_category_color'
+  $field_bases['field_category_color'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_category_color',
+    'foreign keys' => array(
+      'format' => array(
+        'columns' => array(
+          'format' => 'format',
+        ),
+        'table' => 'filter_format',
+      ),
+    ),
+    'indexes' => array(
+      'format' => array(
+        0 => 'format',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'text',
+    'settings' => array(
+      'max_length' => 7,
+    ),
+    'translatable' => 0,
+    'type' => 'text',
+  );
+
+  // Exported field_base: 'field_collection'
+  $field_bases['field_collection'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_collection',
+    'foreign keys' => array(
+      'tid' => array(
+        'columns' => array(
+          'tid' => 'tid',
+        ),
+        'table' => 'taxonomy_term_data',
+      ),
+    ),
+    'indexes' => array(
+      'tid' => array(
+        0 => 'tid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'taxonomy',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => array(
+          'vocabulary' => 'collection',
+          'parent' => 0,
+        ),
+      ),
+    ),
+    'translatable' => 0,
+    'type' => 'taxonomy_term_reference',
+  );
+
+  // Exported field_base: 'field_color'
+  $field_bases['field_color'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_color',
+    'foreign keys' => array(
+      'tid' => array(
+        'columns' => array(
+          'tid' => 'tid',
+        ),
+        'table' => 'taxonomy_term_data',
+      ),
+    ),
+    'indexes' => array(
+      'tid' => array(
+        0 => 'tid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'taxonomy',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => array(
+          'vocabulary' => 'color',
+          'parent' => 0,
+        ),
+      ),
+    ),
+    'translatable' => 0,
+    'type' => 'taxonomy_term_reference',
+  );
+
+  // Exported field_base: 'field_gender'
+  $field_bases['field_gender'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_gender',
+    'foreign keys' => array(
+      'tid' => array(
+        'columns' => array(
+          'tid' => 'tid',
+        ),
+        'table' => 'taxonomy_term_data',
+      ),
+    ),
+    'indexes' => array(
+      'tid' => array(
+        0 => 'tid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'taxonomy',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => array(
+          'vocabulary' => 'gender',
+          'parent' => 0,
+        ),
+      ),
+    ),
+    'translatable' => 0,
+    'type' => 'taxonomy_term_reference',
+  );
+
+  // Exported field_base: 'field_hat_size'
+  $field_bases['field_hat_size'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_hat_size',
+    'foreign keys' => array(
+      'tid' => array(
+        'columns' => array(
+          'tid' => 'tid',
+        ),
+        'table' => 'taxonomy_term_data',
+      ),
+    ),
+    'indexes' => array(
+      'tid' => array(
+        0 => 'tid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'taxonomy',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => array(
+          'vocabulary' => 'hat_size',
+          'parent' => 0,
+        ),
+      ),
+    ),
+    'translatable' => 0,
+    'type' => 'taxonomy_term_reference',
+  );
+
+  // Exported field_base: 'field_images'
+  $field_bases['field_images'] = array(
+    'active' => 1,
+    'cardinality' => -1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_images',
+    'foreign keys' => array(
+      'fid' => array(
+        'columns' => array(
+          'fid' => 'fid',
+        ),
+        'table' => 'file_managed',
+      ),
+    ),
+    'indexes' => array(
+      'fid' => array(
+        0 => 'fid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'image',
+    'settings' => array(
+      'default_image' => 0,
+      'uri_scheme' => 'public',
+    ),
+    'translatable' => 1,
+    'type' => 'image',
+  );
+
+  // Exported field_base: 'field_product'
+  $field_bases['field_product'] = array(
+    'active' => 1,
+    'cardinality' => -1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_product',
+    'foreign keys' => array(
+      'product_id' => array(
+        'columns' => array(
+          'product_id' => 'product_id',
+        ),
+        'table' => 'commerce_product',
+      ),
+    ),
+    'indexes' => array(
+      'product_id' => array(
+        0 => 'product_id',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'commerce_product_reference',
+    'settings' => array(
+      'options_list_limit' => NULL,
+    ),
+    'translatable' => 0,
+    'type' => 'commerce_product_reference',
+  );
+
+  // Exported field_base: 'field_shoe_size'
+  $field_bases['field_shoe_size'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_shoe_size',
+    'foreign keys' => array(
+      'tid' => array(
+        'columns' => array(
+          'tid' => 'tid',
+        ),
+        'table' => 'taxonomy_term_data',
+      ),
+    ),
+    'indexes' => array(
+      'tid' => array(
+        0 => 'tid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'taxonomy',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => array(
+          'vocabulary' => 'shoe_size',
+          'parent' => 0,
+        ),
+      ),
+    ),
+    'translatable' => 0,
+    'type' => 'taxonomy_term_reference',
+  );
+
+  // Exported field_base: 'field_storage_capacity'
+  $field_bases['field_storage_capacity'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_storage_capacity',
+    'foreign keys' => array(
+      'tid' => array(
+        'columns' => array(
+          'tid' => 'tid',
+        ),
+        'table' => 'taxonomy_term_data',
+      ),
+    ),
+    'indexes' => array(
+      'tid' => array(
+        0 => 'tid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'taxonomy',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => array(
+          'vocabulary' => 'storage_capacity',
+          'parent' => 0,
+        ),
+      ),
+    ),
+    'translatable' => 0,
+    'type' => 'taxonomy_term_reference',
+  );
+
+  // Exported field_base: 'field_top_size'
+  $field_bases['field_top_size'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_top_size',
+    'foreign keys' => array(
+      'tid' => array(
+        'columns' => array(
+          'tid' => 'tid',
+        ),
+        'table' => 'taxonomy_term_data',
+      ),
+    ),
+    'indexes' => array(
+      'tid' => array(
+        0 => 'tid',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'taxonomy',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => array(
+          'vocabulary' => 'top_size',
+          'parent' => 0,
+        ),
+      ),
+    ),
+    'translatable' => 0,
+    'type' => 'taxonomy_term_reference',
+  );
+
+  return $field_bases;
+}
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.field_instance.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.field_instance.inc
new file mode 100644
index 0000000..27881f5
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.field_instance.inc
@@ -0,0 +1,5583 @@
+<?php
+/**
+ * @file
+ * commerce_kickstart_product.features.field_instance.inc
+ */
+
+/**
+ * Implements hook_field_default_field_instances().
+ */
+function commerce_kickstart_product_field_default_field_instances() {
+  $field_instances = array();
+
+  // Exported field_instance: 'commerce_product-bags_cases-commerce_price'
+  $field_instances['commerce_product-bags_cases-commerce_price'] = array(
+    'bundle' => 'bags_cases',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 6,
+      ),
+      'commerce_line_item_display' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'line_item' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 1,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_extra_price_formatters',
+        'settings' => array(
+          'alternative_text_for_zero_price' => '',
+          'calculation' => TRUE,
+          'prefix' => 'From',
+          'suffix' => '',
+          'text_format' => 'plain_text',
+          'whole_numbers_only' => FALSE,
+        ),
+        'type' => 'commerce_price_prefix_suffix',
+        'weight' => 1,
+      ),
+      'node_rss' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_search_index' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_search_result' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'commerce_price',
+    'label' => 'Price',
+    'required' => TRUE,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'commerce_price',
+      'settings' => array(
+        'currency_code' => 'default',
+      ),
+      'type' => 'commerce_price_full',
+      'weight' => 0,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-bags_cases-field_bag_size'
+  $field_instances['commerce_product-bags_cases-field_bag_size'] = array(
+    'bundle' => 'bags_cases',
+    'commerce_cart_settings' => array(
+      'attribute_field' => 1,
+      'attribute_widget' => 'select',
+      'attribute_widget_title' => 'Select Size',
+    ),
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 2,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 3,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'node_product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 3,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 3,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'field_bag_size',
+    'label' => 'Size',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 40,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-bags_cases-field_color'
+  $field_instances['commerce_product-bags_cases-field_color'] = array(
+    'bundle' => 'bags_cases',
+    'commerce_cart_settings' => array(
+      'attribute_field' => 1,
+      'attribute_widget' => 'commerce_fancy_attributes',
+      'attribute_widget_title' => 'Select Color',
+    ),
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 3,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 2,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 4,
+      ),
+      'node_product_list' => array(
+        'label' => 'inline',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 4,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'field_color',
+    'label' => 'Color',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 39,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-bags_cases-field_images'
+  $field_instances['commerce_product-bags_cases-field_images'] = array(
+    'bundle' => 'bags_cases',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => '',
+          'image_style' => 'product_thumbnail',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => '',
+          'image_style' => '',
+        ),
+        'type' => 'image',
+        'weight' => 1,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'hidden',
+        'module' => 'cloud_zoom',
+        'settings' => array(
+          'gallery_filedset' => array(
+            'gallery_mode' => 1,
+            'thumb_style' => 'product_thumbnail',
+          ),
+          'slide_style' => 'product_full',
+          'zoom_position_fieldset' => array(
+            'adjust_x' => 0,
+            'adjust_y' => 0,
+            'position' => 'inside',
+            'zoom_height' => 'auto',
+            'zoom_width' => 'auto',
+          ),
+          'zoom_style' => 0,
+          'zoom_style_fieldset' => array(
+            'Show title' => 0,
+            'lens_opacity' => 0.5,
+            'smooth_move' => 3,
+            'soft_focus' => 0,
+            'tint' => 'false',
+            'tint_opacity' => 0.5,
+            'title_opacity' => 0.5,
+          ),
+        ),
+        'type' => 'cloud_zoom',
+        'weight' => 2,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => FALSE,
+          'image_link' => 'content',
+          'image_style' => 'product_medium',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => '',
+          'image_style' => 'product_thumbnail',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'fences_wrapper' => 'figure',
+    'field_name' => 'field_images',
+    'label' => 'Images',
+    'required' => 0,
+    'settings' => array(
+      'alt_field' => 0,
+      'default_image' => 0,
+      'file_directory' => '',
+      'file_extensions' => 'png gif jpg jpeg',
+      'max_filesize' => '',
+      'max_resolution' => '',
+      'min_resolution' => '',
+      'title_field' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'image',
+      'settings' => array(
+        'preview_image_style' => 'thumbnail',
+        'progress_indicator' => 'throbber',
+      ),
+      'type' => 'image_image',
+      'weight' => 37,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-bags_cases-title_field'
+  $field_instances['commerce_product-bags_cases-title_field'] = array(
+    'bundle' => 'bags_cases',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 4,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => TRUE,
+    'settings' => array(
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-drinks-commerce_price'
+  $field_instances['commerce_product-drinks-commerce_price'] = array(
+    'bundle' => 'drinks',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'commerce_line_item_display' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'line_item' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 1,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_extra_price_formatters',
+        'settings' => array(
+          'alternative_text_for_zero_price' => '',
+          'calculation' => TRUE,
+          'prefix' => 'From',
+          'suffix' => '',
+          'text_format' => 'plain_text',
+          'whole_numbers_only' => FALSE,
+        ),
+        'type' => 'commerce_price_prefix_suffix',
+        'weight' => 4,
+      ),
+      'node_rss' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_search_index' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_search_result' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'commerce_price',
+    'label' => 'Price',
+    'required' => TRUE,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'commerce_price',
+      'settings' => array(
+        'currency_code' => 'default',
+      ),
+      'type' => 'commerce_price_full',
+      'weight' => 0,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-drinks-field_color'
+  $field_instances['commerce_product-drinks-field_color'] = array(
+    'bundle' => 'drinks',
+    'commerce_cart_settings' => array(
+      'attribute_field' => 1,
+      'attribute_widget' => 'commerce_fancy_attributes',
+      'attribute_widget_title' => 'Select Color',
+    ),
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 2,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 2,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'node_product_list' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 3,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 3,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'field_color',
+    'label' => 'Color',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 39,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-drinks-field_images'
+  $field_instances['commerce_product-drinks-field_images'] = array(
+    'bundle' => 'drinks',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => '',
+          'image_style' => 'product_thumbnail',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => '',
+          'image_style' => '',
+        ),
+        'type' => 'image',
+        'weight' => 1,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'hidden',
+        'module' => 'cloud_zoom',
+        'settings' => array(
+          'gallery_filedset' => array(
+            'gallery_mode' => 1,
+            'thumb_style' => 'product_thumbnail',
+          ),
+          'slide_style' => 'product_full',
+          'zoom_position_fieldset' => array(
+            'adjust_x' => 0,
+            'adjust_y' => 0,
+            'position' => 'inside',
+            'zoom_height' => 'auto',
+            'zoom_width' => 'auto',
+          ),
+          'zoom_style' => 0,
+          'zoom_style_fieldset' => array(
+            'Show title' => 0,
+            'lens_opacity' => 0.5,
+            'smooth_move' => 3,
+            'soft_focus' => 0,
+            'tint' => 'false',
+            'tint_opacity' => 0.5,
+            'title_opacity' => 0.5,
+          ),
+        ),
+        'type' => 'cloud_zoom',
+        'weight' => 2,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => FALSE,
+          'image_link' => 'content',
+          'image_style' => 'product_medium',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => '',
+          'image_style' => 'product_thumbnail',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'fences_wrapper' => 'figure',
+    'field_name' => 'field_images',
+    'label' => 'Images',
+    'required' => 0,
+    'settings' => array(
+      'alt_field' => 0,
+      'default_image' => 0,
+      'file_directory' => '',
+      'file_extensions' => 'png gif jpg jpeg',
+      'max_filesize' => '',
+      'max_resolution' => '',
+      'min_resolution' => '',
+      'title_field' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'image',
+      'settings' => array(
+        'preview_image_style' => 'thumbnail',
+        'progress_indicator' => 'throbber',
+      ),
+      'type' => 'image_image',
+      'weight' => 37,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-drinks-title_field'
+  $field_instances['commerce_product-drinks-title_field'] = array(
+    'bundle' => 'drinks',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 4,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 3,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => TRUE,
+    'settings' => array(
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-hats-commerce_price'
+  $field_instances['commerce_product-hats-commerce_price'] = array(
+    'bundle' => 'hats',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 6,
+      ),
+      'commerce_line_item_display' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 2,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'line_item' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 1,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_extra_price_formatters',
+        'settings' => array(
+          'alternative_text_for_zero_price' => '',
+          'calculation' => TRUE,
+          'prefix' => 'From',
+          'suffix' => '',
+          'text_format' => 'plain_text',
+          'whole_numbers_only' => FALSE,
+        ),
+        'type' => 'commerce_price_prefix_suffix',
+        'weight' => 4,
+      ),
+      'node_rss' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_search_index' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_search_result' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 6,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'commerce_price',
+    'label' => 'Price',
+    'required' => TRUE,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'commerce_price',
+      'settings' => array(
+        'currency_code' => 'default',
+      ),
+      'type' => 'commerce_price_full',
+      'weight' => 0,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-hats-field_color'
+  $field_instances['commerce_product-hats-field_color'] = array(
+    'bundle' => 'hats',
+    'commerce_cart_settings' => array(
+      'attribute_field' => 1,
+      'attribute_widget' => 'commerce_fancy_attributes',
+      'attribute_widget_title' => 'Select Color',
+    ),
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 3,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'field_extractor',
+        'settings' => array(
+          'field_name' => '',
+          'formatter' => '',
+          'settings' => array(),
+        ),
+        'type' => 'field_extractor',
+        'weight' => 4,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 3,
+      ),
+      'node_product_list' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 3,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 4,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'field_color',
+    'label' => 'Color',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 39,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-hats-field_hat_size'
+  $field_instances['commerce_product-hats-field_hat_size'] = array(
+    'bundle' => 'hats',
+    'commerce_cart_settings' => array(
+      'attribute_field' => 1,
+      'attribute_widget' => 'select',
+      'attribute_widget_title' => 'Select Size',
+    ),
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 2,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'field_extractor',
+        'settings' => array(
+          'field_name' => '',
+          'formatter' => '',
+          'settings' => array(),
+        ),
+        'type' => 'field_extractor',
+        'weight' => 5,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'node_product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 3,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'field_hat_size',
+    'label' => 'Size',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 40,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-hats-field_images'
+  $field_instances['commerce_product-hats-field_images'] = array(
+    'bundle' => 'hats',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => '',
+          'image_style' => 'product_thumbnail',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => '',
+          'image_style' => '',
+        ),
+        'type' => 'image',
+        'weight' => 3,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'hidden',
+        'module' => 'cloud_zoom',
+        'settings' => array(
+          'gallery_filedset' => array(
+            'gallery_mode' => 1,
+            'thumb_style' => 'product_thumbnail',
+          ),
+          'slide_style' => 'product_full',
+          'zoom_position_fieldset' => array(
+            'adjust_x' => 0,
+            'adjust_y' => 0,
+            'position' => 'inside',
+            'zoom_height' => 'auto',
+            'zoom_width' => 'auto',
+          ),
+          'zoom_style' => 0,
+          'zoom_style_fieldset' => array(
+            'Show title' => 0,
+            'lens_opacity' => 0.5,
+            'smooth_move' => 3,
+            'soft_focus' => 0,
+            'tint' => 'false',
+            'tint_opacity' => 0.5,
+            'title_opacity' => 0.5,
+          ),
+        ),
+        'type' => 'cloud_zoom',
+        'weight' => 2,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => FALSE,
+          'image_link' => 'content',
+          'image_style' => 'product_medium',
+        ),
+        'type' => 'image_delta',
+        'weight' => 1,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => '',
+          'image_style' => 'product_thumbnail',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'fences_wrapper' => 'figure',
+    'field_name' => 'field_images',
+    'label' => 'Images',
+    'required' => 0,
+    'settings' => array(
+      'alt_field' => 0,
+      'default_image' => 0,
+      'file_directory' => '',
+      'file_extensions' => 'png gif jpg jpeg',
+      'max_filesize' => '',
+      'max_resolution' => '',
+      'min_resolution' => '',
+      'title_field' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'image',
+      'settings' => array(
+        'preview_image_style' => 'thumbnail',
+        'progress_indicator' => 'throbber',
+      ),
+      'type' => 'image_image',
+      'weight' => 37,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-hats-title_field'
+  $field_instances['commerce_product-hats-title_field'] = array(
+    'bundle' => 'hats',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 6,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => TRUE,
+    'settings' => array(
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-shoes-commerce_price'
+  $field_instances['commerce_product-shoes-commerce_price'] = array(
+    'bundle' => 'shoes',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 6,
+      ),
+      'commerce_line_item_display' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'line_item' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 1,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_extra_price_formatters',
+        'settings' => array(
+          'alternative_text_for_zero_price' => '',
+          'calculation' => TRUE,
+          'prefix' => 'From',
+          'suffix' => '',
+          'text_format' => 'plain_text',
+          'whole_numbers_only' => FALSE,
+        ),
+        'type' => 'commerce_price_prefix_suffix',
+        'weight' => 4,
+      ),
+      'node_rss' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_search_index' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_search_result' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 6,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'commerce_price',
+    'label' => 'Price',
+    'required' => TRUE,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'commerce_price',
+      'settings' => array(
+        'currency_code' => 'default',
+      ),
+      'type' => 'commerce_price_full',
+      'weight' => 0,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-shoes-field_color'
+  $field_instances['commerce_product-shoes-field_color'] = array(
+    'bundle' => 'shoes',
+    'commerce_cart_settings' => array(
+      'attribute_field' => 1,
+      'attribute_widget' => 'commerce_fancy_attributes',
+      'attribute_widget_title' => 'Select Color',
+    ),
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 3,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 2,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 4,
+      ),
+      'node_product_list' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 3,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 4,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'field_color',
+    'label' => 'Color',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 39,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-shoes-field_images'
+  $field_instances['commerce_product-shoes-field_images'] = array(
+    'bundle' => 'shoes',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => '',
+          'image_style' => 'product_thumbnail',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => '',
+          'image_style' => '',
+        ),
+        'type' => 'image',
+        'weight' => 1,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'hidden',
+        'module' => 'cloud_zoom',
+        'settings' => array(
+          'gallery_filedset' => array(
+            'gallery_mode' => 1,
+            'thumb_style' => 'product_thumbnail',
+          ),
+          'slide_style' => 'product_full',
+          'zoom_position_fieldset' => array(
+            'adjust_x' => 0,
+            'adjust_y' => 0,
+            'position' => 'inside',
+            'zoom_height' => 'auto',
+            'zoom_width' => 'auto',
+          ),
+          'zoom_style' => 0,
+          'zoom_style_fieldset' => array(
+            'Show title' => 0,
+            'lens_opacity' => 0.5,
+            'smooth_move' => 3,
+            'soft_focus' => 0,
+            'tint' => 'false',
+            'tint_opacity' => 0.5,
+            'title_opacity' => 0.5,
+          ),
+        ),
+        'type' => 'cloud_zoom',
+        'weight' => 2,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => FALSE,
+          'image_link' => 'content',
+          'image_style' => 'product_medium',
+        ),
+        'type' => 'image_delta',
+        'weight' => 1,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => '',
+          'image_style' => 'product_thumbnail',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'fences_wrapper' => 'figure',
+    'field_name' => 'field_images',
+    'label' => 'Images',
+    'required' => 0,
+    'settings' => array(
+      'alt_field' => 0,
+      'default_image' => 0,
+      'file_directory' => '',
+      'file_extensions' => 'png gif jpg jpeg',
+      'max_filesize' => '',
+      'max_resolution' => '',
+      'min_resolution' => '',
+      'title_field' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'image',
+      'settings' => array(
+        'preview_image_style' => 'thumbnail',
+        'progress_indicator' => 'throbber',
+      ),
+      'type' => 'image_image',
+      'weight' => 37,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-shoes-field_shoe_size'
+  $field_instances['commerce_product-shoes-field_shoe_size'] = array(
+    'bundle' => 'shoes',
+    'commerce_cart_settings' => array(
+      'attribute_field' => 1,
+      'attribute_widget' => 'select',
+      'attribute_widget_title' => 'Select Size',
+    ),
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 2,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 3,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'node_product_list' => array(
+        'label' => 'inline',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 3,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'field_shoe_size',
+    'label' => 'Size',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 40,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-shoes-title_field'
+  $field_instances['commerce_product-shoes-title_field'] = array(
+    'bundle' => 'shoes',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 4,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => TRUE,
+    'settings' => array(
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-storage_devices-commerce_price'
+  $field_instances['commerce_product-storage_devices-commerce_price'] = array(
+    'bundle' => 'storage_devices',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'commerce_line_item_display' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'line_item' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 1,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_extra_price_formatters',
+        'settings' => array(
+          'alternative_text_for_zero_price' => '',
+          'calculation' => TRUE,
+          'prefix' => 'From',
+          'suffix' => '',
+          'text_format' => 'plain_text',
+          'whole_numbers_only' => FALSE,
+        ),
+        'type' => 'commerce_price_prefix_suffix',
+        'weight' => 3,
+      ),
+      'node_rss' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_search_index' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_search_result' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'commerce_price',
+    'label' => 'Price',
+    'required' => TRUE,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'commerce_price',
+      'settings' => array(
+        'currency_code' => 'default',
+      ),
+      'type' => 'commerce_price_full',
+      'weight' => 0,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-storage_devices-field_images'
+  $field_instances['commerce_product-storage_devices-field_images'] = array(
+    'bundle' => 'storage_devices',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => '',
+          'image_style' => 'product_thumbnail',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => '',
+          'image_style' => '',
+        ),
+        'type' => 'image',
+        'weight' => 1,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'hidden',
+        'module' => 'cloud_zoom',
+        'settings' => array(
+          'gallery_filedset' => array(
+            'gallery_mode' => 1,
+            'thumb_style' => 'product_thumbnail',
+          ),
+          'slide_style' => 'product_full',
+          'zoom_position_fieldset' => array(
+            'adjust_x' => 0,
+            'adjust_y' => 0,
+            'position' => 'inside',
+            'zoom_height' => 'auto',
+            'zoom_width' => 'auto',
+          ),
+          'zoom_style' => 0,
+          'zoom_style_fieldset' => array(
+            'Show title' => 0,
+            'lens_opacity' => 0.5,
+            'smooth_move' => 3,
+            'soft_focus' => 0,
+            'tint' => 'false',
+            'tint_opacity' => 0.5,
+            'title_opacity' => 0.5,
+          ),
+        ),
+        'type' => 'cloud_zoom',
+        'weight' => 2,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => 'content',
+          'image_style' => 'product_medium',
+        ),
+        'type' => 'image_delta',
+        'weight' => 1,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => '',
+          'image_style' => 'product_thumbnail',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'fences_wrapper' => 'figure',
+    'field_name' => 'field_images',
+    'label' => 'Images',
+    'required' => 0,
+    'settings' => array(
+      'alt_field' => 0,
+      'default_image' => 0,
+      'file_directory' => '',
+      'file_extensions' => 'png gif jpg jpeg',
+      'max_filesize' => '',
+      'max_resolution' => '',
+      'min_resolution' => '',
+      'title_field' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'image',
+      'settings' => array(
+        'preview_image_style' => 'thumbnail',
+        'progress_indicator' => 'throbber',
+      ),
+      'type' => 'image_image',
+      'weight' => 37,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-storage_devices-field_storage_capacity'
+  $field_instances['commerce_product-storage_devices-field_storage_capacity'] = array(
+    'bundle' => 'storage_devices',
+    'commerce_cart_settings' => array(
+      'attribute_field' => 1,
+      'attribute_widget' => 'select',
+    ),
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 2,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 2,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 4,
+      ),
+      'node_product_list' => array(
+        'label' => 'inline',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 4,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 3,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'field_storage_capacity',
+    'label' => 'Capacity',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 38,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-storage_devices-title_field'
+  $field_instances['commerce_product-storage_devices-title_field'] = array(
+    'bundle' => 'storage_devices',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 4,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 3,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => TRUE,
+    'settings' => array(
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-tops-commerce_price'
+  $field_instances['commerce_product-tops-commerce_price'] = array(
+    'bundle' => 'tops',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 6,
+      ),
+      'commerce_line_item_display' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'line_item' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 1,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_extra_price_formatters',
+        'settings' => array(
+          'alternative_text_for_zero_price' => '',
+          'calculation' => TRUE,
+          'prefix' => 'From',
+          'suffix' => '',
+          'text_format' => 'plain_text',
+          'whole_numbers_only' => FALSE,
+        ),
+        'type' => 'commerce_price_prefix_suffix',
+        'weight' => 1,
+      ),
+      'node_rss' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_search_index' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_search_result' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_price',
+        'settings' => array(
+          'calculation' => 'calculated_sell_price',
+        ),
+        'type' => 'commerce_price_formatted_amount',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'commerce_price',
+    'label' => 'Price',
+    'required' => TRUE,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'commerce_price',
+      'settings' => array(
+        'currency_code' => 'default',
+      ),
+      'type' => 'commerce_price_full',
+      'weight' => 0,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-tops-field_color'
+  $field_instances['commerce_product-tops-field_color'] = array(
+    'bundle' => 'tops',
+    'commerce_cart_settings' => array(
+      'attribute_field' => 1,
+      'attribute_widget' => 'commerce_fancy_attributes',
+      'attribute_widget_title' => 'Select Color',
+    ),
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 3,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 2,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 4,
+      ),
+      'node_product_list' => array(
+        'label' => 'inline',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 4,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 4,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'field_color',
+    'label' => 'Color',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 38,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-tops-field_images'
+  $field_instances['commerce_product-tops-field_images'] = array(
+    'bundle' => 'tops',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => '',
+          'image_style' => 'product_thumbnail',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => '',
+          'image_style' => '',
+        ),
+        'type' => 'image',
+        'weight' => 1,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'hidden',
+        'module' => 'cloud_zoom',
+        'settings' => array(
+          'gallery_filedset' => array(
+            'gallery_mode' => 1,
+            'thumb_style' => 'product_thumbnail',
+          ),
+          'slide_style' => 'product_full',
+          'zoom_position_fieldset' => array(
+            'adjust_x' => 0,
+            'adjust_y' => 0,
+            'position' => 'inside',
+            'zoom_height' => 'auto',
+            'zoom_width' => 'auto',
+          ),
+          'zoom_style' => 0,
+          'zoom_style_fieldset' => array(
+            'Show title' => 0,
+            'lens_opacity' => 0.5,
+            'smooth_move' => 3,
+            'soft_focus' => 0,
+            'tint' => 'false',
+            'tint_opacity' => 0.5,
+            'title_opacity' => 0.5,
+          ),
+        ),
+        'type' => 'cloud_zoom',
+        'weight' => 2,
+      ),
+      'node_product_list' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => 'content',
+          'image_style' => 'product_medium',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'hidden',
+        'module' => 'image_delta_formatter',
+        'settings' => array(
+          'deltas' => 0,
+          'deltas_reversed' => 0,
+          'image_link' => '',
+          'image_style' => 'product_thumbnail',
+        ),
+        'type' => 'image_delta',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'fences_wrapper' => 'figure',
+    'field_name' => 'field_images',
+    'label' => 'Images',
+    'required' => 0,
+    'settings' => array(
+      'alt_field' => 0,
+      'default_image' => 0,
+      'file_directory' => '',
+      'file_extensions' => 'png gif jpg jpeg',
+      'max_filesize' => '',
+      'max_resolution' => '',
+      'min_resolution' => '',
+      'title_field' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'image',
+      'settings' => array(
+        'preview_image_style' => 'thumbnail',
+        'progress_indicator' => 'throbber',
+      ),
+      'type' => 'image_image',
+      'weight' => 37,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-tops-field_top_size'
+  $field_instances['commerce_product-tops-field_top_size'] = array(
+    'bundle' => 'tops',
+    'commerce_cart_settings' => array(
+      'attribute_field' => 1,
+      'attribute_widget' => 'select',
+      'attribute_widget_title' => 'Select Size',
+    ),
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 2,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 3,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'node_product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'inline',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 3,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'field_top_size',
+    'label' => 'Size',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 39,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-tops-title_field'
+  $field_instances['commerce_product-tops-title_field'] = array(
+    'bundle' => 'tops',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_confirmation_view' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 5,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 4,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => TRUE,
+    'settings' => array(
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Exported field_instance: 'node-bags_cases-body'
+  $field_instances['node-bags_cases-body'] = array(
+    'bundle' => 'bags_cases',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 1,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 4,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 10,
+      ),
+      'teaser' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(
+          'trim_length' => 600,
+        ),
+        'type' => 'text_summary_or_trimmed',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => '',
+    'field_name' => 'body',
+    'label' => 'Body',
+    'required' => 0,
+    'settings' => array(
+      'display_summary' => 0,
+      'text_processing' => 1,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'rows' => 20,
+        'summary_rows' => 5,
+      ),
+      'type' => 'text_textarea_with_summary',
+      'weight' => 1,
+    ),
+  );
+
+  // Exported field_instance: 'node-bags_cases-field_brand'
+  $field_instances['node-bags_cases-field_brand'] = array(
+    'bundle' => 'bags_cases',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 7,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 2,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 13,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_brand',
+    'label' => 'Brand',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 7,
+    ),
+  );
+
+  // Exported field_instance: 'node-bags_cases-field_category'
+  $field_instances['node-bags_cases-field_category'] = array(
+    'bundle' => 'bags_cases',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 6,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 13,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 11,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_category',
+    'label' => 'Category',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 4,
+    ),
+  );
+
+  // Exported field_instance: 'node-bags_cases-field_collection'
+  $field_instances['node-bags_cases-field_collection'] = array(
+    'bundle' => 'bags_cases',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 4,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 12,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 12,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_collection',
+    'label' => 'Collection',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 3,
+    ),
+  );
+
+  // Exported field_instance: 'node-bags_cases-field_gender'
+  $field_instances['node-bags_cases-field_gender'] = array(
+    'bundle' => 'bags_cases',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 5,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 11,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 8,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_gender',
+    'label' => 'Gender',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 5,
+    ),
+  );
+
+  // Exported field_instance: 'node-bags_cases-field_product'
+  $field_instances['node-bags_cases-field_product'] = array(
+    'bundle' => 'bags_cases',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'commerce_cart',
+        'settings' => array(
+          'attributes_single' => 1,
+          'combine' => 1,
+          'default_quantity' => 1,
+          'line_item_type' => 'product',
+          'show_quantity' => 1,
+          'show_single_product_attributes' => FALSE,
+        ),
+        'type' => 'commerce_cart_add_to_cart_form',
+        'weight' => 3,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_cart',
+        'settings' => array(
+          'combine' => 1,
+          'default_quantity' => 1,
+          'line_item_type' => 'product',
+          'show_quantity' => 1,
+          'show_single_product_attributes' => FALSE,
+        ),
+        'type' => 'commerce_cart_add_to_cart_form',
+        'weight' => 5,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'hidden',
+        'module' => 'field_extractor',
+        'settings' => array(
+          'field_name' => 'field_color',
+          'formatter' => 'entityreference_entity_view',
+          'settings' => array(
+            'links' => 1,
+            'view_mode' => 'add_to_cart_form',
+          ),
+        ),
+        'type' => 'field_extractor',
+        'weight' => 9,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'div',
+    'field_name' => 'field_product',
+    'label' => 'Product variations',
+    'required' => 1,
+    'settings' => array(
+      'field_injection' => 1,
+      'referenceable_types' => array(
+        'bags_cases' => 'bags_cases',
+        'drinks' => 0,
+        'hats' => 0,
+        'shoes' => 0,
+        'storage_devices' => 0,
+        'tops' => 0,
+      ),
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'inline_entity_form',
+      'settings' => array(
+        'fields' => array(),
+        'type_settings' => array(
+          'allow_existing' => 0,
+          'autogenerate_title' => 1,
+          'delete_references' => 1,
+          'match_operator' => 'CONTAINS',
+          'use_variation_language' => 1,
+        ),
+      ),
+      'type' => 'inline_entity_form',
+      'weight' => 2,
+    ),
+  );
+
+  // Exported field_instance: 'node-bags_cases-title_field'
+  $field_instances['node-bags_cases-title_field'] = array(
+    'bundle' => 'bags_cases',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 8,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'hidden',
+        'module' => 'title',
+        'settings' => array(
+          'title_class' => '',
+          'title_link' => 'content',
+          'title_style' => '_none',
+        ),
+        'type' => 'title_linked',
+        'weight' => 1,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'h2',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => 1,
+    'settings' => array(
+      'hide_label' => array(
+        'entity' => 0,
+        'page' => 0,
+      ),
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Exported field_instance: 'node-drinks-body'
+  $field_instances['node-drinks-body'] = array(
+    'bundle' => 'drinks',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 1,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 4,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 12,
+      ),
+      'teaser' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(
+          'trim_length' => 600,
+        ),
+        'type' => 'text_summary_or_trimmed',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => '',
+    'field_name' => 'body',
+    'label' => 'Body',
+    'required' => 0,
+    'settings' => array(
+      'display_summary' => 0,
+      'text_processing' => 1,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'rows' => 20,
+        'summary_rows' => 5,
+      ),
+      'type' => 'text_textarea_with_summary',
+      'weight' => 1,
+    ),
+  );
+
+  // Exported field_instance: 'node-drinks-field_brand'
+  $field_instances['node-drinks-field_brand'] = array(
+    'bundle' => 'drinks',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 6,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 2,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 10,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_brand',
+    'label' => 'Brand',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 7,
+    ),
+  );
+
+  // Exported field_instance: 'node-drinks-field_category'
+  $field_instances['node-drinks-field_category'] = array(
+    'bundle' => 'drinks',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 6,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 13,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 11,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_category',
+    'label' => 'Category',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 4,
+    ),
+  );
+
+  // Exported field_instance: 'node-drinks-field_collection'
+  $field_instances['node-drinks-field_collection'] = array(
+    'bundle' => 'drinks',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 6,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 12,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 9,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_collection',
+    'label' => 'Collection',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 3,
+    ),
+  );
+
+  // Exported field_instance: 'node-drinks-field_gender'
+  $field_instances['node-drinks-field_gender'] = array(
+    'bundle' => 'drinks',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 9,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 10,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 8,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_gender',
+    'label' => 'Gender',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 5,
+    ),
+  );
+
+  // Exported field_instance: 'node-drinks-field_product'
+  $field_instances['node-drinks-field_product'] = array(
+    'bundle' => 'drinks',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'commerce_cart',
+        'settings' => array(
+          'combine' => TRUE,
+          'default_quantity' => 1,
+          'line_item_type' => 'product',
+          'show_quantity' => FALSE,
+          'show_single_product_attributes' => FALSE,
+        ),
+        'type' => 'commerce_cart_add_to_cart_form',
+        'weight' => 2,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_cart',
+        'settings' => array(
+          'combine' => 1,
+          'default_quantity' => 1,
+          'line_item_type' => 'product',
+          'show_quantity' => 1,
+          'show_single_product_attributes' => FALSE,
+        ),
+        'type' => 'commerce_cart_add_to_cart_form',
+        'weight' => 5,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'hidden',
+        'module' => 'field_extractor',
+        'settings' => array(
+          'field_name' => 'field_color',
+          'formatter' => 'entityreference_entity_view',
+          'settings' => array(
+            'links' => 1,
+            'view_mode' => 'add_to_cart_form',
+          ),
+        ),
+        'type' => 'field_extractor',
+        'weight' => 7,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'div',
+    'field_name' => 'field_product',
+    'label' => 'Product variations',
+    'required' => 1,
+    'settings' => array(
+      'field_injection' => 1,
+      'referenceable_types' => array(
+        'bags_cases' => 0,
+        'drinks' => 'drinks',
+        'hats' => 0,
+        'shoes' => 0,
+        'storage_devices' => 0,
+        'tops' => 0,
+      ),
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'inline_entity_form',
+      'settings' => array(
+        'fields' => array(),
+        'type_settings' => array(
+          'allow_existing' => 0,
+          'autogenerate_title' => 1,
+          'delete_references' => 1,
+          'match_operator' => 'CONTAINS',
+          'use_variation_language' => 1,
+        ),
+      ),
+      'type' => 'inline_entity_form',
+      'weight' => 2,
+    ),
+  );
+
+  // Exported field_instance: 'node-drinks-title_field'
+  $field_instances['node-drinks-title_field'] = array(
+    'bundle' => 'drinks',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 4,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'hidden',
+        'module' => 'title',
+        'settings' => array(
+          'title_class' => '',
+          'title_link' => 'content',
+          'title_style' => '_none',
+        ),
+        'type' => 'title_linked',
+        'weight' => 1,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'h2',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => 1,
+    'settings' => array(
+      'hide_label' => array(
+        'entity' => 0,
+        'page' => 0,
+      ),
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Exported field_instance: 'node-hats-body'
+  $field_instances['node-hats-body'] = array(
+    'bundle' => 'hats',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 1,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 4,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 13,
+      ),
+      'teaser' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(
+          'trim_length' => 600,
+        ),
+        'type' => 'text_summary_or_trimmed',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => '',
+    'field_name' => 'body',
+    'label' => 'Body',
+    'required' => 0,
+    'settings' => array(
+      'display_summary' => 0,
+      'text_processing' => 1,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'rows' => 20,
+        'summary_rows' => 5,
+      ),
+      'type' => 'text_textarea_with_summary',
+      'weight' => 1,
+    ),
+  );
+
+  // Exported field_instance: 'node-hats-field_brand'
+  $field_instances['node-hats-field_brand'] = array(
+    'bundle' => 'hats',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 6,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 2,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 11,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_brand',
+    'label' => 'Brand',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 7,
+    ),
+  );
+
+  // Exported field_instance: 'node-hats-field_category'
+  $field_instances['node-hats-field_category'] = array(
+    'bundle' => 'hats',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 5,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 11,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 12,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_category',
+    'label' => 'Category',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 4,
+    ),
+  );
+
+  // Exported field_instance: 'node-hats-field_collection'
+  $field_instances['node-hats-field_collection'] = array(
+    'bundle' => 'hats',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 3,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 9,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 10,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_collection',
+    'label' => 'Collection',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 3,
+    ),
+  );
+
+  // Exported field_instance: 'node-hats-field_gender'
+  $field_instances['node-hats-field_gender'] = array(
+    'bundle' => 'hats',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 4,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 10,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 9,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_gender',
+    'label' => 'Gender',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 5,
+    ),
+  );
+
+  // Exported field_instance: 'node-hats-field_product'
+  $field_instances['node-hats-field_product'] = array(
+    'bundle' => 'hats',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_cart',
+        'settings' => array(
+          'attributes_single' => FALSE,
+          'combine' => 1,
+          'default_quantity' => 1,
+          'line_item_type' => 'product',
+          'show_quantity' => 1,
+          'show_single_product_attributes' => FALSE,
+        ),
+        'type' => 'commerce_cart_add_to_cart_form',
+        'weight' => 2,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_cart',
+        'settings' => array(
+          'combine' => 1,
+          'default_quantity' => 1,
+          'line_item_type' => 'product',
+          'show_quantity' => 1,
+          'show_single_product_attributes' => FALSE,
+        ),
+        'type' => 'commerce_cart_add_to_cart_form',
+        'weight' => 5,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'hidden',
+        'module' => 'field_extractor',
+        'settings' => array(
+          'field_name' => 'field_color',
+          'formatter' => 'entityreference_entity_view',
+          'settings' => array(
+            'links' => 1,
+            'view_mode' => 'add_to_cart_form',
+          ),
+        ),
+        'type' => 'field_extractor',
+        'weight' => 8,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'div',
+    'field_name' => 'field_product',
+    'label' => 'Product variations',
+    'required' => 1,
+    'settings' => array(
+      'field_injection' => 1,
+      'referenceable_types' => array(
+        'bags_cases' => 0,
+        'drinks' => 0,
+        'hats' => 'hats',
+        'shoes' => 0,
+        'storage_devices' => 0,
+        'tops' => 0,
+      ),
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'inline_entity_form',
+      'settings' => array(
+        'fields' => array(),
+        'type_settings' => array(
+          'allow_existing' => 0,
+          'autogenerate_title' => 1,
+          'delete_references' => 1,
+          'match_operator' => 'CONTAINS',
+          'use_variation_language' => 1,
+        ),
+      ),
+      'type' => 'inline_entity_form',
+      'weight' => 2,
+    ),
+  );
+
+  // Exported field_instance: 'node-hats-title_field'
+  $field_instances['node-hats-title_field'] = array(
+    'bundle' => 'hats',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 7,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'hidden',
+        'module' => 'title',
+        'settings' => array(
+          'title_class' => '',
+          'title_link' => 'content',
+          'title_style' => '_none',
+        ),
+        'type' => 'title_linked',
+        'weight' => 1,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'h2',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => 1,
+    'settings' => array(
+      'hide_label' => array(
+        'entity' => 0,
+        'page' => 0,
+      ),
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Exported field_instance: 'node-shoes-body'
+  $field_instances['node-shoes-body'] = array(
+    'bundle' => 'shoes',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 1,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 4,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 13,
+      ),
+      'teaser' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(
+          'trim_length' => 600,
+        ),
+        'type' => 'text_summary_or_trimmed',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => '',
+    'field_name' => 'body',
+    'label' => 'Body',
+    'required' => 0,
+    'settings' => array(
+      'display_summary' => 0,
+      'text_processing' => 1,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'rows' => 20,
+        'summary_rows' => 5,
+      ),
+      'type' => 'text_textarea_with_summary',
+      'weight' => 1,
+    ),
+  );
+
+  // Exported field_instance: 'node-shoes-field_brand'
+  $field_instances['node-shoes-field_brand'] = array(
+    'bundle' => 'shoes',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 7,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 2,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 12,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_brand',
+    'label' => 'Brand',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 7,
+    ),
+  );
+
+  // Exported field_instance: 'node-shoes-field_category'
+  $field_instances['node-shoes-field_category'] = array(
+    'bundle' => 'shoes',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 6,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 14,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 10,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_category',
+    'label' => 'Category',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 4,
+    ),
+  );
+
+  // Exported field_instance: 'node-shoes-field_collection'
+  $field_instances['node-shoes-field_collection'] = array(
+    'bundle' => 'shoes',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 4,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 12,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 9,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_collection',
+    'label' => 'Collection',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 3,
+    ),
+  );
+
+  // Exported field_instance: 'node-shoes-field_gender'
+  $field_instances['node-shoes-field_gender'] = array(
+    'bundle' => 'shoes',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 5,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 13,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 8,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_gender',
+    'label' => 'Gender',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 5,
+    ),
+  );
+
+  // Exported field_instance: 'node-shoes-field_product'
+  $field_instances['node-shoes-field_product'] = array(
+    'bundle' => 'shoes',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'commerce_cart',
+        'settings' => array(
+          'attributes_single' => FALSE,
+          'combine' => 1,
+          'default_quantity' => 1,
+          'line_item_type' => 'product',
+          'show_quantity' => 1,
+          'show_single_product_attributes' => FALSE,
+        ),
+        'type' => 'commerce_cart_add_to_cart_form',
+        'weight' => 3,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_cart',
+        'settings' => array(
+          'combine' => 1,
+          'default_quantity' => 1,
+          'line_item_type' => 'product',
+          'show_quantity' => 1,
+          'show_single_product_attributes' => FALSE,
+        ),
+        'type' => 'commerce_cart_add_to_cart_form',
+        'weight' => 5,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'hidden',
+        'module' => 'field_extractor',
+        'settings' => array(
+          'field_name' => 'field_color',
+          'formatter' => 'entityreference_entity_view',
+          'settings' => array(
+            'links' => 1,
+            'view_mode' => 'add_to_cart_form',
+          ),
+        ),
+        'type' => 'field_extractor',
+        'weight' => 11,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'div',
+    'field_name' => 'field_product',
+    'label' => 'Product variations',
+    'required' => 1,
+    'settings' => array(
+      'field_injection' => 1,
+      'referenceable_types' => array(
+        'bags_cases' => 0,
+        'drinks' => 0,
+        'hats' => 0,
+        'shoes' => 'shoes',
+        'storage_devices' => 0,
+        'tops' => 0,
+      ),
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'inline_entity_form',
+      'settings' => array(
+        'fields' => array(),
+        'type_settings' => array(
+          'allow_existing' => 0,
+          'autogenerate_title' => 1,
+          'delete_references' => 1,
+          'match_operator' => 'CONTAINS',
+          'use_variation_language' => 1,
+        ),
+      ),
+      'type' => 'inline_entity_form',
+      'weight' => 2,
+    ),
+  );
+
+  // Exported field_instance: 'node-shoes-title_field'
+  $field_instances['node-shoes-title_field'] = array(
+    'bundle' => 'shoes',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 8,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'hidden',
+        'module' => 'title',
+        'settings' => array(
+          'title_class' => '',
+          'title_link' => 'content',
+          'title_style' => '_none',
+        ),
+        'type' => 'title_linked',
+        'weight' => 1,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'h2',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => 1,
+    'settings' => array(
+      'hide_label' => array(
+        'entity' => 0,
+        'page' => 0,
+      ),
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Exported field_instance: 'node-storage_devices-body'
+  $field_instances['node-storage_devices-body'] = array(
+    'bundle' => 'storage_devices',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 1,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 4,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 12,
+      ),
+      'teaser' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(
+          'trim_length' => 600,
+        ),
+        'type' => 'text_summary_or_trimmed',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => '',
+    'field_name' => 'body',
+    'label' => 'Body',
+    'required' => 0,
+    'settings' => array(
+      'display_summary' => 0,
+      'text_processing' => 1,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'rows' => 20,
+        'summary_rows' => 5,
+      ),
+      'type' => 'text_textarea_with_summary',
+      'weight' => 1,
+    ),
+  );
+
+  // Exported field_instance: 'node-storage_devices-field_brand'
+  $field_instances['node-storage_devices-field_brand'] = array(
+    'bundle' => 'storage_devices',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 7,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 2,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 9,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_brand',
+    'label' => 'Brand',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 7,
+    ),
+  );
+
+  // Exported field_instance: 'node-storage_devices-field_category'
+  $field_instances['node-storage_devices-field_category'] = array(
+    'bundle' => 'storage_devices',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 6,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 12,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 10,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_category',
+    'label' => 'Category',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 4,
+    ),
+  );
+
+  // Exported field_instance: 'node-storage_devices-field_collection'
+  $field_instances['node-storage_devices-field_collection'] = array(
+    'bundle' => 'storage_devices',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 4,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 10,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 11,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_collection',
+    'label' => 'Collection',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 3,
+    ),
+  );
+
+  // Exported field_instance: 'node-storage_devices-field_gender'
+  $field_instances['node-storage_devices-field_gender'] = array(
+    'bundle' => 'storage_devices',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 5,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 11,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 8,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_gender',
+    'label' => 'Gender',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 5,
+    ),
+  );
+
+  // Exported field_instance: 'node-storage_devices-field_product'
+  $field_instances['node-storage_devices-field_product'] = array(
+    'bundle' => 'storage_devices',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'commerce_cart',
+        'settings' => array(
+          'attributes_single' => FALSE,
+          'combine' => 1,
+          'default_quantity' => 1,
+          'line_item_type' => 'product',
+          'show_quantity' => 0,
+          'show_single_product_attributes' => FALSE,
+        ),
+        'type' => 'commerce_cart_add_to_cart_form',
+        'weight' => 3,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_cart',
+        'settings' => array(
+          'combine' => 1,
+          'default_quantity' => 1,
+          'line_item_type' => 'product',
+          'show_quantity' => 1,
+          'show_single_product_attributes' => FALSE,
+        ),
+        'type' => 'commerce_cart_add_to_cart_form',
+        'weight' => 5,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 7,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'div',
+    'field_name' => 'field_product',
+    'label' => 'Product variations',
+    'required' => 1,
+    'settings' => array(
+      'field_injection' => 1,
+      'referenceable_types' => array(
+        'bags_cases' => 0,
+        'drinks' => 0,
+        'hats' => 0,
+        'shoes' => 0,
+        'storage_devices' => 'storage_devices',
+        'tops' => 0,
+      ),
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'inline_entity_form',
+      'settings' => array(
+        'fields' => array(),
+        'type_settings' => array(
+          'allow_existing' => 0,
+          'autogenerate_title' => 1,
+          'delete_references' => 1,
+          'match_operator' => 'CONTAINS',
+          'use_variation_language' => 1,
+        ),
+      ),
+      'type' => 'inline_entity_form',
+      'weight' => 2,
+    ),
+  );
+
+  // Exported field_instance: 'node-storage_devices-title_field'
+  $field_instances['node-storage_devices-title_field'] = array(
+    'bundle' => 'storage_devices',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 8,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'hidden',
+        'module' => 'title',
+        'settings' => array(
+          'title_class' => '',
+          'title_link' => 'content',
+          'title_style' => '_none',
+        ),
+        'type' => 'title_linked',
+        'weight' => 1,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'h2',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => 1,
+    'settings' => array(
+      'hide_label' => array(
+        'entity' => 0,
+        'page' => 0,
+      ),
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Exported field_instance: 'node-tops-body'
+  $field_instances['node-tops-body'] = array(
+    'bundle' => 'tops',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 1,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 4,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 13,
+      ),
+      'teaser' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(
+          'trim_length' => 600,
+        ),
+        'type' => 'text_summary_or_trimmed',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'body',
+    'label' => 'Body',
+    'required' => FALSE,
+    'settings' => array(
+      'display_summary' => TRUE,
+      'text_processing' => 1,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'text',
+      'settings' => array(
+        'rows' => 20,
+        'summary_rows' => 5,
+      ),
+      'type' => 'text_textarea_with_summary',
+      'weight' => 1,
+    ),
+  );
+
+  // Exported field_instance: 'node-tops-field_brand'
+  $field_instances['node-tops-field_brand'] = array(
+    'bundle' => 'tops',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 7,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_plain',
+        'weight' => 2,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 12,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_brand',
+    'label' => 'Brand',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 7,
+    ),
+  );
+
+  // Exported field_instance: 'node-tops-field_category'
+  $field_instances['node-tops-field_category'] = array(
+    'bundle' => 'tops',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 6,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 11,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 10,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_category',
+    'label' => 'Category',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 4,
+    ),
+  );
+
+  // Exported field_instance: 'node-tops-field_collection'
+  $field_instances['node-tops-field_collection'] = array(
+    'bundle' => 'tops',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 4,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 12,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 9,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_collection',
+    'label' => 'Collection',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 3,
+    ),
+  );
+
+  // Exported field_instance: 'node-tops-field_gender'
+  $field_instances['node-tops-field_gender'] = array(
+    'bundle' => 'tops',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'taxonomy',
+        'settings' => array(),
+        'type' => 'taxonomy_term_reference_link',
+        'weight' => 5,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 13,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 8,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_gender',
+    'label' => 'Gender',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'apply_chosen' => 0,
+      ),
+      'type' => 'options_select',
+      'weight' => 5,
+    ),
+  );
+
+  // Exported field_instance: 'node-tops-field_product'
+  $field_instances['node-tops-field_product'] = array(
+    'bundle' => 'tops',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'commerce_cart',
+        'settings' => array(
+          'attributes_single' => FALSE,
+          'combine' => 1,
+          'default_quantity' => 1,
+          'line_item_type' => 'product',
+          'show_quantity' => 0,
+          'show_single_product_attributes' => FALSE,
+        ),
+        'type' => 'commerce_cart_add_to_cart_form',
+        'weight' => 3,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_cart',
+        'settings' => array(
+          'combine' => 1,
+          'default_quantity' => 1,
+          'line_item_type' => 'product',
+          'show_quantity' => 1,
+          'show_single_product_attributes' => FALSE,
+        ),
+        'type' => 'commerce_cart_add_to_cart_form',
+        'weight' => 5,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'hidden',
+        'module' => 'field_extractor',
+        'settings' => array(
+          'field_name' => 'field_color',
+          'formatter' => 'entityreference_entity_view',
+          'settings' => array(
+            'links' => 1,
+            'view_mode' => 'add_to_cart_form',
+          ),
+        ),
+        'type' => 'field_extractor',
+        'weight' => 11,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'div',
+    'field_name' => 'field_product',
+    'label' => 'Product variations',
+    'required' => 1,
+    'settings' => array(
+      'field_injection' => 1,
+      'referenceable_types' => array(
+        'bags_cases' => 0,
+        'drinks' => 0,
+        'hats' => 0,
+        'shoes' => 0,
+        'storage_devices' => 0,
+        'tops' => 'tops',
+      ),
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'inline_entity_form',
+      'settings' => array(
+        'fields' => array(),
+        'type_settings' => array(
+          'allow_existing' => 0,
+          'autogenerate_title' => 1,
+          'delete_references' => 1,
+          'match_operator' => 'CONTAINS',
+          'use_variation_language' => 1,
+        ),
+      ),
+      'type' => 'inline_entity_form',
+      'weight' => 2,
+    ),
+  );
+
+  // Exported field_instance: 'node-tops-title_field'
+  $field_instances['node-tops-title_field'] = array(
+    'bundle' => 'tops',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 8,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'hidden',
+        'module' => 'title',
+        'settings' => array(
+          'title_class' => '',
+          'title_link' => 'content',
+          'title_style' => '_none',
+        ),
+        'type' => 'title_linked',
+        'weight' => 1,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'h2',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => 1,
+    'settings' => array(
+      'hide_label' => array(
+        'entity' => 0,
+        'page' => 0,
+      ),
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Exported field_instance: 'taxonomy_term-category-field_category_color'
+  $field_instances['taxonomy_term-category-field_category_color'] = array(
+    'bundle' => 'category',
+    'default_value' => array(
+      0 => array(
+        'value' => '#A8A8A8',
+      ),
+    ),
+    'deleted' => 0,
+    'description' => 'Hexadecimal color code',
+    'display' => array(
+      'add_to_cart_form' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'above',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'taxonomy_term',
+    'field_name' => 'field_category_color',
+    'label' => 'Color',
+    'required' => 0,
+    'settings' => array(
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 7,
+      ),
+      'type' => 'text_textfield',
+      'weight' => 1,
+    ),
+  );
+
+  // Exported field_instance: 'taxonomy_term-collection-field_image'
+  $field_instances['taxonomy_term-collection-field_image'] = array(
+    'bundle' => 'collection',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_form' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => '',
+          'image_style' => '',
+        ),
+        'type' => 'image',
+        'weight' => 0,
+      ),
+      'full' => array(
+        'label' => 'hidden',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => '',
+          'image_style' => '',
+        ),
+        'type' => 'image',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'taxonomy_term',
+    'field_name' => 'field_image',
+    'label' => 'Image',
+    'required' => FALSE,
+    'settings' => array(
+      'alt_field' => 0,
+      'default_image' => 0,
+      'file_directory' => '',
+      'file_extensions' => 'png gif jpg jpeg',
+      'max_filesize' => '',
+      'max_resolution' => '',
+      'min_resolution' => '',
+      'title_field' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'image',
+      'settings' => array(
+        'preview_image_style' => 'thumbnail',
+        'progress_indicator' => 'throbber',
+      ),
+      'type' => 'image_image',
+      'weight' => 2,
+    ),
+  );
+
+  // Exported field_instance: 'taxonomy_term-color-field_category_color'
+  $field_instances['taxonomy_term-color-field_category_color'] = array(
+    'bundle' => 'color',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'add_to_cart_form' => array(
+        'label' => 'hidden',
+        'module' => 'commerce_fancy_attributes',
+        'settings' => array(),
+        'type' => 'commerce_fancy_attributes_color',
+        'weight' => 0,
+      ),
+      'default' => array(
+        'label' => 'hidden',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 1,
+      ),
+    ),
+    'entity_type' => 'taxonomy_term',
+    'field_name' => 'field_category_color',
+    'label' => 'Color',
+    'required' => 1,
+    'settings' => array(
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => 2,
+    ),
+  );
+
+  // Translatables
+  // Included for use with string extractors like potx.
+  t('Body');
+  t('Brand');
+  t('Capacity');
+  t('Category');
+  t('Collection');
+  t('Color');
+  t('Gender');
+  t('Hexadecimal color code');
+  t('Image');
+  t('Images');
+  t('Price');
+  t('Product variations');
+  t('Size');
+  t('Title');
+
+  return $field_instances;
+}
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.inc
index 705bf24..fb7d740 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.inc
@@ -27,7 +27,7 @@ function commerce_kickstart_product_commerce_flat_rate_default_services() {
       'module' => 'commerce_flat_rate',
       'title' => 'Express Shipping',
       'base_rate' => array(
-        'amount' => '1500',
+        'amount' => 1500,
         'currency_code' => 'USD',
         'data' => array(),
       ),
@@ -52,7 +52,7 @@ function commerce_kickstart_product_commerce_flat_rate_default_services() {
       'module' => 'commerce_flat_rate',
       'title' => 'Free Shipping',
       'base_rate' => array(
-        'amount' => '0',
+        'amount' => 0,
         'currency_code' => 'USD',
         'data' => array(),
       ),
@@ -77,7 +77,7 @@ function commerce_kickstart_product_commerce_flat_rate_default_services() {
       'module' => 'commerce_flat_rate',
       'title' => 'Standard Shipping',
       'base_rate' => array(
-        'amount' => '800',
+        'amount' => 800,
         'currency_code' => 'USD',
         'data' => array(),
       ),
@@ -98,42 +98,42 @@ function commerce_kickstart_product_commerce_product_default_types() {
       'name' => 'Bags & Cases',
       'description' => '<em>Bags & Cases</em> are products which contain a size and a color.',
       'help' => '',
-      'revision' => '1',
+      'revision' => 1,
     ),
     'drinks' => array(
       'type' => 'drinks',
       'name' => 'Drinks',
       'description' => '<em>Drinks</em> are products which contain a color.',
       'help' => '',
-      'revision' => '1',
+      'revision' => 1,
     ),
     'hats' => array(
       'type' => 'hats',
       'name' => 'Hats',
       'description' => '<em>Hats</em> are products which contain a size and a color.',
       'help' => '',
-      'revision' => '1',
+      'revision' => 1,
     ),
     'shoes' => array(
       'type' => 'shoes',
       'name' => 'Shoes',
       'description' => '<em>Shoes</em> are products which contain a size and a color.',
       'help' => '',
-      'revision' => '1',
+      'revision' => 1,
     ),
     'storage_devices' => array(
       'type' => 'storage_devices',
       'name' => 'Storage Devices',
       'description' => '<em>Storage devices</em> are products which contain a capacity.',
       'help' => '',
-      'revision' => '1',
+      'revision' => 1,
     ),
     'tops' => array(
       'type' => 'tops',
       'name' => 'Tops',
       'description' => '<em>Tops</em> are products which contain a size and a color.',
       'help' => '',
-      'revision' => '1',
+      'revision' => 1,
     ),
   );
   return $items;
@@ -142,8 +142,10 @@ function commerce_kickstart_product_commerce_product_default_types() {
 /**
  * Implements hook_ctools_plugin_api().
  */
-function commerce_kickstart_product_ctools_plugin_api() {
-  list($module, $api) = func_get_args();
+function commerce_kickstart_product_ctools_plugin_api($module = NULL, $api = NULL) {
+  if ($module == "commerce_autosku" && $api == "autosku_pattern") {
+    return array("version" => "1");
+  }
   if ($module == "strongarm" && $api == "strongarm") {
     return array("version" => "1");
   }
@@ -169,12 +171,13 @@ function commerce_kickstart_product_image_default_styles() {
         'module' => 'image',
         'name' => 'image_scale_and_crop',
         'data' => array(
-          'width' => '400',
-          'height' => '550',
+          'width' => 400,
+          'height' => 550,
         ),
-        'weight' => '1',
+        'weight' => 1,
       ),
     ),
+    'label' => 'product_full',
   );
 
   // Exported image style: product_medium.
@@ -191,12 +194,13 @@ function commerce_kickstart_product_image_default_styles() {
         'module' => 'image',
         'name' => 'image_scale_and_crop',
         'data' => array(
-          'width' => '230',
-          'height' => '260',
+          'width' => 230,
+          'height' => 260,
         ),
-        'weight' => '1',
+        'weight' => 1,
       ),
     ),
+    'label' => 'product_medium',
   );
 
   // Exported image style: product_thumbnail.
@@ -213,12 +217,13 @@ function commerce_kickstart_product_image_default_styles() {
         'module' => 'image',
         'name' => 'image_scale_and_crop',
         'data' => array(
-          'width' => '110',
-          'height' => '130',
+          'width' => 110,
+          'height' => 130,
         ),
-        'weight' => '1',
+        'weight' => 1,
       ),
     ),
+    'label' => 'product_thumbnail',
   );
 
   return $styles;
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.taxonomy.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.taxonomy.inc
index 8ba0ca2..b1f4ce6 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.taxonomy.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.taxonomy.inc
@@ -13,81 +13,81 @@ function commerce_kickstart_product_taxonomy_default_vocabularies() {
       'name' => 'Bag size',
       'machine_name' => 'bag_size',
       'description' => '',
-      'hierarchy' => '0',
+      'hierarchy' => 0,
       'module' => 'taxonomy',
-      'weight' => '0',
+      'weight' => 0,
     ),
     'brand' => array(
       'name' => 'Brand',
       'machine_name' => 'brand',
       'description' => '',
-      'hierarchy' => '0',
+      'hierarchy' => 0,
       'module' => 'taxonomy',
-      'weight' => '0',
+      'weight' => 0,
     ),
     'category' => array(
       'name' => 'Category',
       'machine_name' => 'category',
       'description' => '',
-      'hierarchy' => '0',
+      'hierarchy' => 0,
       'module' => 'taxonomy',
-      'weight' => '0',
+      'weight' => 0,
     ),
     'collection' => array(
       'name' => 'Collection',
       'machine_name' => 'collection',
       'description' => '',
-      'hierarchy' => '0',
+      'hierarchy' => 0,
       'module' => 'taxonomy',
-      'weight' => '0',
+      'weight' => 0,
     ),
     'color' => array(
       'name' => 'Color',
       'machine_name' => 'color',
       'description' => '',
-      'hierarchy' => '0',
+      'hierarchy' => 0,
       'module' => 'taxonomy',
-      'weight' => '0',
+      'weight' => 0,
     ),
     'gender' => array(
       'name' => 'Gender',
       'machine_name' => 'gender',
       'description' => '',
-      'hierarchy' => '0',
+      'hierarchy' => 0,
       'module' => 'taxonomy',
-      'weight' => '0',
+      'weight' => 0,
     ),
     'hat_size' => array(
       'name' => 'Hat size',
       'machine_name' => 'hat_size',
       'description' => '',
-      'hierarchy' => '0',
+      'hierarchy' => 0,
       'module' => 'taxonomy',
-      'weight' => '0',
+      'weight' => 0,
     ),
     'shoe_size' => array(
       'name' => 'Shoe size',
       'machine_name' => 'shoe_size',
       'description' => '',
-      'hierarchy' => '0',
+      'hierarchy' => 0,
       'module' => 'taxonomy',
-      'weight' => '0',
+      'weight' => 0,
     ),
     'storage_capacity' => array(
       'name' => 'Storage capacity',
       'machine_name' => 'storage_capacity',
       'description' => '',
-      'hierarchy' => '0',
+      'hierarchy' => 0,
       'module' => 'taxonomy',
-      'weight' => '0',
+      'weight' => 0,
     ),
     'top_size' => array(
       'name' => 'Top size',
       'machine_name' => 'top_size',
       'description' => '',
-      'hierarchy' => '0',
+      'hierarchy' => 0,
       'module' => 'taxonomy',
-      'weight' => '0',
+      'weight' => 0,
     ),
   );
 }
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.user_permission.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.user_permission.inc
index 44dae48..388770a 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.user_permission.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.features.user_permission.inc
@@ -10,134 +10,134 @@
 function commerce_kickstart_product_user_default_permissions() {
   $permissions = array();
 
-  // Exported permission: view any commerce_product entity of bundle bags_cases.
+  // Exported permission: 'view any commerce_product entity of bundle bags_cases'.
   $permissions['view any commerce_product entity of bundle bags_cases'] = array(
     'name' => 'view any commerce_product entity of bundle bags_cases',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'anonymous user',
-      2 => 'authenticated user',
+      'administrator' => 'administrator',
+      'anonymous user' => 'anonymous user',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_product',
   );
 
-  // Exported permission: view any commerce_product entity of bundle drinks.
+  // Exported permission: 'view any commerce_product entity of bundle drinks'.
   $permissions['view any commerce_product entity of bundle drinks'] = array(
     'name' => 'view any commerce_product entity of bundle drinks',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'anonymous user',
-      2 => 'authenticated user',
+      'administrator' => 'administrator',
+      'anonymous user' => 'anonymous user',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_product',
   );
 
-  // Exported permission: view any commerce_product entity of bundle hats.
+  // Exported permission: 'view any commerce_product entity of bundle hats'.
   $permissions['view any commerce_product entity of bundle hats'] = array(
     'name' => 'view any commerce_product entity of bundle hats',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'anonymous user',
-      2 => 'authenticated user',
+      'administrator' => 'administrator',
+      'anonymous user' => 'anonymous user',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_product',
   );
 
-  // Exported permission: view any commerce_product entity of bundle shoes.
+  // Exported permission: 'view any commerce_product entity of bundle shoes'.
   $permissions['view any commerce_product entity of bundle shoes'] = array(
     'name' => 'view any commerce_product entity of bundle shoes',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'anonymous user',
-      2 => 'authenticated user',
+      'administrator' => 'administrator',
+      'anonymous user' => 'anonymous user',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_product',
   );
 
-  // Exported permission: view any commerce_product entity of bundle storage_devices.
+  // Exported permission: 'view any commerce_product entity of bundle storage_devices'.
   $permissions['view any commerce_product entity of bundle storage_devices'] = array(
     'name' => 'view any commerce_product entity of bundle storage_devices',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'anonymous user',
-      2 => 'authenticated user',
+      'administrator' => 'administrator',
+      'anonymous user' => 'anonymous user',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_product',
   );
 
-  // Exported permission: view any commerce_product entity of bundle tops.
+  // Exported permission: 'view any commerce_product entity of bundle tops'.
   $permissions['view any commerce_product entity of bundle tops'] = array(
     'name' => 'view any commerce_product entity of bundle tops',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'anonymous user',
-      2 => 'authenticated user',
+      'administrator' => 'administrator',
+      'anonymous user' => 'anonymous user',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_product',
   );
 
-  // Exported permission: view own commerce_product entities of bundle bags_cases.
+  // Exported permission: 'view own commerce_product entities of bundle bags_cases'.
   $permissions['view own commerce_product entities of bundle bags_cases'] = array(
     'name' => 'view own commerce_product entities of bundle bags_cases',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'anonymous user',
-      2 => 'authenticated user',
+      'administrator' => 'administrator',
+      'anonymous user' => 'anonymous user',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_product',
   );
 
-  // Exported permission: view own commerce_product entities of bundle drinks.
+  // Exported permission: 'view own commerce_product entities of bundle drinks'.
   $permissions['view own commerce_product entities of bundle drinks'] = array(
     'name' => 'view own commerce_product entities of bundle drinks',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'anonymous user',
-      2 => 'authenticated user',
+      'administrator' => 'administrator',
+      'anonymous user' => 'anonymous user',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_product',
   );
 
-  // Exported permission: view own commerce_product entities of bundle hats.
+  // Exported permission: 'view own commerce_product entities of bundle hats'.
   $permissions['view own commerce_product entities of bundle hats'] = array(
     'name' => 'view own commerce_product entities of bundle hats',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'anonymous user',
-      2 => 'authenticated user',
+      'administrator' => 'administrator',
+      'anonymous user' => 'anonymous user',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_product',
   );
 
-  // Exported permission: view own commerce_product entities of bundle shoes.
+  // Exported permission: 'view own commerce_product entities of bundle shoes'.
   $permissions['view own commerce_product entities of bundle shoes'] = array(
     'name' => 'view own commerce_product entities of bundle shoes',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'anonymous user',
-      2 => 'authenticated user',
+      'administrator' => 'administrator',
+      'anonymous user' => 'anonymous user',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_product',
   );
 
-  // Exported permission: view own commerce_product entities of bundle storage_devices.
+  // Exported permission: 'view own commerce_product entities of bundle storage_devices'.
   $permissions['view own commerce_product entities of bundle storage_devices'] = array(
     'name' => 'view own commerce_product entities of bundle storage_devices',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'anonymous user',
-      2 => 'authenticated user',
+      'administrator' => 'administrator',
+      'anonymous user' => 'anonymous user',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_product',
   );
 
-  // Exported permission: view own commerce_product entities of bundle tops.
+  // Exported permission: 'view own commerce_product entities of bundle tops'.
   $permissions['view own commerce_product entities of bundle tops'] = array(
     'name' => 'view own commerce_product entities of bundle tops',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'anonymous user',
-      2 => 'authenticated user',
+      'administrator' => 'administrator',
+      'anonymous user' => 'anonymous user',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_product',
   );
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.info b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.info
index 350c5ee..37254b1 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.info
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.info
@@ -2,7 +2,6 @@ name = Commerce Kickstart Product
 description = Provides the taxonomy vocabularies, product types, product display types, and related functionality.
 core = 7.x
 package = Commerce Kickstart
-php = 5.2.4
 dependencies[] = cloud_zoom
 dependencies[] = commerce_autosku
 dependencies[] = commerce_cart
@@ -15,6 +14,9 @@ dependencies[] = commerce_price
 dependencies[] = commerce_product
 dependencies[] = commerce_product_reference
 dependencies[] = commerce_product_ui
+dependencies[] = commerce_shipping
+dependencies[] = ctools
+dependencies[] = entity
 dependencies[] = entityreference
 dependencies[] = facetapi
 dependencies[] = features
@@ -24,9 +26,17 @@ dependencies[] = image_delta_formatter
 dependencies[] = inline_entity_form
 dependencies[] = menu
 dependencies[] = options
+dependencies[] = rules
 dependencies[] = strongarm
 dependencies[] = taxonomy
+dependencies[] = text
 dependencies[] = title
+features[commerce_autosku_patterns][] = bags_cases
+features[commerce_autosku_patterns][] = drinks
+features[commerce_autosku_patterns][] = hats
+features[commerce_autosku_patterns][] = shoes
+features[commerce_autosku_patterns][] = storage_devices
+features[commerce_autosku_patterns][] = tops
 features[commerce_flat_rate_services][] = express_shipping
 features[commerce_flat_rate_services][] = free_shipping
 features[commerce_flat_rate_services][] = standard_shipping
@@ -36,81 +46,96 @@ features[commerce_product_type][] = hats
 features[commerce_product_type][] = shoes
 features[commerce_product_type][] = storage_devices
 features[commerce_product_type][] = tops
+features[ctools][] = commerce_autosku:autosku_pattern:1
 features[ctools][] = strongarm:strongarm:1
-features[features_api][] = api:1
-features[field][] = commerce_product-bags_cases-commerce_price
-features[field][] = commerce_product-bags_cases-field_bag_size
-features[field][] = commerce_product-bags_cases-field_color
-features[field][] = commerce_product-bags_cases-field_images
-features[field][] = commerce_product-bags_cases-title_field
-features[field][] = commerce_product-drinks-commerce_price
-features[field][] = commerce_product-drinks-field_color
-features[field][] = commerce_product-drinks-field_images
-features[field][] = commerce_product-drinks-title_field
-features[field][] = commerce_product-hats-commerce_price
-features[field][] = commerce_product-hats-field_color
-features[field][] = commerce_product-hats-field_hat_size
-features[field][] = commerce_product-hats-field_images
-features[field][] = commerce_product-hats-title_field
-features[field][] = commerce_product-shoes-commerce_price
-features[field][] = commerce_product-shoes-field_color
-features[field][] = commerce_product-shoes-field_images
-features[field][] = commerce_product-shoes-field_shoe_size
-features[field][] = commerce_product-shoes-title_field
-features[field][] = commerce_product-storage_devices-commerce_price
-features[field][] = commerce_product-storage_devices-field_images
-features[field][] = commerce_product-storage_devices-field_storage_capacity
-features[field][] = commerce_product-storage_devices-title_field
-features[field][] = commerce_product-tops-commerce_price
-features[field][] = commerce_product-tops-field_color
-features[field][] = commerce_product-tops-field_images
-features[field][] = commerce_product-tops-field_top_size
-features[field][] = commerce_product-tops-title_field
-features[field][] = node-bags_cases-body
-features[field][] = node-bags_cases-field_brand
-features[field][] = node-bags_cases-field_category
-features[field][] = node-bags_cases-field_collection
-features[field][] = node-bags_cases-field_gender
-features[field][] = node-bags_cases-field_product
-features[field][] = node-bags_cases-title_field
-features[field][] = node-drinks-body
-features[field][] = node-drinks-field_brand
-features[field][] = node-drinks-field_category
-features[field][] = node-drinks-field_collection
-features[field][] = node-drinks-field_gender
-features[field][] = node-drinks-field_product
-features[field][] = node-drinks-title_field
-features[field][] = node-hats-body
-features[field][] = node-hats-field_brand
-features[field][] = node-hats-field_category
-features[field][] = node-hats-field_collection
-features[field][] = node-hats-field_gender
-features[field][] = node-hats-field_product
-features[field][] = node-hats-title_field
-features[field][] = node-shoes-body
-features[field][] = node-shoes-field_brand
-features[field][] = node-shoes-field_category
-features[field][] = node-shoes-field_collection
-features[field][] = node-shoes-field_gender
-features[field][] = node-shoes-field_product
-features[field][] = node-shoes-title_field
-features[field][] = node-storage_devices-body
-features[field][] = node-storage_devices-field_brand
-features[field][] = node-storage_devices-field_category
-features[field][] = node-storage_devices-field_collection
-features[field][] = node-storage_devices-field_gender
-features[field][] = node-storage_devices-field_product
-features[field][] = node-storage_devices-title_field
-features[field][] = node-tops-body
-features[field][] = node-tops-field_brand
-features[field][] = node-tops-field_category
-features[field][] = node-tops-field_collection
-features[field][] = node-tops-field_gender
-features[field][] = node-tops-field_product
-features[field][] = node-tops-title_field
-features[field][] = taxonomy_term-category-field_category_color
-features[field][] = taxonomy_term-collection-field_image
-features[field][] = taxonomy_term-color-field_category_color
+features[features_api][] = api:2
+features[field_base][] = commerce_price
+features[field_base][] = field_bag_size
+features[field_base][] = field_brand
+features[field_base][] = field_category
+features[field_base][] = field_category_color
+features[field_base][] = field_collection
+features[field_base][] = field_color
+features[field_base][] = field_gender
+features[field_base][] = field_hat_size
+features[field_base][] = field_images
+features[field_base][] = field_product
+features[field_base][] = field_shoe_size
+features[field_base][] = field_storage_capacity
+features[field_base][] = field_top_size
+features[field_instance][] = commerce_product-bags_cases-commerce_price
+features[field_instance][] = commerce_product-bags_cases-field_bag_size
+features[field_instance][] = commerce_product-bags_cases-field_color
+features[field_instance][] = commerce_product-bags_cases-field_images
+features[field_instance][] = commerce_product-bags_cases-title_field
+features[field_instance][] = commerce_product-drinks-commerce_price
+features[field_instance][] = commerce_product-drinks-field_color
+features[field_instance][] = commerce_product-drinks-field_images
+features[field_instance][] = commerce_product-drinks-title_field
+features[field_instance][] = commerce_product-hats-commerce_price
+features[field_instance][] = commerce_product-hats-field_color
+features[field_instance][] = commerce_product-hats-field_hat_size
+features[field_instance][] = commerce_product-hats-field_images
+features[field_instance][] = commerce_product-hats-title_field
+features[field_instance][] = commerce_product-shoes-commerce_price
+features[field_instance][] = commerce_product-shoes-field_color
+features[field_instance][] = commerce_product-shoes-field_images
+features[field_instance][] = commerce_product-shoes-field_shoe_size
+features[field_instance][] = commerce_product-shoes-title_field
+features[field_instance][] = commerce_product-storage_devices-commerce_price
+features[field_instance][] = commerce_product-storage_devices-field_images
+features[field_instance][] = commerce_product-storage_devices-field_storage_capacity
+features[field_instance][] = commerce_product-storage_devices-title_field
+features[field_instance][] = commerce_product-tops-commerce_price
+features[field_instance][] = commerce_product-tops-field_color
+features[field_instance][] = commerce_product-tops-field_images
+features[field_instance][] = commerce_product-tops-field_top_size
+features[field_instance][] = commerce_product-tops-title_field
+features[field_instance][] = node-bags_cases-body
+features[field_instance][] = node-bags_cases-field_brand
+features[field_instance][] = node-bags_cases-field_category
+features[field_instance][] = node-bags_cases-field_collection
+features[field_instance][] = node-bags_cases-field_gender
+features[field_instance][] = node-bags_cases-field_product
+features[field_instance][] = node-bags_cases-title_field
+features[field_instance][] = node-drinks-body
+features[field_instance][] = node-drinks-field_brand
+features[field_instance][] = node-drinks-field_category
+features[field_instance][] = node-drinks-field_collection
+features[field_instance][] = node-drinks-field_gender
+features[field_instance][] = node-drinks-field_product
+features[field_instance][] = node-drinks-title_field
+features[field_instance][] = node-hats-body
+features[field_instance][] = node-hats-field_brand
+features[field_instance][] = node-hats-field_category
+features[field_instance][] = node-hats-field_collection
+features[field_instance][] = node-hats-field_gender
+features[field_instance][] = node-hats-field_product
+features[field_instance][] = node-hats-title_field
+features[field_instance][] = node-shoes-body
+features[field_instance][] = node-shoes-field_brand
+features[field_instance][] = node-shoes-field_category
+features[field_instance][] = node-shoes-field_collection
+features[field_instance][] = node-shoes-field_gender
+features[field_instance][] = node-shoes-field_product
+features[field_instance][] = node-shoes-title_field
+features[field_instance][] = node-storage_devices-body
+features[field_instance][] = node-storage_devices-field_brand
+features[field_instance][] = node-storage_devices-field_category
+features[field_instance][] = node-storage_devices-field_collection
+features[field_instance][] = node-storage_devices-field_gender
+features[field_instance][] = node-storage_devices-field_product
+features[field_instance][] = node-storage_devices-title_field
+features[field_instance][] = node-tops-body
+features[field_instance][] = node-tops-field_brand
+features[field_instance][] = node-tops-field_category
+features[field_instance][] = node-tops-field_collection
+features[field_instance][] = node-tops-field_gender
+features[field_instance][] = node-tops-field_product
+features[field_instance][] = node-tops-title_field
+features[field_instance][] = taxonomy_term-category-field_category_color
+features[field_instance][] = taxonomy_term-collection-field_image
+features[field_instance][] = taxonomy_term-color-field_category_color
 features[image][] = product_full
 features[image][] = product_medium
 features[image][] = product_thumbnail
@@ -203,4 +228,7 @@ features[variable][] = pathauto_taxonomy_term_pattern
 features[variable][] = pathauto_taxonomy_term_shoe_size_pattern
 features[variable][] = pathauto_taxonomy_term_storage_capacity_pattern
 features[variable][] = pathauto_taxonomy_term_top_size_pattern
+features_exclude[field_base][body] = body
+features_exclude[field_base][title_field] = title_field
+features_exclude[field_base][field_image] = field_image
 files[] = commerce_kickstart_product.migrate.inc
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.install b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.install
index 4818b9b..08ad72b 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.install
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.install
@@ -6,27 +6,7 @@
  * Rebuilds the feature immediately after it's enabled.
  */
 function commerce_kickstart_product_enable() {
-  // Rebuild the features static caches.
-  features_include(TRUE);
-
-  $module = 'commerce_kickstart_product';
-  $feature = feature_load($module);
-  $items[$module] = array_keys($feature->info['features']);
-  _features_restore('enable', $items);
-  _features_restore('rebuild', $items);
-
-  // Setup AutoSKU for product types provided by this module.
-  foreach (commerce_kickstart_product_commerce_product_default_types() as $type => $type_info) {
-    $record = new stdClass();
-    $record->product_type = $type;
-    $record->pattern = '[commerce-product:title]';
-    $record->advanced = array(
-      'update_existing' => 0,
-      'hide_sku' => 1,
-      'case' => 'uppercase',
-    );
-    drupal_write_record('commerce_autosku_patterns', $record, 'product_type');
-  }
+  commerce_kickstart_rebuild_feature('commerce_kickstart_product');
 }
 
 /**
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.rules_defaults.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.rules_defaults.inc
index 1b19694..a20ffb0 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.rules_defaults.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_product/commerce_kickstart_product.rules_defaults.inc
@@ -12,6 +12,7 @@ function commerce_kickstart_product_default_rules_configuration() {
   $items['commerce_shipping_service_express_shipping'] = entity_import('rules_config', '{ "commerce_shipping_service_express_shipping" : {
       "LABEL" : "Rate Express Shipping",
       "PLUGIN" : "rule",
+      "OWNER" : "rules",
       "REQUIRES" : [ "commerce_shipping" ],
       "USES VARIABLES" : { "commerce_order" : { "type" : "commerce_order", "label" : "Order" } },
       "DO" : [
@@ -26,6 +27,7 @@ function commerce_kickstart_product_default_rules_configuration() {
   $items['commerce_shipping_service_free_shipping'] = entity_import('rules_config', '{ "commerce_shipping_service_free_shipping" : {
       "LABEL" : "Rate Free Shipping",
       "PLUGIN" : "rule",
+      "OWNER" : "rules",
       "REQUIRES" : [ "rules", "commerce_shipping" ],
       "USES VARIABLES" : { "commerce_order" : { "label" : "Order", "type" : "commerce_order" } },
       "IF" : [
@@ -48,6 +50,7 @@ function commerce_kickstart_product_default_rules_configuration() {
   $items['commerce_shipping_service_standard_shipping'] = entity_import('rules_config', '{ "commerce_shipping_service_standard_shipping" : {
       "LABEL" : "Rate Standard Shipping",
       "PLUGIN" : "rule",
+      "OWNER" : "rules",
       "REQUIRES" : [ "rules", "commerce_shipping" ],
       "USES VARIABLES" : { "commerce_order" : { "type" : "commerce_order", "label" : "Order" } },
       "IF" : [
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.features.field_base.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.features.field_base.inc
new file mode 100644
index 0000000..bf25974
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.features.field_base.inc
@@ -0,0 +1,129 @@
+<?php
+/**
+ * @file
+ * commerce_kickstart_slideshow.features.field_base.inc
+ */
+
+/**
+ * Implements hook_field_default_field_bases().
+ */
+function commerce_kickstart_slideshow_field_default_field_bases() {
+  $field_bases = array();
+
+  // Exported field_base: 'comment_body'
+  $field_bases['comment_body'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(
+      0 => 'comment',
+    ),
+    'field_name' => 'comment_body',
+    'foreign keys' => array(
+      'format' => array(
+        'columns' => array(
+          'format' => 'format',
+        ),
+        'table' => 'filter_format',
+      ),
+    ),
+    'indexes' => array(
+      'format' => array(
+        0 => 'format',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'text',
+    'settings' => array(),
+    'translatable' => 0,
+    'type' => 'text_long',
+  );
+
+  // Exported field_base: 'field_headline'
+  $field_bases['field_headline'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_headline',
+    'foreign keys' => array(
+      'format' => array(
+        'columns' => array(
+          'format' => 'format',
+        ),
+        'table' => 'filter_format',
+      ),
+    ),
+    'indexes' => array(
+      'format' => array(
+        0 => 'format',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'text',
+    'settings' => array(
+      'max_length' => 20,
+    ),
+    'translatable' => 0,
+    'type' => 'text',
+  );
+
+  // Exported field_base: 'field_link'
+  $field_bases['field_link'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_link',
+    'foreign keys' => array(),
+    'indexes' => array(),
+    'locked' => 0,
+    'module' => 'link',
+    'settings' => array(
+      'attributes' => array(
+        'target' => 'default',
+      ),
+      'display' => array(
+        'url_cutoff' => '',
+      ),
+      'enable_tokens' => 1,
+      'title' => 'optional',
+      'title_maxlength' => 128,
+      'title_value' => '',
+      'url' => 0,
+    ),
+    'translatable' => 0,
+    'type' => 'link_field',
+  );
+
+  // Exported field_base: 'field_tagline'
+  $field_bases['field_tagline'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_tagline',
+    'foreign keys' => array(
+      'format' => array(
+        'columns' => array(
+          'format' => 'format',
+        ),
+        'table' => 'filter_format',
+      ),
+    ),
+    'indexes' => array(
+      'format' => array(
+        0 => 'format',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'text',
+    'settings' => array(
+      'max_length' => 80,
+    ),
+    'translatable' => 0,
+    'type' => 'text',
+  );
+
+  return $field_bases;
+}
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.features.field_instance.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.features.field_instance.inc
new file mode 100644
index 0000000..e8aed86
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.features.field_instance.inc
@@ -0,0 +1,345 @@
+<?php
+/**
+ * @file
+ * commerce_kickstart_slideshow.features.field_instance.inc
+ */
+
+/**
+ * Implements hook_field_default_field_instances().
+ */
+function commerce_kickstart_slideshow_field_default_field_instances() {
+  $field_instances = array();
+
+  // Exported field_instance: 'comment-comment_node_slideshow-comment_body'
+  $field_instances['comment-comment_node_slideshow-comment_body'] = array(
+    'bundle' => 'comment_node_slideshow',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'comment',
+    'field_name' => 'comment_body',
+    'label' => 'Comment',
+    'required' => TRUE,
+    'settings' => array(
+      'text_processing' => 1,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'module' => 'text',
+      'settings' => array(
+        'rows' => 5,
+      ),
+      'type' => 'text_textarea',
+      'weight' => 0,
+    ),
+  );
+
+  // Exported field_instance: 'node-slideshow-field_headline'
+  $field_instances['node-slideshow-field_headline'] = array(
+    'bundle' => 'slideshow',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => 'This field will be displayed as a pager title under the slideshow.',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 0,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_headline',
+    'label' => 'Headline',
+    'required' => 0,
+    'settings' => array(
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 20,
+      ),
+      'type' => 'text_textfield',
+      'weight' => 1,
+    ),
+  );
+
+  // Exported field_instance: 'node-slideshow-field_image'
+  $field_instances['node-slideshow-field_image'] = array(
+    'bundle' => 'slideshow',
+    'deleted' => 0,
+    'description' => 'Upload an image to go with this article.',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => '',
+          'image_style' => 'large',
+        ),
+        'type' => 'image',
+        'weight' => -1,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'hidden',
+        'module' => 'image',
+        'settings' => array(
+          'image_link' => 'content',
+          'image_style' => 'medium',
+        ),
+        'type' => 'image',
+        'weight' => -1,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_image',
+    'label' => 'Image',
+    'required' => 1,
+    'settings' => array(
+      'alt_field' => 1,
+      'default_image' => 0,
+      'file_directory' => 'field/image/slideshow',
+      'file_extensions' => 'png gif jpg jpeg',
+      'max_filesize' => '',
+      'max_resolution' => '',
+      'min_resolution' => '',
+      'title_field' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'image',
+      'settings' => array(
+        'preview_image_style' => 'thumbnail',
+        'progress_indicator' => 'throbber',
+      ),
+      'type' => 'image_image',
+      'weight' => 3,
+    ),
+  );
+
+  // Exported field_instance: 'node-slideshow-field_link'
+  $field_instances['node-slideshow-field_link'] = array(
+    'bundle' => 'slideshow',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => 'Link this content to a URL. It can either be relative to your site (for example : <em>all-products</em>) or an absolute path.',
+    'display' => array(
+      'default' => array(
+        'label' => 'hidden',
+        'module' => 'link',
+        'settings' => array(),
+        'type' => 'link_default',
+        'weight' => -1,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'hidden',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => -1,
+      ),
+      'teaser' => array(
+        'label' => 'hidden',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => -1,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_link',
+    'label' => 'Link',
+    'required' => 0,
+    'settings' => array(
+      'attributes' => array(
+        'class' => '',
+        'configurable_title' => 0,
+        'rel' => '',
+        'target' => 'default',
+        'title' => '',
+      ),
+      'display' => array(
+        'url_cutoff' => '',
+      ),
+      'enable_tokens' => 1,
+      'title' => 'none',
+      'title_maxlength' => 128,
+      'title_value' => '',
+      'url' => 0,
+      'user_register_form' => FALSE,
+      'validate_url' => 1,
+    ),
+    'widget' => array(
+      'active' => 0,
+      'module' => 'link',
+      'settings' => array(),
+      'type' => 'link_field',
+      'weight' => 4,
+    ),
+  );
+
+  // Exported field_instance: 'node-slideshow-field_tagline'
+  $field_instances['node-slideshow-field_tagline'] = array(
+    'bundle' => 'slideshow',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => 'This field will be displayed as a pager description under the slideshow.',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 1,
+      ),
+      'product_in_cart' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_tagline',
+    'label' => 'Tagline',
+    'required' => 0,
+    'settings' => array(
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 20,
+      ),
+      'type' => 'text_textfield',
+      'weight' => 2,
+    ),
+  );
+
+  // Exported field_instance: 'node-slideshow-title_field'
+  $field_instances['node-slideshow-title_field'] = array(
+    'bundle' => 'slideshow',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 2,
+      ),
+      'product_list' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'fences_wrapper' => 'h2',
+    'field_name' => 'title_field',
+    'label' => 'Title',
+    'required' => 1,
+    'settings' => array(
+      'hide_label' => array(
+        'entity' => 0,
+        'page' => 0,
+      ),
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -5,
+    ),
+  );
+
+  // Translatables
+  // Included for use with string extractors like potx.
+  t('Comment');
+  t('Headline');
+  t('Image');
+  t('Link');
+  t('Link this content to a URL. It can either be relative to your site (for example : <em>all-products</em>) or an absolute path.');
+  t('Tagline');
+  t('This field will be displayed as a pager description under the slideshow.');
+  t('This field will be displayed as a pager title under the slideshow.');
+  t('Title');
+  t('Upload an image to go with this article.');
+
+  return $field_instances;
+}
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.features.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.features.inc
index f6aa939..cc7ad11 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.features.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.features.inc
@@ -7,8 +7,7 @@
 /**
  * Implements hook_ctools_plugin_api().
  */
-function commerce_kickstart_slideshow_ctools_plugin_api() {
-  list($module, $api) = func_get_args();
+function commerce_kickstart_slideshow_ctools_plugin_api($module = NULL, $api = NULL) {
   if ($module == "strongarm" && $api == "strongarm") {
     return array("version" => "1");
   }
@@ -17,8 +16,8 @@ function commerce_kickstart_slideshow_ctools_plugin_api() {
 /**
  * Implements hook_views_api().
  */
-function commerce_kickstart_slideshow_views_api() {
-  return array("version" => "3.0");
+function commerce_kickstart_slideshow_views_api($module = NULL, $api = NULL) {
+  return array("api" => "3.0");
 }
 
 /**
@@ -41,12 +40,13 @@ function commerce_kickstart_slideshow_image_default_styles() {
         'module' => 'image',
         'name' => 'image_scale_and_crop',
         'data' => array(
-          'width' => '940',
-          'height' => '480',
+          'width' => 940,
+          'height' => 480,
         ),
-        'weight' => '2',
+        'weight' => 2,
       ),
     ),
+    'label' => 'hp_slideshow',
   );
 
   return $styles;
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.info b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.info
index 043315d..654fc49 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.info
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.info
@@ -2,7 +2,6 @@ name = Commerce Kickstart Slideshow
 description = Provides the slideshow node type and related functionality.
 core = 7.x
 package = Commerce Kickstart
-php = 5.2.4
 dependencies[] = block
 dependencies[] = commerce_kickstart_migrate
 dependencies[] = ctools
@@ -15,16 +14,21 @@ dependencies[] = menu
 dependencies[] = path
 dependencies[] = strongarm
 dependencies[] = taxonomy
+dependencies[] = text
 dependencies[] = views
 features[ctools][] = strongarm:strongarm:1
 features[ctools][] = views:views_default:3.0
-features[features_api][] = api:1
-features[field][] = comment-comment_node_slideshow-comment_body
-features[field][] = node-slideshow-field_headline
-features[field][] = node-slideshow-field_image
-features[field][] = node-slideshow-field_link
-features[field][] = node-slideshow-field_tagline
-features[field][] = node-slideshow-title_field
+features[features_api][] = api:2
+features[field_base][] = comment_body
+features[field_base][] = field_headline
+features[field_base][] = field_link
+features[field_base][] = field_tagline
+features[field_instance][] = comment-comment_node_slideshow-comment_body
+features[field_instance][] = node-slideshow-field_headline
+features[field_instance][] = node-slideshow-field_image
+features[field_instance][] = node-slideshow-field_link
+features[field_instance][] = node-slideshow-field_tagline
+features[field_instance][] = node-slideshow-title_field
 features[image][] = hp_slideshow
 features[node][] = slideshow
 features[variable][] = comment_anonymous_slideshow
@@ -42,4 +46,6 @@ features[variable][] = node_preview_slideshow
 features[variable][] = node_submitted_slideshow
 features[variable][] = pathauto_node_slideshow_pattern
 features[views_view][] = demo_content_slideshow
+features_exclude[field_base][title_field] = title_field
+features_exclude[field_base][field_image] = field_image
 files[] = commerce_kickstart_slideshow.migrate.inc
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.install b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.install
index 15d1b13..bca3739 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.install
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.install
@@ -6,14 +6,7 @@
  * Rebuilds the feature immediately after it's enabled.
  */
 function commerce_kickstart_slideshow_enable() {
-  // Rebuild the features static caches.
-  features_include(TRUE);
-
-  $module = 'commerce_kickstart_slideshow';
-  $feature = feature_load($module);
-  $items[$module] = array_keys($feature->info['features']);
-  _features_restore('enable', $items);
-  _features_restore('rebuild', $items);
+  commerce_kickstart_rebuild_feature('commerce_kickstart_slideshow');
 }
 
 /**
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.views_default.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.views_default.inc
index 89217a8..1a80788 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.views_default.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_slideshow/commerce_kickstart_slideshow.views_default.inc
@@ -10,7 +10,7 @@
 function commerce_kickstart_slideshow_views_default_views() {
   $export = array();
 
-  $view = new view;
+  $view = new view();
   $view->name = 'demo_content_slideshow';
   $view->description = '';
   $view->tag = 'default';
@@ -23,6 +23,7 @@ function commerce_kickstart_slideshow_views_default_views() {
   /* Display: Master */
   $handler = $view->new_display('default', 'Master', 'default');
   $handler->display->display_options['title'] = 'Articles';
+  $handler->display->display_options['use_more_always'] = FALSE;
   $handler->display->display_options['access']['type'] = 'perm';
   $handler->display->display_options['cache']['type'] = 'none';
   $handler->display->display_options['query']['type'] = 'views_query';
@@ -115,107 +116,36 @@ function commerce_kickstart_slideshow_views_default_views() {
   $handler->display->display_options['fields']['field_link']['field'] = 'field_link';
   $handler->display->display_options['fields']['field_link']['label'] = '';
   $handler->display->display_options['fields']['field_link']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['field_link']['alter']['alter_text'] = 0;
-  $handler->display->display_options['fields']['field_link']['alter']['make_link'] = 0;
-  $handler->display->display_options['fields']['field_link']['alter']['absolute'] = 0;
-  $handler->display->display_options['fields']['field_link']['alter']['external'] = 0;
-  $handler->display->display_options['fields']['field_link']['alter']['replace_spaces'] = 0;
-  $handler->display->display_options['fields']['field_link']['alter']['trim_whitespace'] = 0;
-  $handler->display->display_options['fields']['field_link']['alter']['nl2br'] = 0;
-  $handler->display->display_options['fields']['field_link']['alter']['word_boundary'] = 1;
-  $handler->display->display_options['fields']['field_link']['alter']['ellipsis'] = 1;
-  $handler->display->display_options['fields']['field_link']['alter']['more_link'] = 0;
-  $handler->display->display_options['fields']['field_link']['alter']['strip_tags'] = 0;
-  $handler->display->display_options['fields']['field_link']['alter']['trim'] = 0;
-  $handler->display->display_options['fields']['field_link']['alter']['html'] = 0;
   $handler->display->display_options['fields']['field_link']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['field_link']['element_default_classes'] = 1;
-  $handler->display->display_options['fields']['field_link']['hide_empty'] = 0;
-  $handler->display->display_options['fields']['field_link']['empty_zero'] = 0;
-  $handler->display->display_options['fields']['field_link']['hide_alter_empty'] = 1;
   $handler->display->display_options['fields']['field_link']['click_sort_column'] = 'url';
-  $handler->display->display_options['fields']['field_link']['field_api_classes'] = 0;
   /* Field: Field: Image */
   $handler->display->display_options['fields']['field_image']['id'] = 'field_image';
   $handler->display->display_options['fields']['field_image']['table'] = 'field_data_field_image';
   $handler->display->display_options['fields']['field_image']['field'] = 'field_image';
   $handler->display->display_options['fields']['field_image']['label'] = '';
-  $handler->display->display_options['fields']['field_image']['alter']['alter_text'] = 0;
-  $handler->display->display_options['fields']['field_image']['alter']['make_link'] = 1;
+  $handler->display->display_options['fields']['field_image']['alter']['make_link'] = TRUE;
   $handler->display->display_options['fields']['field_image']['alter']['path'] = '[field_link]';
-  $handler->display->display_options['fields']['field_image']['alter']['absolute'] = 0;
-  $handler->display->display_options['fields']['field_image']['alter']['external'] = 0;
-  $handler->display->display_options['fields']['field_image']['alter']['replace_spaces'] = 0;
-  $handler->display->display_options['fields']['field_image']['alter']['trim_whitespace'] = 0;
-  $handler->display->display_options['fields']['field_image']['alter']['nl2br'] = 0;
-  $handler->display->display_options['fields']['field_image']['alter']['word_boundary'] = 1;
-  $handler->display->display_options['fields']['field_image']['alter']['ellipsis'] = 1;
-  $handler->display->display_options['fields']['field_image']['alter']['more_link'] = 0;
-  $handler->display->display_options['fields']['field_image']['alter']['strip_tags'] = 0;
-  $handler->display->display_options['fields']['field_image']['alter']['trim'] = 0;
-  $handler->display->display_options['fields']['field_image']['alter']['html'] = 0;
   $handler->display->display_options['fields']['field_image']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['field_image']['element_default_classes'] = 1;
-  $handler->display->display_options['fields']['field_image']['hide_empty'] = 0;
-  $handler->display->display_options['fields']['field_image']['empty_zero'] = 0;
-  $handler->display->display_options['fields']['field_image']['hide_alter_empty'] = 1;
   $handler->display->display_options['fields']['field_image']['click_sort_column'] = 'fid';
   $handler->display->display_options['fields']['field_image']['settings'] = array(
     'image_style' => 'hp_slideshow',
     'image_link' => '',
   );
-  $handler->display->display_options['fields']['field_image']['field_api_classes'] = 0;
   /* Field: Content: Tagline */
   $handler->display->display_options['fields']['field_tagline']['id'] = 'field_tagline';
   $handler->display->display_options['fields']['field_tagline']['table'] = 'field_data_field_tagline';
   $handler->display->display_options['fields']['field_tagline']['field'] = 'field_tagline';
   $handler->display->display_options['fields']['field_tagline']['label'] = '';
   $handler->display->display_options['fields']['field_tagline']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['field_tagline']['alter']['alter_text'] = 0;
-  $handler->display->display_options['fields']['field_tagline']['alter']['make_link'] = 0;
   $handler->display->display_options['fields']['field_tagline']['alter']['path'] = '[field_link]';
-  $handler->display->display_options['fields']['field_tagline']['alter']['absolute'] = 0;
-  $handler->display->display_options['fields']['field_tagline']['alter']['external'] = 0;
-  $handler->display->display_options['fields']['field_tagline']['alter']['replace_spaces'] = 0;
-  $handler->display->display_options['fields']['field_tagline']['alter']['trim_whitespace'] = 0;
-  $handler->display->display_options['fields']['field_tagline']['alter']['nl2br'] = 0;
-  $handler->display->display_options['fields']['field_tagline']['alter']['word_boundary'] = 1;
-  $handler->display->display_options['fields']['field_tagline']['alter']['ellipsis'] = 1;
-  $handler->display->display_options['fields']['field_tagline']['alter']['more_link'] = 0;
-  $handler->display->display_options['fields']['field_tagline']['alter']['strip_tags'] = 0;
-  $handler->display->display_options['fields']['field_tagline']['alter']['trim'] = 0;
-  $handler->display->display_options['fields']['field_tagline']['alter']['html'] = 0;
   $handler->display->display_options['fields']['field_tagline']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['field_tagline']['element_default_classes'] = 1;
-  $handler->display->display_options['fields']['field_tagline']['hide_empty'] = 0;
-  $handler->display->display_options['fields']['field_tagline']['empty_zero'] = 0;
-  $handler->display->display_options['fields']['field_tagline']['hide_alter_empty'] = 1;
-  $handler->display->display_options['fields']['field_tagline']['field_api_classes'] = 0;
   /* Field: Content: Headline */
   $handler->display->display_options['fields']['field_headline']['id'] = 'field_headline';
   $handler->display->display_options['fields']['field_headline']['table'] = 'field_data_field_headline';
   $handler->display->display_options['fields']['field_headline']['field'] = 'field_headline';
   $handler->display->display_options['fields']['field_headline']['label'] = '';
   $handler->display->display_options['fields']['field_headline']['exclude'] = TRUE;
-  $handler->display->display_options['fields']['field_headline']['alter']['alter_text'] = 0;
-  $handler->display->display_options['fields']['field_headline']['alter']['make_link'] = 0;
-  $handler->display->display_options['fields']['field_headline']['alter']['absolute'] = 0;
-  $handler->display->display_options['fields']['field_headline']['alter']['external'] = 0;
-  $handler->display->display_options['fields']['field_headline']['alter']['replace_spaces'] = 0;
-  $handler->display->display_options['fields']['field_headline']['alter']['trim_whitespace'] = 0;
-  $handler->display->display_options['fields']['field_headline']['alter']['nl2br'] = 0;
-  $handler->display->display_options['fields']['field_headline']['alter']['word_boundary'] = 1;
-  $handler->display->display_options['fields']['field_headline']['alter']['ellipsis'] = 1;
-  $handler->display->display_options['fields']['field_headline']['alter']['more_link'] = 0;
-  $handler->display->display_options['fields']['field_headline']['alter']['strip_tags'] = 0;
-  $handler->display->display_options['fields']['field_headline']['alter']['trim'] = 0;
-  $handler->display->display_options['fields']['field_headline']['alter']['html'] = 0;
   $handler->display->display_options['fields']['field_headline']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['field_headline']['element_default_classes'] = 1;
-  $handler->display->display_options['fields']['field_headline']['hide_empty'] = 0;
-  $handler->display->display_options['fields']['field_headline']['empty_zero'] = 0;
-  $handler->display->display_options['fields']['field_headline']['hide_alter_empty'] = 1;
-  $handler->display->display_options['fields']['field_headline']['field_api_classes'] = 0;
   /* Field: Global: Custom text */
   $handler->display->display_options['fields']['nothing']['id'] = 'nothing';
   $handler->display->display_options['fields']['nothing']['table'] = 'views';
@@ -223,23 +153,8 @@ function commerce_kickstart_slideshow_views_default_views() {
   $handler->display->display_options['fields']['nothing']['label'] = '';
   $handler->display->display_options['fields']['nothing']['alter']['text'] = '[field_tagline]<br />
 <em>[field_headline]</em>';
-  $handler->display->display_options['fields']['nothing']['alter']['make_link'] = 0;
-  $handler->display->display_options['fields']['nothing']['alter']['absolute'] = 0;
-  $handler->display->display_options['fields']['nothing']['alter']['external'] = 0;
-  $handler->display->display_options['fields']['nothing']['alter']['replace_spaces'] = 0;
-  $handler->display->display_options['fields']['nothing']['alter']['trim_whitespace'] = 0;
-  $handler->display->display_options['fields']['nothing']['alter']['nl2br'] = 0;
-  $handler->display->display_options['fields']['nothing']['alter']['word_boundary'] = 1;
-  $handler->display->display_options['fields']['nothing']['alter']['ellipsis'] = 1;
-  $handler->display->display_options['fields']['nothing']['alter']['more_link'] = 0;
-  $handler->display->display_options['fields']['nothing']['alter']['strip_tags'] = 0;
-  $handler->display->display_options['fields']['nothing']['alter']['trim'] = 0;
-  $handler->display->display_options['fields']['nothing']['alter']['html'] = 0;
   $handler->display->display_options['fields']['nothing']['element_label_colon'] = FALSE;
-  $handler->display->display_options['fields']['nothing']['element_default_classes'] = 1;
-  $handler->display->display_options['fields']['nothing']['hide_empty'] = 0;
-  $handler->display->display_options['fields']['nothing']['empty_zero'] = 0;
-  $handler->display->display_options['fields']['nothing']['hide_alter_empty'] = 0;
+  $handler->display->display_options['defaults']['filter_groups'] = FALSE;
   $handler->display->display_options['defaults']['filters'] = FALSE;
   /* Filter criterion: Content: Published */
   $handler->display->display_options['filters']['status']['id'] = 'status';
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_social/commerce_kickstart_social.info b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_social/commerce_kickstart_social.info
index 1d61c72..6c01a1d 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_social/commerce_kickstart_social.info
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_social/commerce_kickstart_social.info
@@ -15,7 +15,7 @@ dependencies[] = strongarm
 dependencies[] = widget_services
 features[ctools][] = oauthconnector:oauthconnector:1
 features[ctools][] = strongarm:strongarm:1
-features[features_api][] = api:1
+features[features_api][] = api:2
 features[menu_custom][] = menu-social-connection
 features[menu_links][] = menu-social-connection_follow-us-on-twitter:https://twitter.com/commerceguys
 features[menu_links][] = menu-social-connection_like-us-on-facebook:https://www.facebook.com/commerceguys
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_social/commerce_kickstart_social.install b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_social/commerce_kickstart_social.install
index 4634c48..146140e 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_social/commerce_kickstart_social.install
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_social/commerce_kickstart_social.install
@@ -26,14 +26,7 @@ function commerce_kickstart_social_install() {
  * Implements hook_enable().
  */
 function commerce_kickstart_social_enable() {
-  // Rebuild the features static caches.
-  features_include(TRUE);
-
-  $module = 'commerce_kickstart_social';
-  $feature = feature_load($module);
-  $items[$module] = array_keys($feature->info['features']);
-  _features_restore('enable', $items);
-  _features_restore('rebuild', $items);
+  commerce_kickstart_rebuild_feature('commerce_kickstart_social', array('menu_links'));
 
   $default_theme = variable_get('theme_default', 'omega_kickstart');
   // Make sure that the region list is populated for our theme.
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.features.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.features.inc
index 2396594..a434982 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.features.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.features.inc
@@ -7,8 +7,7 @@
 /**
  * Implements hook_ctools_plugin_api().
  */
-function commerce_kickstart_user_ctools_plugin_api() {
-  list($module, $api) = func_get_args();
+function commerce_kickstart_user_ctools_plugin_api($module = NULL, $api = NULL) {
   if ($module == "strongarm" && $api == "strongarm") {
     return array("version" => "1");
   }
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.features.menu_links.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.features.menu_links.inc
index 9de33e1..e03b02f 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.features.menu_links.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.features.menu_links.inc
@@ -21,11 +21,12 @@ function commerce_kickstart_user_menu_default_menu_links() {
       'identifier' => 'menu-user-menu_create-account:user/register',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '-49',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => -49,
+    'customized' => 0,
   );
   // Exported menu link: menu-user-menu_log-in:user/login
   $menu_links['menu-user-menu_log-in:user/login'] = array(
@@ -38,11 +39,12 @@ function commerce_kickstart_user_menu_default_menu_links() {
       'identifier' => 'menu-user-menu_log-in:user/login',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '-50',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => -50,
+    'customized' => 0,
   );
   // Exported menu link: menu-user-menu_log-out:user/logout
   $menu_links['menu-user-menu_log-out:user/logout'] = array(
@@ -55,11 +57,12 @@ function commerce_kickstart_user_menu_default_menu_links() {
       'identifier' => 'menu-user-menu_log-out:user/logout',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '-47',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => -47,
+    'customized' => 0,
   );
   // Exported menu link: menu-user-menu_my-account:user
   $menu_links['menu-user-menu_my-account:user'] = array(
@@ -73,11 +76,12 @@ function commerce_kickstart_user_menu_default_menu_links() {
       'identifier' => 'menu-user-menu_my-account:user',
     ),
     'module' => 'menu',
-    'hidden' => '0',
-    'external' => '0',
-    'has_children' => '0',
-    'expanded' => '0',
-    'weight' => '-48',
+    'hidden' => 0,
+    'external' => 0,
+    'has_children' => 0,
+    'expanded' => 0,
+    'weight' => -48,
+    'customized' => 0,
   );
   // Translatables
   // Included for use with string extractors like potx.
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.features.user_permission.inc b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.features.user_permission.inc
index 85fe433..5529f0b 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.features.user_permission.inc
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.features.user_permission.inc
@@ -10,92 +10,92 @@
 function commerce_kickstart_user_user_default_permissions() {
   $permissions = array();
 
-  // Exported permission: create commerce_customer_profile entities.
+  // Exported permission: 'create commerce_customer_profile entities'.
   $permissions['create commerce_customer_profile entities'] = array(
     'name' => 'create commerce_customer_profile entities',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'authenticated user',
+      'administrator' => 'administrator',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_customer',
   );
 
-  // Exported permission: create commerce_customer_profile entities of bundle billing.
+  // Exported permission: 'create commerce_customer_profile entities of bundle billing'.
   $permissions['create commerce_customer_profile entities of bundle billing'] = array(
     'name' => 'create commerce_customer_profile entities of bundle billing',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'authenticated user',
+      'administrator' => 'administrator',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_customer',
   );
 
-  // Exported permission: create commerce_customer_profile entities of bundle shipping.
+  // Exported permission: 'create commerce_customer_profile entities of bundle shipping'.
   $permissions['create commerce_customer_profile entities of bundle shipping'] = array(
     'name' => 'create commerce_customer_profile entities of bundle shipping',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'authenticated user',
+      'administrator' => 'administrator',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_customer',
   );
 
-  // Exported permission: edit own commerce_customer_profile entities.
+  // Exported permission: 'edit own commerce_customer_profile entities'.
   $permissions['edit own commerce_customer_profile entities'] = array(
     'name' => 'edit own commerce_customer_profile entities',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'authenticated user',
+      'administrator' => 'administrator',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_customer',
   );
 
-  // Exported permission: edit own commerce_customer_profile entities of bundle billing.
+  // Exported permission: 'edit own commerce_customer_profile entities of bundle billing'.
   $permissions['edit own commerce_customer_profile entities of bundle billing'] = array(
     'name' => 'edit own commerce_customer_profile entities of bundle billing',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'authenticated user',
+      'administrator' => 'administrator',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_customer',
   );
 
-  // Exported permission: edit own commerce_customer_profile entities of bundle shipping.
+  // Exported permission: 'edit own commerce_customer_profile entities of bundle shipping'.
   $permissions['edit own commerce_customer_profile entities of bundle shipping'] = array(
     'name' => 'edit own commerce_customer_profile entities of bundle shipping',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'authenticated user',
+      'administrator' => 'administrator',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_customer',
   );
 
-  // Exported permission: view own commerce_customer_profile entities.
+  // Exported permission: 'view own commerce_customer_profile entities'.
   $permissions['view own commerce_customer_profile entities'] = array(
     'name' => 'view own commerce_customer_profile entities',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'authenticated user',
+      'administrator' => 'administrator',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_customer',
   );
 
-  // Exported permission: view own commerce_customer_profile entities of bundle billing.
+  // Exported permission: 'view own commerce_customer_profile entities of bundle billing'.
   $permissions['view own commerce_customer_profile entities of bundle billing'] = array(
     'name' => 'view own commerce_customer_profile entities of bundle billing',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'authenticated user',
+      'administrator' => 'administrator',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_customer',
   );
 
-  // Exported permission: view own commerce_customer_profile entities of bundle shipping.
+  // Exported permission: 'view own commerce_customer_profile entities of bundle shipping'.
   $permissions['view own commerce_customer_profile entities of bundle shipping'] = array(
     'name' => 'view own commerce_customer_profile entities of bundle shipping',
     'roles' => array(
-      0 => 'administrator',
-      1 => 'authenticated user',
+      'administrator' => 'administrator',
+      'authenticated user' => 'authenticated user',
     ),
     'module' => 'commerce_customer',
   );
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.info b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.info
index a4378c5..e728700 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.info
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.info
@@ -2,7 +2,6 @@ name = Commerce Kickstart User
 description = Provides user related functionality.
 core = 7.x
 package = Commerce Kickstart
-php = 5.2.4
 dependencies[] = block
 dependencies[] = commerce_addressbook
 dependencies[] = commerce_customer
@@ -12,7 +11,7 @@ dependencies[] = features
 dependencies[] = menu
 dependencies[] = strongarm
 features[ctools][] = strongarm:strongarm:1
-features[features_api][] = api:1
+features[features_api][] = api:2
 features[menu_custom][] = menu-user-menu
 features[menu_links][] = menu-user-menu_create-account:user/register
 features[menu_links][] = menu-user-menu_log-in:user/login
diff --git a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.install b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.install
index 44f1ed9..04fe322 100644
--- a/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.install
+++ b/profiles/commerce_kickstart/modules/commerce_kickstart/commerce_kickstart_user/commerce_kickstart_user.install
@@ -4,13 +4,7 @@
  * Implements hook_enable().
  */
 function commerce_kickstart_user_enable() {
-  // Rebuild the feature.
-  features_include(TRUE);
-  $module = 'commerce_kickstart_user';
-  $feature = feature_load($module);
-  $items[$module] = array_keys($feature->info['features']);
-  _features_restore('enable', $items);
-  _features_restore('rebuild', $items);
+  commerce_kickstart_rebuild_feature('commerce_kickstart_user', array('menu_links'));
 
   drupal_static_reset();
   $default_theme = variable_get('theme_default', 'omega_kickstart');
diff --git a/profiles/commerce_kickstart/modules/contrib/features/CHANGELOG.txt b/profiles/commerce_kickstart/modules/contrib/features/CHANGELOG.txt
index f013543..fcbfb4e 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/CHANGELOG.txt
+++ b/profiles/commerce_kickstart/modules/contrib/features/CHANGELOG.txt
@@ -1,3 +1,49 @@
+features DRUPAL-7--1-0
+----------------------
+
+#1647894 by tim.plunkett: Fixed Features with page manager components are perpetually overridden.
+#1635662 by donquixote: Fixed Undefined index: feature in features_get_info().
+Add missing taxonomy test file
+
+features DRUPAL-7--1-0-RC3
+--------------------------
+
+#1429262 by joelcollinsdc, neochief: Added Allow component level reverting (without needing to go to interactive mode) in drush fr.
+#1272586 by alexweber | stevector: Added Increment or directly set version number directly with drush features-update.
+#1532422 by nadavoid: Fixed If the custom sort order of 'format_handlers()' is not maintained, some things can break.
+#1564864 by jeffschuler: Fixed Mixup in hook_features_export_render() example.
+#1567506 by Dave Reid: Fixed Unable to properly export or provide a locked field in a feature.
+#1597792 by jessehs: Make sure all comments in created features end period.
+#1599188 by jessehs: Move inline comment for empty feature .module file to @file doc block.
+#1587200 by ericduran: Fixed Test module should be hidden.
+#1574716 by bojanz: Fixed Avoid unnecessary cache rebuilds when creating and updating fields.
+#1530386 by exratione, bojanz, kotnik: Avoid unnecessary cache rebuilds and improve installation performance.
+#1489480 by Xen | dema502: Fixed drush:features-export Ambiguous component.
+#1159390 by hefox | brad.bulger: Fixed incorrect revert hook name in features.api.php?.
+#1493274 by hefox, neochief: Fixed Feature installed before Strongarm blocks all other variable imports.
+#1537838 by hefox, JvE | Gisle: Fixed Upgrading to 7.x-1.0-rc2 (from rc1) breaks taxonomy creation.
+#1447656 by bcmiller0, smk-ka: Added drush features-revert-all performance improvement.
+
+features DRUPAL-7--1-0-RC2
+--------------------------
+
+#1529202 by mpotter, mstrelan: Fixed Unable to revert overrides because clear-block is now clearfix.
+#1505044 by neochief: Fixed features_var_export() adds additional prefix to multiline strings contained in objects.
+#1510710 by neochief: Fixed Incorrect key in features_include_defaults() with reset parameters.
+#1402262 by hefox: Fixed features.api.php mentions 'features_source()' key, but the actual key in use is 'feature_source()'.
+#939254 by hefox, fago: Added Return the () to hook_features_pipe_component_alter().
+#894572 by pearcec, eporama, Grayside, andrewlevine: Added Features with only module dependencies not recognized as features.
+#1231118 by tim.plunkett, jhedstrom, nielsonm, arnested: Fixed Generate code according to coding standards.
+#1493274 by neochief, hefox: Fixed Feature installed before Strongarm blocks all other variable imports.
+#1287594 by tim.plunkett: Don't wrap .info file values in double quotes.
+#1437388 by hefox: Fixed check if file exists before including it in features_include().
+#1496322 by hefox, dajjen: Added Make package autocomplete search string case insensitive .
+#1279938 by derhasi, helmo: Added Features support for languages.
+#1305048 by mongolito404: Fixed Undefined index error in user_permission_features_export_render().
+#1063204 by careernerd, davidwhthomas, hefox | mrfree: Fixed Adding a new permission causes integrity constraint violation.
+#1432264 by ezra-g, tim.plunkett | samhassell: Fixed Changes to hook_views_api() cause Views plugins to be undefined.
+Revert "Issue #1432264 by ezra-g, tim.plunkett | samhassell: Fixed Changes to hook_views_api() cause Views plugins to be undefined."
+
 features DRUPAL-7--1-0-RC1
 --------------------------
 
@@ -64,7 +110,7 @@ Fixing naming conflict b/w hook_enable and hook_disable
 #1175684 by sagannotcarl, rocket.nova: Add legend/help to features-diff
 #1210604 by catch: drush features-revert-all does not respect --force argument
 #954062 by irakli, hefox: Incorrect Component Labels in the Components Dropdown
-#1186694 by tunic, fearlsgroove: Features orders exportes recursivally; fields allowed_values array alphabetized, 
+#1186694 by tunic, fearlsgroove: Features orders exportes recursivally; fields allowed_values array alphabetized,
 #935152 by adamdicarlo, hadsie, hefox: Menu Items missing from Menu Links due to access callback user_is_anonymous
 #1258072 by hefox: Add suggestion for vocabulary when exporting a taxonomy field
 #1279212: add Features Breadcrumb
diff --git a/profiles/commerce_kickstart/modules/contrib/features/PATCHES.txt b/profiles/commerce_kickstart/modules/contrib/features/PATCHES.txt
index f51f1b3..e234644 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/PATCHES.txt
+++ b/profiles/commerce_kickstart/modules/contrib/features/PATCHES.txt
@@ -1,8 +1,5 @@
 The following patches have been applied to this project:
-- http://drupal.org/files/1572578-part-one.patch
-- http://drupal.org/files/1597186-1-features-do-not-cache-includes.patch
-- http://drupal.org/files/927566-multiple-link_path.patch
-- http://drupal.org/files/1669720-fix-features-flush-cache.patch
-- http://drupal.org/files/1588596-11-features-array_diff_assoc_recursive.patch
+- http://drupal.org/files/issues/1572578-27-allow-rebuild-to-be-disabled.patch
+- http://drupal.org/files/issues/features-fix-modules-enabled-2143765-1.patch
 
 This file was automatically generated by Drush Make (http://drupal.org/project/drush).
\ No newline at end of file
diff --git a/profiles/commerce_kickstart/modules/contrib/features/README.txt b/profiles/commerce_kickstart/modules/contrib/features/README.txt
index 846ebac..71bf938 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/README.txt
+++ b/profiles/commerce_kickstart/modules/contrib/features/README.txt
@@ -34,6 +34,13 @@ new equivalents (e.g. CCK to fields, imagecache to core image styles).
 - imagecache > image
 - content > field
 
+Note on the "Generate Feature" capability
+-----------------------------------------
+Features 7.x-2.x includes the ability to "Generate a feature" which saves it
+to the server disk. This can be a time-saving task in development. It requires
+the webserver to be able to write to the very code running the site and is
+not recommended for any environment other than a firewalled-off, local
+development environment (e.g. a person working alone on their laptop).
 
 Features 1.x for Drupal 7.x
 ---------------------------
@@ -62,6 +69,16 @@ modules directory for your site and enable it on the `admin/build/modules` page.
 To take full advantage of some of the workflow benefits provided by Features,
 you should install [Drush][1].
 
+If you plan on creating or working with very large features (greater than 1000
+items), you may need to increase PHP's max_input_vars configuration directive.
+For example, adding the following line to your .htaccess file will increase the
+max_input_vars directive to 3000:
+
+php_value max_input_vars 3000
+
+If you are using Suhosin, increasing suhosin.get.max_vars,
+suhosin.post.max_vars, and suhosin.request.max_vars may also be necessary.
+
 
 Basic usage
 -----------
@@ -131,6 +148,8 @@ highly recommended.
 
 Drush usage
 -----------
+(requires Drush v4.5 or higher)
+
 Features provides several useful drush commands:
 
 - `drush features`
@@ -141,12 +160,13 @@ Features provides several useful drush commands:
 
   Write a new feature in code containing the components listed.
   If called with no arguments, display a list of available components.
-  If called with one argument, take the argument as a component name and 
+  If called with one argument, take the argument as a component name and
   attempt to create a feature with the same name.
-  
+
   The option '--destination=foo' may be used to specify the path (from Drupal
   root) where the feature should be created. The default destination is
-  'sites/all/modules'.
+  'sites/all/modules', though this can be overridden via the Features
+  settings page.
 
 - `drush features-update [feature name]`
 
diff --git a/profiles/commerce_kickstart/modules/contrib/features/features.admin.inc b/profiles/commerce_kickstart/modules/contrib/features/features.admin.inc
index fd996c5..c2cc508 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/features.admin.inc
+++ b/profiles/commerce_kickstart/modules/contrib/features/features.admin.inc
@@ -1,42 +1,150 @@
 <?php
 
 /**
- * Form callback for features export form. Acts as a router based on the form_state.
+ * @file
+ * Forms for Features admin screens
+ */
+
+
+/**
+ * Settings form for features
+ */
+function features_settings_form($form, $form_state) {
+  $form = array();
+
+  $components = features_get_components();
+  uasort($components, 'features_compare_component_name');
+  $form['show_components'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Show components on create/edit feature form.'),
+    '#description' => t('Components with no options will not be shown no matter the setting below. Disabled components cannot be used with admin form.')
+  );
+
+  $form['lock_components'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Lock components'),
+    '#description' => t('Locked components will be prevented from ever being reverted. For example, if site builder updates a feature with new settings for a field instance, but field instance is locked, it will not update that field. If the item is purely in code, like a view, the view changed when the code is updated no matter these settings.')
+  );
+  $form['features_lock_mode'] = array(
+    '#type' => 'radios',
+    '#title' => t('Features lock mode'),
+    '#options' => array(
+      'rebuild' => t('Allow rebuild (prevent revert)'),
+      'all' => t('Prevent rebuild and revert'),
+    ),
+    '#description' => t('Rebuild will allow the feature to be updated till the point features has detected that the item has changed deliberately on the site, e.g. is overriden.'),
+    '#default_value' => variable_get('features_lock_mode', 'all'),
+  );
+  foreach ($components as $component => $info) {
+    if (empty($info['feature_source']) && empty($info['features_source'])) {
+      continue;
+    }
+    $form['show_components']['features_admin_show_component_' . $component] = array(
+      '#title' => t('@name (@machine)', array('@name' => $info['name'], '@machine' => $component)),
+      '#type' => 'checkbox',
+      '#default_value' => variable_get('features_admin_show_component_' . $component, TRUE),
+    );
+    if (features_hook($component, 'features_revert') || features_hook($component, 'features_rebuild')) {
+      $form['lock_components']['features_component_locked_' . $component] = array(
+        '#title' => t('@name (@machine)', array('@name' => $info['name'], '@machine' => $component)),
+        '#type' => 'checkbox',
+        '#default_value' => variable_get('features_component_locked_' . $component, FALSE),
+      );
+    }
+    if ($component == 'menu_links' && ($menus = menu_get_menus())) {
+      $form['show_components']['features_admin_menu_links'] = array(
+        '#title' => t('Advanced Menu Link Settings'),
+        '#type' => 'fieldset',
+        '#collapsed' => TRUE,
+        '#collapsible' => TRUE,
+        '#states' => array(
+          'invisible' => array(
+            'input[name="features_admin_show_component_menu_links"]' => array('checked' => FALSE),
+          ),
+        ),
+      );
+      $form['show_components']['features_admin_menu_links']['features_admin_menu_links_menus'] = array(
+        '#title' => t('Allowed menus for menu links'),
+        '#type' => 'checkboxes',
+        '#options' =>  array_map('check_plain', $menus),
+        '#default_value' => variable_get('features_admin_menu_links_menus', array_keys(menu_get_menus())),
+      );
+    }
+  }
+
+  $form['general'] = array(
+    '#title' => t('General settings'),
+    '#type' => 'fieldset',
+  );
+  $form['general']['features_default_export_path'] = array(
+    '#title' => t('Default export path'),
+    '#type' => 'textfield',
+    '#default_value' => variable_get('features_default_export_path', FEATURES_DEFAULT_EXPORT_PATH),
+    '#description' => t('All feature exports will be automatically saved to this path, unless overridden on the individual feature.'),
+  );
+  $form['general']['features_rebuild_on_flush'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Rebuild features on cache clear'),
+    '#default_value' => variable_get('features_rebuild_on_flush', TRUE),
+    '#description' => t('If you have a large site with many features, you may experience lag on full cache clear. If disabled, features will rebuild only when viewing the features list or saving the modules list.'),
+  );
+
+  return system_settings_form($form);
+}
+
+/**
+ * Form constructor for features export form.
+ *
+ * Acts as a router based on the form_state.
+ *
+ * @param object|null $feature
+ *   The feature object, if available. NULL by default.
+ *
+ * @see features_export_build_form_submit()
+ * @ingroup forms
  */
 function features_export_form($form, $form_state, $feature = NULL) {
   module_load_include('inc', 'features', 'features.export');
   features_include();
 
+  $feature_name = !empty($feature->name) ? $feature->name : '';
   $form = array(
     '#attributes' => array('class' => array('features-export-form')),
     '#feature' => isset($feature) ? $feature : NULL,
   );
   $form['info'] = array(
     '#type' => 'fieldset',
+    '#title' => t('General Information'),
     '#tree' => FALSE,
+    '#weight' => 2,
+    '#collapsible' => FALSE,
+    '#collapsed' => FALSE,
+    '#prefix' => "<div id='features-export-info'>",
+    '#suffix' => '</div>',
   );
   $form['info']['name'] = array(
     '#title' => t('Name'),
     '#description' => t('Example: Image gallery') . ' (' . t('Do not begin name with numbers.') . ')',
     '#type' => 'textfield',
     '#default_value' => !empty($feature->info['name']) ? $feature->info['name'] : '',
-    '#attributes' => array('class' => array('feature-name')),
   );
   $form['info']['module_name'] = array(
-    '#type' => 'textfield',
+    '#type' => 'machine_name',
     '#title' => t('Machine-readable name'),
     '#description' => t('Example: image_gallery') . '<br/>' . t('May only contain lowercase letters, numbers and underscores. <strong>Try to avoid conflicts with the names of existing Drupal projects.</strong>'),
     '#required' => TRUE,
-    '#default_value' => !empty($feature->name) ? $feature->name : '',
-    '#attributes' => array('class' => array('feature-module-name')),
-    '#element_validate' => array('features_export_form_validate_field'),
+    '#default_value' => $feature_name,
+    '#machine_name' => array(
+      'exists' => 'features_export_form_module_name_exists',
+      'source' => array('info', 'name'),
+    ),
   );
-  // If recreating this feature, disable machine name field and blank out
-  // js-attachment classes to ensure the machine name cannot be changed.
-  if (isset($feature)) {
-    $form['info']['module_name']['#value'] = $feature->name;
+  // If recreating this feature, disable machine name field to ensure the
+  // machine name cannot be changed, unless user role has granted permission to
+  // edit machine name of disabled features.
+  if (isset($feature) && ($feature->status || !user_access('rename features'))) {
+    $form['info']['module_name']['#value'] = $feature_name;
     $form['info']['module_name']['#disabled'] = TRUE;
-    $form['info']['name']['#attributes'] = array();
   }
   $form['info']['description'] = array(
     '#title' => t('Description'),
@@ -60,44 +168,439 @@ function features_export_form($form, $form_state, $feature = NULL) {
     '#size' => 30,
     '#element_validate' => array('features_export_form_validate_field'),
   );
-  $form['info']['project_status_url'] = array(
+  $form['advanced'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Advanced Options'),
+    '#tree' => FALSE,
+    '#collapsible' => TRUE,
+    '#collapsed' => TRUE,
+    '#weight' => 10,
+    '#prefix' => "<div id='features-export-advanced'>",
+    '#suffix' => '</div>',
+  );
+  $form['advanced']['project_status_url'] = array(
     '#title' => t('URL of update XML'),
-    '#description' => t('Example: http://mywebsite.com/fserver'),
+    '#description' => t('URL of Feature Server.  For Example: http://mywebsite.com/fserver'),
     '#type' => 'textfield',
     '#required' => FALSE,
     '#default_value' => !empty($feature->info['project status url']) ? $feature->info['project status url'] : '',
-    '#size' => 30,
     '#element_validate' => array('features_export_form_validate_field'),
   );
+  $directory = (!empty($feature->filename)) ? dirname($feature->filename) : variable_get('features_default_export_path', FEATURES_DEFAULT_EXPORT_PATH);
+  if (!empty($feature_name) && substr_compare($directory, $feature_name, strlen($directory)-strlen($feature_name), strlen($feature_name)) === 0) {
+    // if path ends with module_name, strip it
+    $directory = dirname($directory);
+  }
+  if (user_access('generate features')) {
+    $form['advanced']['generate_path'] = array(
+      '#title' => t('Path to Generate feature module'),
+      '#description' => t('File path for feature module.  For Example: sites/all/modules/features or /tmp.  ' .
+        t('Leave blank for <strong>@path</strong>', array('@path' => $directory))),
+      '#type' => 'textfield',
+      '#required' => FALSE,
+      '#default_value' => !empty($feature->info['project path']) ? $feature->info['project path'] : '',
+    );
+    $form['advanced']['generate'] = array(
+      '#type' => 'submit',
+      '#value' => t('Generate feature'),
+      '#submit' => array('features_export_build_form_submit'),
+    );
+  }
+  // build the Component Listing panel on the right
+  _features_export_form_components($form, $form_state);
+
+  $form['advanced']['info-preview'] = array(
+    '#type' => 'button',
+    '#value' => t('Preview .info file'),
+    '#ajax' => array(
+      'callback' => 'features_info_file_preview',
+      'wrapper' => 'features-export-wrapper',
+    ),
+  );
+  //Info dialog
+  $form['advanced']['info-file'] = array(
+    '#prefix' => '<div id="features-info-file" title="Export .info file preview">',
+    'text'    => array(
+      '#type' => 'textarea',
+      '#default_value' => '',
+      '#resizable' => FALSE,
+    ),
+    '#suffix' => '</div>',
+  );
 
-  // User-selected feature source components.
-  $components = features_get_components();
-  uasort($components, 'features_compare_component_name');
+  $form['buttons'] = array(
+    '#theme' => 'features_form_buttons',
+    '#tree' => FALSE,
+    '#weight' => 99,
+    '#prefix' => "<div id='features-export-buttons'>",
+    '#suffix' => '</div>',
+  );
+  $form['buttons']['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Download feature'),
+    '#weight' => 10,
+    '#submit' => array('features_export_build_form_submit'),
+  );
+
+  $form['#attached']['library'][] = array('system', 'ui.dialog');
+
+  return $form;
+}
+
+/**
+ * Machine name existence callback for the module name.
+ */
+function features_export_form_module_name_exists($value) {
+  return (bool) features_get_info('module', $value);
+}
+
+/**
+ * Return the render array elements for the Components selection on the Export form
+ * @param  array $feature    - feature associative array
+ * @param  array $components - array of components in feature
+ */
+function _features_export_form_components(&$form, &$form_state) {
+  global $features_ignore_conflicts;
+  drupal_add_css(drupal_get_path('module', 'features') . '/features.css');
+  drupal_add_js(drupal_get_path('module', 'features') . '/features.js');
+
+  $feature = $form['#feature'];
+
+  // keep the allow_conflict variable around in the session
+  if (isset($form_state['values']['features_allow_conflicts'])) {
+    $_SESSION['features_allow_conflicts'] = $form_state['values']['features_allow_conflicts'];
+    $features_ignore_conflicts = $_SESSION['features_allow_conflicts'];
+  }
 
   $form['export'] = array(
     '#type' => 'fieldset',
+    '#title' => t('Components'),
+    '#description' => t('Expand each component section and select which items should be included in this feature export.'),
     '#tree' => FALSE,
-    '#theme' => 'features_form_export',
+    '#prefix' => "<div id='features-export-wrapper'>",
+    '#suffix' => '</div>',
+    '#collapsible' => FALSE,
+    '#collapsed' => FALSE,
+    '#weight' => 1,
   );
-  $form['export']['components'] = array(
-    '#title' => t('Edit components'),
-    '#type' => 'select',
-    '#options' => array('------'),
-    '#attributes' => array('class' => array('features-select-components')),
+
+  // filter field used in javascript, so javascript will unhide it
+  $form['export']['features_filter_wrapper'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Filters'),
+    '#tree' => FALSE,
+    '#prefix' => "<div id='features-filter' class='element-invisible'>",
+    '#suffix' => '</div>',
+    '#collapsible' => FALSE,
+    '#collapsed' => FALSE,
+    '#weight' => -10,
+  );
+  $form['export']['features_filter_wrapper']['features_filter'] = array(
+    '#type' => 'textfield',
+    '#title' => t('Search'),
+    '#hidden' => TRUE,
+    '#default_value' => '',
+    '#suffix' => "<span class='features-filter-clear'>". t('Clear') ."</span>",
   );
-  $form['export']['sources'] = array(
-    '#tree' => TRUE,
-    '#theme' => 'features_form_components',
+  $form['export']['features_filter_wrapper']['checkall'] = array(
+    '#type' => 'checkbox',
+    '#default_value' => FALSE,
+    '#hidden' => TRUE,
+    '#title' => t('Select all'),
+    '#attributes' => array(
+      'class' => array('features-checkall'),
+    )
   );
+
+  $form['advanced']['features_autodetect_wrapper'] = array(
+    '#type' => 'fieldset',
+    '#tree' => FALSE,
+    '#prefix' => "<div id='features-autodetect'>",
+    '#suffix' => '</div>',
+    '#collapsible' => FALSE,
+    '#collapsed' => FALSE,
+  );
+  $form['advanced']['features_autodetect_wrapper']['autodetect'] = array(
+    '#title' => t('Add auto-detected dependencies'),
+    '#type' => 'checkbox',
+    '#default_value' => !empty($feature->info['no autodetect']) ? FALSE : TRUE,
+  );
+
+  // this refresh button will rebuild the form.
+  // this button is hidden by javascript since it is only needed when
+  // javascript is not available
+  $form['advanced']['features_autodetect_wrapper']['features_refresh'] = array(
+    '#type' => 'submit',
+    '#value' => t('Refresh'),
+    '#name' => 'features-refresh',
+    '#attributes' => array(
+      'title' => t("Refresh the list of auto-detected items."),
+      'class' => array('features-refresh-button'),
+    ),
+    '#submit' => array('features_export_form_rebuild'),
+    '#prefix' => "<div class='features-refresh-wrapper'>",
+    '#suffix' => "</div>",
+    '#ajax' => array(
+      'callback' => 'features_export_form_ajax',
+      'wrapper' => 'features-export-wrapper',
+    ),
+  );
+
+  // generate the export array for the current feature and user selections
+  $export = _features_export_build($feature, $form_state);
+
+  $form['advanced']['features_allow_conflicts'] = array(
+    '#title' => t('Allow conflicts to be added'),
+    '#type' => 'checkbox',
+    '#default_value' => $features_ignore_conflicts,
+    '#ajax' => array(
+      'callback' => 'features_export_form_ajax',
+      'wrapper' => 'features-export-wrapper',
+    ),
+  );
+
+  if (isset($form_state['values']['op']) && ($form_state['values']['op'] == $form_state['values']['info-preview'])) {
+    // handle clicking Preview button
+    module_load_include('inc', 'features', 'features.export');
+
+    $feature_export = _features_export_generate($export, $form_state, $feature);
+    $feature_export = features_export_prepare($feature_export, $feature->name, TRUE);
+    $info = features_export_info($feature_export);
+
+    drupal_add_js(array('features' => array('info' => $info)), 'setting');
+  }
+
+  // determine any components that are deprecated
+  $deprecated = features_get_deprecated($export['components']);
+
+  $sections = array('included', 'detected', 'added');
+  foreach ($export['components'] as $component => $component_info) {
+    if (!variable_get('features_admin_show_component_' . $component, TRUE)) {
+      continue;
+    }
+
+      $component_items_count = count($component_info['options']['sources']);
+      $count_label = ' (<span class = "component-count">' . $component_items_count . '</span>)';
+      $label = (isset($component_info['name']) ?
+          $component_info['name'] . $count_label . " <span>(" . check_plain($component) . ")</span>"
+          : check_plain($component) . $count_label);
+
+      $count = 0;
+    foreach ($sections as $section) {
+      $count += count($component_info['options'][$section]);
+    }
+    $extra_class = ($count == 0) ? 'features-export-empty' : '';
+    $component_name = str_replace('_', '-', check_plain($component));
+
+    if ($count + $component_items_count > 0) {
+
+      if (!empty($deprecated[$component])) {
+        // only show deprecated component if it has some exports
+        if (!empty($component_info['options']['included'])) {
+          $form['export'][$component] = array(
+            '#markup' => '',
+            '#tree' => TRUE,
+            );
+
+          $form['export'][$component]['deprecated'] = array(
+            '#type' => 'fieldset',
+            '#title' => $label . "<span class='features-conflict'> (" . t('DEPRECATED') . ")</span>",
+            '#tree' => TRUE,
+            '#collapsible' => TRUE,
+            '#collapsed' => TRUE,
+            '#attributes' => array('class' => array('features-export-component')),
+          );
+          $list = ' ';
+          foreach ($component_info['options']['included'] as $key) {
+            $list .= "<span class='form-type-checkbox features-conflict'>$key</span>";
+          }
+          $form['export'][$component]['deprecated']['selected'] = array(
+            '#prefix' => "<div class='component-detected'>",
+            '#markup' => $list,
+            '#suffix' => "</div>",
+          );
+        }
+      }
+      else {
+        $form['export'][$component] = array(
+          '#markup' => '',
+          '#tree' => TRUE,
+          );
+
+        $form['export'][$component]['sources'] = array(
+          '#type' => 'fieldset',
+          '#title' => $label,
+          '#tree' => TRUE,
+          '#collapsible' => TRUE,
+          '#collapsed' => TRUE,
+          '#attributes' => array('class' => array('features-export-component')),
+          '#prefix' => "<div class='features-export-parent component-$component'>",
+        );
+        $form['export'][$component]['sources']['selected'] = array(
+          '#type' => 'checkboxes',
+          '#id' => "edit-sources-$component_name",
+          '#options' => features_dom_encode_options($component_info['options']['sources']),
+          '#default_value' => features_dom_encode_options($component_info['selected']['sources'], FALSE),
+          '#attributes' => array(
+            'class' => array('component-select'),
+          ),
+        );
+
+        foreach ($sections as $section) {
+          $form['export'][$component][$section] = array(
+            '#type' => 'checkboxes',
+            '#options' => !empty($component_info['options'][$section]) ?
+              features_dom_encode_options($component_info['options'][$section]) : array(),
+            '#default_value' => !empty($component_info['selected'][$section]) ?
+              features_dom_encode_options($component_info['selected'][$section], FALSE) : array(),
+            '#attributes' => array('class' => array('component-' . $section)),
+          );
+        }
+        $form['export'][$component][$sections[0]]['#prefix'] =
+          "<div class='component-list features-export-list $extra_class'>";
+        $form['export'][$component][$sections[count($sections)-1]]['#suffix'] = '</div></div>';
+      }
+    }
+  }
+  $form['export']['features_legend'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Legend'),
+    '#tree' => FALSE,
+    '#prefix' => "<div id='features-legend'>",
+    '#suffix' => '</div>',
+    '#collapsible' => FALSE,
+    '#collapsed' => FALSE,
+  );
+  $form['export']['features_legend']['legend'] = array(
+    '#markup' =>
+      "<span class='component-included'>Normal</span> " .
+      "<span class='component-added'>Changed</span> " .
+      "<span class='component-detected'>Auto detected</span> " .
+      "<span class='features-conflict'>Conflict</span> ",
+  );
+}
+
+/**
+ * Return the full feature export array based upon user selections in form_state
+ * @param  array $feature    Feature array to be exported
+ * @param  array $form_state Optional form_state information for user selections
+ *   can be updated to reflect new selection status
+ * @return array             New export array to be exported
+ *   array['components'][$component_name] = $component_info
+ *     $component_info['options'][$section] is list of available options
+ *     $component_info['selected'][$section] is option state TRUE/FALSE
+ *   $section = array('sources', included', 'detected', 'added')
+ *     sources - options that are available to be added to the feature
+ *     included - options that have been previously exported to the feature
+ *     detected - options that have been auto-detected
+ *     added - newly added options to the feature
+ *
+ * NOTE: This routine gets a bit complex to handle all of the different possible
+ * user checkbox selections and de-selections.
+ * Cases to test:
+ *   1a) uncheck Included item -> mark as Added but unchecked
+ *   1b) re-check unchecked Added item -> return it to Included check item
+ *   2a) check Sources item -> mark as Added and checked
+ *   2b) uncheck Added item -> return it to Sources as unchecked
+ *   3a) uncheck Included item that still exists as auto-detect -> mark as Detected but unchecked
+ *   3b) re-check Detected item -> return it to Included and checked
+ *   4a) check Sources item should also add any auto-detect items as Detected and checked
+ *   4b) uncheck Sources item with auto-detect and auto-detect items should return to Sources and unchecked
+ *   5a) uncheck a Detected item -> refreshing page should keep it as unchecked Detected
+ *   6)  when nothing changes, refresh should not change any state
+ *   7)  should never see an unchecked Included item
+ */
+function _features_export_build($feature, &$form_state) {
+  global $features_ignore_conflicts;
+  // set a global to effect features_get_component_map when building feature
+  // hate to use a global, but it's just for an admin screen so probably ok
+  if (isset($_SESSION['features_allow_conflicts'])) {
+    $features_ignore_conflicts = $_SESSION['features_allow_conflicts'];
+  }
+
+  $feature_name = isset($feature->name) ? $feature->name : NULL;
+  $conflicts = _features_get_used($feature_name);
+  $reset = FALSE;
+  if (isset($form_state['triggering_element']['#name']) && ($form_state['triggering_element']['#name'] == 'features_allow_conflicts')) {
+    // when clicking the Allow Conflicts button, reset the feature back to it's original state
+    $reset = TRUE;
+  }
+
+  module_load_include('inc', 'features', 'features.export');
+  features_include();
+
+  $components = features_get_components();
+  uasort($components, 'features_compare_component_name');
+
+  // Assemble the combined component list
+  $stub = array();
+  $sections = array('sources', 'included', 'detected', 'added');
+
+  // create a new feature "stub" to populate
+
+  $stub_count = array();
   foreach ($components as $component => $component_info) {
-    $options = features_invoke($component, 'features_export_options');
-    if ($component === 'dependencies') {
-      $default_value = !empty($feature->info['dependencies']) ? $feature->info['dependencies'] : array();
+    if ($reset) {
+      unset($form_state['values'][$component]);
     }
-    else {
-      $default_value = !empty($feature->info['features'][$component]) ? $feature->info['features'][$component] : array();
+    if (!variable_get('features_admin_show_component_' . $component, TRUE)) {
+      unset($components[$component]);
+      continue;
+    }
+    // User-selected components take precedence.
+    $stub[$component] = array();
+    $stub_count[$component] = 0;
+    // add selected items from Sources checkboxes
+    if (!empty($form_state['values'][$component]['sources']['selected'])) {
+      $stub[$component] = array_merge($stub[$component], features_dom_decode_options(array_filter($form_state['values'][$component]['sources']['selected'])));
+      $stub_count[$component]++;
     }
-    if ($options) {
+    // add selected items from already Included and newly Added checkboxes
+    foreach (array('included', 'added') as $section) {
+      if (!empty($form_state['values'][$component][$section])) {
+        $stub[$component] = array_merge($stub[$component], features_dom_decode_options(array_filter($form_state['values'][$component][$section])));
+        $stub_count[$component]++;
+      }
+    }
+    // count any detected items
+    if (!empty($form_state['values'][$component]['detected'])) {
+      $stub_count[$component]++;
+      }
+    // Only fallback to an existing feature's values if there are no export options for the component.
+    if ($component == 'dependencies') {
+      if (($stub_count[$component] == 0) && !empty($feature->info['dependencies'])) {
+        $stub[$component] = drupal_map_assoc($feature->info['dependencies']);
+      }
+    }
+    elseif (($stub_count[$component] == 0) && !empty($feature->info['features'][$component])) {
+      $stub[$component] = drupal_map_assoc($feature->info['features'][$component]);
+    }
+  }
+  // Generate new populated feature
+  $export = features_populate(array('features' => $stub, 'dependencies' => $stub['dependencies']), $feature_name);
+
+  // Components that are already exported to feature
+  $exported_features_info = !empty($feature->info['features']) ? $feature->info['features'] : array();
+  $exported_features_info['dependencies'] = !empty($feature->info['dependencies']) ? $feature->info['dependencies'] : array();
+  // Components that should be exported
+  $new_features_info = !empty($export['features']) ? $export['features'] : array();
+  $new_features_info['dependencies'] = !empty($export['dependencies']) ? $export['dependencies'] : array();
+  $excluded = !empty($feature->info['features_exclude']) ? $feature->info['features_exclude'] : array();
+
+  // now fill the $export with categorized sections of component options
+  // based upon user selections and de-selections
+
+  foreach ($components as $component => $component_info) {
+    $component_export = $component_info;
+    foreach ($sections as $section) {
+      $component_export['options'][$section] = array();
+      $component_export['selected'][$section] = array();
+    }
+    $options = features_invoke($component, 'features_export_options');
+    if (!empty($options)) {
+      $exported_components = !empty($exported_features_info[$component]) ? $exported_features_info[$component] : array();
+      $new_components = !empty($new_features_info[$component]) ? $new_features_info[$component] : array();
+
       // Find all default components that are not provided by this feature and
       // strip them out of the possible options.
       if ($map = features_get_default_map($component)) {
@@ -107,65 +610,206 @@ function features_export_form($form, $form_state, $feature = NULL) {
           }
         }
       }
-      // Ensure all options are stripped of potentially bad values.
-      foreach ($options as $k => $v) {
-        $options[$k] = check_plain($v);
+      foreach ($options as $key => $value) {
+        // use the $clean_key when accessing $form_state
+        $clean_key = features_dom_encode($key);
+        // if checkbox in Sources is checked, move it to Added section
+        if (!empty($form_state['values'][$component]['sources']['selected'][$clean_key])) {
+          unset($form_state['input'][$component]['sources']['selected'][$clean_key]);
+          $form_state['values'][$component]['sources']['selected'][$clean_key] = FALSE;
+          $form_state['values'][$component]['added'][$clean_key] = 1;
+          $form_state['input'][$component]['added'][$clean_key] = $clean_key;
+          $component_export['options']['added'][$key] = check_plain($value);
+          $component_export['selected']['added'][$key] = $key;
+        }
+        elseif (in_array($key, $new_components)) {
+          // option is in the New exported array
+          if (in_array($key, $exported_components)) {
+            // option was already previously exported
+            // so it's part of the Included checkboxes
+            $section = 'included';
+            $default_value = $key;
+            if ($reset) {
+              // leave it included
+            }
+            // if Included item was un-selected (removed from export $stub)
+            // but was re-detected in the $new_components
+            // means it was an auto-detect that was previously part of the export
+            // and is now de-selected in UI
+            elseif (!empty($form_state['values']) &&
+                (isset($form_state['values'][$component]['included'][$clean_key]) ||
+                 empty($form_state['values'][$component]['detected'][$clean_key])) &&
+                empty($stub[$component][$key])) {
+              $section = 'detected';
+              $default_value = FALSE;
+            }
+            // unless it's unchecked in the form, then move it to Newly disabled item
+            elseif (!empty($form_state['values']) &&
+                empty($form_state['values'][$component]['added'][$clean_key]) &&
+                empty($form_state['values'][$component]['detected'][$clean_key]) &&
+                empty($form_state['values'][$component]['included'][$clean_key])) {
+              $section = 'added';
+              $default_value = FALSE;
+            }
+          }
+          else {
+            // option was in New exported array, but NOT in already exported
+            // so it's a user-selected or an auto-detect item
+            $section = 'detected';
+            // check for item explicity excluded
+            if (isset($excluded[$component][$key]) && !isset($form_state['values'][$component]['detected'][$clean_key])) {
+              $default_value = FALSE;
+            }
+            else {
+              $default_value = $key;
+            }
+            // if it's already checked in Added or Sources, leave it in Added as checked
+            if (!empty($form_state['values']) &&
+              (!empty($form_state['values'][$component]['added'][$clean_key]) ||
+               !empty($form_state['values'][$component]['sources']['selected'][$clean_key]))) {
+              $section = 'added';
+              $default_value = $key;
+            }
+            // if it's already been unchecked, leave it unchecked
+            elseif (!empty($form_state['values']) &&
+              empty($form_state['values'][$component]['sources']['selected'][$clean_key]) &&
+              empty($form_state['values'][$component]['detected'][$clean_key]) &&
+              !isset($form_state['values'][$component]['added'][$clean_key])) {
+              $section = 'detected';
+              $default_value = FALSE;
+            }
+          }
+          $component_export['options'][$section][$key] = check_plain($value);
+          $component_export['selected'][$section][$key] = $default_value;
+          // save which dependencies are specifically excluded from auto-detection
+          if (($section == 'detected') && ($default_value === FALSE)) {
+            $excluded[$component][$key] = $key;
+            // remove excluded item from export
+            if ($component == 'dependencies') {
+              unset($export['dependencies'][$key]);
+            }
+            else {
+              unset($export['features'][$component][$key]);
+            }
+          }
+          else {
+            unset($excluded[$component][$key]);
+          }
+          // remove the 'input' and set the 'values' so Drupal stops looking at 'input'
+          if (isset($form_state['values'])) {
+            if (!$default_value) {
+              unset($form_state['input'][$component][$section][$clean_key]);
+              $form_state['values'][$component][$section][$clean_key] = FALSE;
+            }
+            else {
+              $form_state['input'][$component][$section][$clean_key] = $clean_key;
+              $form_state['values'][$component][$section][$clean_key] = 1;
+            }
+          }
+        }
+        else {
+          // option was not part of the new export
+          $added = FALSE;
+          foreach (array('included', 'added') as $section) {
+            // restore any user-selected checkboxes
+            if (!empty($form_state['values'][$component][$section][$clean_key])) {
+              $component_export['options'][$section][$key] = check_plain($value);
+              $component_export['selected'][$section][$key] = $key;
+              $added = TRUE;
+            }
+          }
+          if (!$added) {
+            // if not Included or Added, then put it back in the unchecked Sources checkboxes
+            $component_export['options']['sources'][$key] = check_plain($value);
+            $component_export['selected']['sources'][$key] = FALSE;
+          }
+        }
       }
-      $label = (isset($component_info['name']) ? $component_info['name'] . ": " . $component : $component);
-      $form['export']['components']['#options'][$component] = $label;
-      if (!empty($options)) {
-        $form['export']['sources'][$component] = array(
-          '#type' => 'checkboxes',
-          '#options' => features_dom_encode_options($options),
-          '#title' => $component,
-          '#default_value' => features_dom_encode_options($default_value, FALSE),
-          '#ajax' => array(
-            'callback' => 'features_export_build_form_populate',
-            'wrapper' => 'features-export-contents',
-          ),
-        );
+    }
+    $export['components'][$component] = $component_export;
+  }
+  $export['features_exclude'] = $excluded;
+
+  // make excluded list and conflicts available for javascript to pass to our ajax callback
+  drupal_add_js(array('features' => array(
+    'excluded' => $excluded,
+    'conflicts' => $conflicts,
+    )), 'setting');
+
+  return $export;
+}
+
+/**
+ * AJAX callback for features_export_form.
+ */
+function features_export_form_ajax($form, &$form_state) {
+  return $form['export'];
+}
+
+/**
+ * Tells the ajax form submission to rebuild form state.
+ */
+function features_export_form_rebuild($form, &$form_state) {
+  $form_state['rebuild'] = TRUE;
+}
+
+function features_export_components_json($feature_name) {
+  module_load_include('inc', 'features', 'features.export');
+  $export = array();
+  if (!empty($_POST['items'])) {
+    $excluded = (!empty($_POST['excluded'])) ? $_POST['excluded'] : array();
+    $stub = array();
+    foreach ($_POST['items'] as $key) {
+      preg_match('/^([^\[]+)(\[.+\])?\[(.+)\]\[(.+)\]$/', $key, $matches);
+      if (!empty($matches[1]) && !empty($matches[4])) {
+        $component = $matches[1];
+        $item = features_dom_decode($matches[4]);
+        if (empty($stub[$component])) {
+          $stub[$component] = array($item);
+        }
+        else {
+          $stub[$component] = array_merge($stub[$component], array($item));
+        }
       }
-      else {
-        $form['export']['sources'][$component] = array(
-          '#type' => 'item',
-          '#title' => $component,
-          '#value' => t('All components of this type are exported by other features or modules.'),
-        );
+    }
+
+    $stub['dependencies'] = isset($stub['dependencies']) ? $stub['dependencies'] : array();
+    $export = features_populate(array('features' => $stub, 'dependencies' => $stub['dependencies']), $feature_name);
+    $export['features']['dependencies'] = $export['dependencies'];
+
+    // uncheck any detected item that is in the excluded list
+    foreach ($export['features'] as $component => $value) {
+      foreach ($value as $key => $item) {
+        $clean_key = features_dom_encode($key);
+        if ($key != $clean_key) {
+          // need to move key to a cleankey for javascript
+          $export['features'][$component][$clean_key] = $export['features'][$component][$key];
+          unset($export['features'][$component][$key]);
+        }
+        if (isset($excluded[$component][$key])) {
+          $export['features'][$component][$clean_key] = FALSE;
+        }
       }
     }
   }
-  $form['export']['features'] = array(
-    '#tree' => TRUE,
-    '#prefix' => "<div id='features-export-populated'><div id='features-export-contents'>",
-    '#suffix' => "</div></div>",
-    '#markup' => !empty($feature->info) ? theme('features_components', array('info' => $feature->info, 'sources' => $feature->info['features'])) : "<div class='placeholder'></div>",
-  );
+  print drupal_json_encode($export['features']);
+}
 
-  $form['buttons'] = array('#theme' => 'features_form_buttons', '#tree' => FALSE);
-  $form['buttons']['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Download feature'),
-    '#weight' => 10,
-    '#submit' => array('features_export_build_form_submit'),
-  );
-  return $form;
+/**
+ * AJAX callback to get .info file preview.
+ */
+function features_info_file_preview($form, &$form_state){
+  return $form['export'];
 }
 
 /**
- * Validation for project field.
+ * Render API callback: Validates a project field.
+ *
+ * This function is assigned as an #element_validate callback in
+ * features_export_form().
  */
 function features_export_form_validate_field($element, &$form_state) {
   switch ($element['#name']) {
-    case 'module_name':
-      if (!preg_match('!^[a-z0-9_]+$!', $element['#value'])) {
-        form_error($element, t('The machine-readable name must contain only lowercase letters, numbers, and underscores.'));
-      }
-      // If user is filling out the feature name for the first time and uses
-      // the name of an existing module throw an error.
-      else if (empty($element['#default_value']) && features_get_info('module', $element['#value'])) {
-        form_error($element, t('A module by the name @name already exists on your site. Please choose a different name.', array('@name' => $element['#value'])));
-      }
-      break;
     case 'project_status_url':
       if (!empty($element['#value']) && !valid_url($element['#value'])) {
         form_error($element, t('The URL %url is invalid. Please enter a fully-qualified URL, such as http://www.example.com/feed.xml.', array('%url' => $element['#value'])));
@@ -174,42 +818,29 @@ function features_export_form_validate_field($element, &$form_state) {
     case 'version':
       preg_match('/^(?P<core>\d+\.x)-(?P<major>\d+)\.(?P<patch>\d+)-?(?P<extra>\w+)?$/', $element['#value'], $matches);
       if (!empty($element['#value']) && !isset($matches['core'], $matches['major'])) {
-        form_error($element, t('Please enter a valid version with core and major version number. Example: !example', array('!example' => '6.x-1.0')));
+        form_error($element, t('Please enter a valid version with core and major version number. Example: @example', array('@example' => '7.x-1.0')));
       };
       break;
   }
 }
 
 /**
- * Submit handler for features_export_form_build().
+ * Return the $export array to be rendered for the feature export
  */
-function features_export_build_form_submit($form, &$form_state) {
-  module_load_include('inc', 'features', 'features.export');
-  features_include();
+function _features_export_generate($export, $form_state, $feature = NULL) {
+  unset($export['components']); // remove the UI data that we are not saving to disk
 
-  // Assemble the combined component list
-  $stub = array();
-  $components = array_keys(features_get_components());
-  foreach ($components as $component) {
-    // User-selected components take precedence.
-    if (!empty($form_state['values']['sources'][$component])) {
-      $stub[$component] = features_dom_decode_options(array_filter($form_state['values']['sources'][$component]));
-    }
-    // Only fallback to an existing feature's values if there are no export options for the component.
-    else if (!empty($form['#feature']->info['features'][$component])) {
-      $stub[$component] = $form['#feature']->info['features'][$component];
-    }
-  }
-
-  // Generate populated feature
   $module_name = $form_state['values']['module_name'];
-  $export = features_populate($stub, $form_state['values']['sources']['dependencies'], $module_name);
-
-  // Directly copy the following attributes
-  $attr = array('name', 'description', 'package');
+  // Directly copy the following attributes from form_state
+  $attr = array('name', 'description', 'package', 'project path');
   foreach ($attr as $key) {
     $export[$key] = isset($form_state['values'][$key]) ? $form_state['values'][$key] : NULL;
   }
+  // Directly copy the following attributes from the original feature
+  $attr = array('scripts' , 'stylesheets');
+  foreach ($attr as $key) {
+    $export[$key] = isset($feature->info[$key]) ? $feature->info[$key] : NULL;
+  }
   // If either update status-related keys are provided, add a project key
   // corresponding to the module name.
   if (!empty($form_state['values']['version']) || !empty($form_state['values']['project_status_url'])) {
@@ -221,19 +852,51 @@ function features_export_build_form_submit($form, &$form_state) {
   if (!empty($form_state['values']['project_status_url'])) {
     $export['project status url'] = $form_state['values']['project_status_url'];
   }
+  $export['no autodetect'] = empty($form_state['values']['autodetect']) ? 1 : NULL;
+  $export['project path'] = !empty($form_state['values']['generate_path']) ? $form_state['values']['generate_path'] : NULL;
+  return $export;
+}
+
+/**
+ * Form submission handler for features_export_form().
+ */
+function features_export_build_form_submit($form, &$form_state) {
+  $feature = $form['#feature'];
+  $export = _features_export_build($feature, $form_state);
+  $export = _features_export_generate($export, $form_state, $feature);
+  $generate = ($form_state['values']['op'] == $form_state['values']['generate']);
+  $module_name = $form_state['values']['module_name'];
+
+  if ($generate && !user_access('generate features')) {
+    drupal_set_message(t("No permission for generating features."));
+    return;
+  }
 
   // Generate download
   if ($files = features_export_render($export, $module_name, TRUE)) {
     $filename = (!empty($export['version']) ? "{$module_name}-{$export['version']}" : $module_name) . '.tar';
 
-    // Clear out output buffer to remove any garbage from tar output.
-    if (ob_get_level()) {
-      ob_end_clean();
+    if ($generate) {
+      $success = TRUE;
+      $destination = variable_get('features_default_export_path', FEATURES_DEFAULT_EXPORT_PATH);
+      $directory = (!empty($export['project path'])) ? $export['project path'] . '/' . $module_name :
+        (isset($feature->filename) ? dirname($feature->filename) : $destination . '/' . $module_name);
+      if (!is_dir($directory)) {
+        if (mkdir($directory, 0777, true) === FALSE) {
+          $success = FALSE;
+        }
+      }
     }
+    else {
+      // Clear out output buffer to remove any garbage from tar output.
+      if (ob_get_level()) {
+        ob_end_clean();
+      }
 
-    drupal_add_http_header('Content-type', 'application/x-tar');
-    drupal_add_http_header('Content-Disposition', 'attachment; filename="'. $filename .'"');
-    drupal_send_headers();
+      drupal_add_http_header('Content-type', 'application/x-tar');
+      drupal_add_http_header('Content-Disposition', 'attachment; filename="'. $filename .'"');
+      drupal_send_headers();
+    }
 
     $tar = array();
     $filenames = array();
@@ -242,9 +905,24 @@ function features_export_build_form_submit($form, &$form_state) {
         $extension .= '.inc';
       }
       $filenames[] = "{$module_name}.$extension";
-      print features_tar_create("{$module_name}/{$module_name}.$extension", $file_contents);
+      if ($generate) {
+        if (file_put_contents("{$directory}/{$module_name}.$extension", $file_contents) === FALSE) {
+          $success = FALSE;
+        }
+      }
+      else {
+        print features_tar_create("{$module_name}/{$module_name}.$extension", $file_contents);
+      }
     }
     if (features_get_modules($module_name, TRUE)) {
+      // prevent deprecated component files from being included in download
+      $deprecated = features_get_deprecated();
+      foreach ($deprecated as $component) {
+        $info = features_get_components($component);
+        $filename = isset($info['default_file']) && $info['default_file'] == FEATURES_DEFAULTS_CUSTOM ? $info['default_filename'] : "features.{$component}";
+        $filename .= '.inc';
+        $filenames[] = "{$module_name}.$filename";
+      }
       $module_path = drupal_get_path('module', $module_name);
       // file_scan_directory() can throw warnings when using PHP 5.3, messing
       // up the output of our file stream. Suppress errors in this one case in
@@ -254,61 +932,34 @@ function features_export_build_form_submit($form, &$form_state) {
         if (!in_array($filename, $filenames)) {
           // Add this file.
           $contents = file_get_contents($file->uri);
-          print features_tar_create("{$module_name}/{$filename}", $contents);
+          if ($generate) {
+            if (file_put_contents("{$directory}/{$filename}", $contents) === FALSE) {
+              $success = FALSE;
+            }
+          }
+          else {
+            print features_tar_create("{$module_name}/{$filename}", $contents);
+          }
           unset($contents);
         }
       }
     }
-    print pack("a1024","");
-    exit;
-  }
-}
-
-/**
- * AHAH handler for features_export_form_build().
- */
-function features_export_build_form_populate($form, $form_state) {
-  module_load_include('inc', 'features', 'features.export');
-  features_include();
-  $stub = array();
-  $submitted = $form_state['values'];
-
-  // Assemble the combined component list
-  $components = array_keys(features_get_components());
-  foreach ($components as $component) {
-    // User-selected components take precedence.
-    if (!empty($submitted['sources'][$component])) {
-      // Validate and set the default value for each selected option. This
-      foreach ($submitted['sources'][$component] as $key => $value) {
-        if (isset($form['export']['sources'][$component]['#options'][$key])) {
-          $form['export']['sources'][$component]['#default_value'][$key] = $value;
+    if ($generate) {
+      if ($success) {
+        drupal_set_message(t("Module @name written to @directory",
+          array('@name' => $export['name'], '@directory' => $directory)));
         }
+      else {
+        drupal_set_message(
+          t("Could not write module to @path. ", array('@path' => $directory)) .
+          t("Ensure your file permissions allow the web server to write to that directory."), "error");
       }
-      $stub[$component] = features_dom_decode_options(array_filter($submitted['sources'][$component]));
     }
-    // Only fallback to an existing feature's values if there are no export options for the component.
-    else if (!empty($form['export']['sources'][$component]) && !empty($form['#feature']->info['features'][$component])) {
-      $stub[$component] = $form['#feature']->info['features'][$component];
+    else {
+      print pack("a1024","");
+      exit;
     }
   }
-
-  // Assemble dependencies
-  $dependencies = isset($submitted['sources']['dependencies']) ? $submitted['sources']['dependencies'] : array();
-
-  // Generate populated feature
-  $module_name = isset($form['#feature'], $form['#feature']->name) ? $form['#feature']->name : '';
-  $export = features_populate($stub, $dependencies, $module_name);
-
-  // Render component display
-  $components_rendered = theme('features_components', array('info' => $export, 'sources' => $stub));
-  $form['export']['features']['#markup'] = $components_rendered;
-
-  // @TODO: Reimplement this for D7.
-  // Re-cache form. This ensures that if the form fails to validate, selected
-  // values are preserved for the user.
-  // form_set_cache($submitted['form_build_id'], $form, $form_state);
-
-  return $form['export']['features'];
 }
 
 /**
@@ -319,7 +970,7 @@ function features_filter_hidden($module) {
 }
 
 /**
- * admin/build/features page callback.
+ * Form constructor for the features configuration form.
  */
 function features_admin_form($form, $form_state) {
   // Load export functions to use in comparison.
@@ -332,7 +983,7 @@ function features_admin_form($form, $form_state) {
   $modules = array_filter(features_get_modules(), 'features_filter_hidden');
   $features = array_filter(features_get_features(), 'features_filter_hidden');
   $conflicts = features_get_conflicts();
-    
+
   foreach ($modules as $key => $module) {
     if ($module->status && !empty($module->info['dependencies'])) {
       foreach ($module->info['dependencies'] as $dependent) {
@@ -346,7 +997,7 @@ function features_admin_form($form, $form_state) {
   if ( empty($features) ) {
     $form['no_features'] = array(
       '#markup' => t('No Features were found. Please use the !create_link link to create
-      a new Feature module, or upload an existing Feature to your modules directory.', 
+      a new Feature module, or upload an existing Feature to your modules directory.',
       array('!create_link' => l(t('Create Feature'), 'admin/structure/features/create'))),
     );
     return $form ;
@@ -358,13 +1009,13 @@ function features_admin_form($form, $form_state) {
   ksort($features);
   foreach ($features as $name => $module) {
     $package_title = !empty($module->info['package']) ? $module->info['package'] : t('Other');
-    $package = strtolower(preg_replace('/[^a-zA-Z0-9-]+/', '-', $package_title));
+    $package = 'package_' . strtolower(preg_replace('/[^a-zA-Z0-9-]+/', '-', $package_title));
 
     // Set up package elements
     if (!isset($form[$package])) {
       $form[$package] = array(
         '#tree' => FALSE,
-        '#title' => $package_title,
+        '#title' => check_plain($package_title),
         '#theme' => 'features_form_package',
         '#type' => 'fieldset',
         '#group' => 'packages',
@@ -377,7 +1028,7 @@ function features_admin_form($form, $form_state) {
     }
 
     $disabled = FALSE;
-    $description = isset($module->info['description']) ? $module->info['description'] : '';
+    $description = isset($module->info['description']) ? check_plain($module->info['description']) : '';
 
     // Detect unmet dependencies
     if (!empty($module->info['dependencies'])) {
@@ -402,10 +1053,15 @@ function features_admin_form($form, $form_state) {
     // Detect potential conflicts
     if (!empty($conflicts[$name])) {
       $module_conflicts = array();
-      foreach (array_keys($conflicts[$name]) as $conflict) {
+      foreach ($conflicts[$name] as $conflict => $components) {
+        $component_strings = array();
+        foreach ($components as $component => $component_conflicts) {
+          $component_strings[] = t('@component [@items]', array('@component' => $component, '@items' => implode(', ', $component_conflicts)));
+        }
+        $component_strings = implode(', ', $component_strings);
         // If conflicting module is disabled, indicate so in feature listing
         $status = !module_exists($conflict) ? FEATURES_MODULE_DISABLED : FEATURES_MODULE_CONFLICT;
-        $module_conflicts[] = theme('features_module_status', array('status' => $status, 'module' => $conflict));
+        $module_conflicts[] = theme('features_module_status', array('status' => $status, 'module' => $conflict)) . t(' in ') . $component_strings;
         // Only disable modules with conflicts if they are not already enabled.
         // If they are already enabled, somehow the user got themselves into a
         // bad situation and they need to be able to disable a conflicted module.
@@ -490,11 +1146,13 @@ function features_admin_form($form, $form_state) {
 function features_admin_components($form, $form_state, $feature) {
   // Breadcrumb navigation
   $breadcrumb[] = l(t('Home'), NULL);
+  $breadcrumb[] = l(t('Administration'), 'admin');
+  $breadcrumb[] = l(t('Structure'), 'admin/structure');
   $breadcrumb[] = l(t('Features'), 'admin/structure/features');
   drupal_set_breadcrumb($breadcrumb);
 
   module_load_include('inc', 'features', 'features.export');
-  $form = array();
+  $form['#feature'] = $feature;
 
   // Store feature info for theme layer.
   $form['module'] = array('#type' => 'value', '#value' => $feature->name);
@@ -523,7 +1181,7 @@ function features_admin_components($form, $form_state, $feature) {
   $form['#conflicts'] = $conflicts;
 
   $review = $revert = FALSE;
-    
+
   // Iterate over components and retrieve status for display
   $states = features_get_component_states(array($feature->name), FALSE);
   $form['revert']['#tree'] = TRUE;
@@ -543,13 +1201,14 @@ function features_admin_components($form, $form_state, $feature) {
       );
     }
     if (module_exists('diff')) {
-      $item = menu_get_item("admin/structure/features/{$feature->name}/diff/{$component}");
-      $path = ($item && $item['access']) ? $item['href'] : NULL;
+      $diffpath = "admin/structure/features/{$feature->name}/diff/{$component}";
+      $item = menu_get_item($diffpath);
+      $path = ($item && $item['access']) ? $diffpath : NULL;
     }
     else {
       $path = NULL;
     }
-      
+
     $storage = FEATURES_DEFAULT;
     if (array_key_exists($component, $states[$feature->name])) {
       $storage = $states[$feature->name][$component];
@@ -557,8 +1216,14 @@ function features_admin_components($form, $form_state, $feature) {
     else if (array_key_exists($component, $conflicts)) {
       $storage = FEATURES_CONFLICT;
     }
+    // This can be removed if the css is fixed so link doesn't move when
+    // ajaxing and linke moved.
+    $lock_link = '<span class="features-lock-empty"></span>';
+    if (user_access('administer features') && (features_hook($component, 'features_revert') || features_hook($component, 'features_rebuild'))) {
+      $lock_link = ' ' . theme('features_lock_link', array('feature' => $feature->name, 'component' => $component));
+    }
     $form['components'][$component] = array(
-      '#markup' => theme('features_storage_link', array('storage' => $storage, 'path' =>  $path)),
+      '#markup' => $lock_link . theme('features_storage_link', array('storage' => $storage, 'path' =>  $path)),
     );
   }
 
@@ -589,10 +1254,13 @@ function features_admin_components_revert(&$form, &$form_state) {
   module_load_include('inc', 'features', 'features.export');
   features_include();
   $module = $form_state['values']['module'];
-  $revert = array();
+  $revert = array($module => array());
   foreach (array_filter($form_state['values']['revert']) as $component => $status) {
     $revert[$module][] = $component;
-    drupal_set_message(t('Reverted all <strong>!component</strong> components for <strong>!module</strong>.', array('!component' => $component, '!module' => $module)));
+    drupal_set_message(t('Reverted all <strong>@component</strong> components for <strong>@module</strong>.', array('@component' => $component, '@module' => $module)));
+  }
+  if (empty($revert[$module])) {
+    drupal_set_message(t('Please select which components to revert.'), 'warning');
   }
   features_revert($revert);
   $form_state['redirect'] = 'admin/structure/features/' . $module;
@@ -608,7 +1276,7 @@ function features_admin_components_review(&$form, &$form_state) {
   $revert = array();
   foreach (array_filter($form_state['values']['revert']) as $component => $status) {
     features_set_signature($module, $component);
-    drupal_set_message(t('All <strong>!component</strong> components for <strong>!module</strong> reviewed.', array('!component' => $component, '!module' => $module)));
+    drupal_set_message(t('All <strong>@component</strong> components for <strong>@module</strong> reviewed.', array('@component' => $component, '@module' => $module)));
   }
   $form_state['redirect'] = 'admin/structure/features/' . $module;
 }
@@ -624,12 +1292,12 @@ function features_form_validate(&$form, &$form_state) {
       if (!empty($conflicts[$module])) {
         foreach (array_keys($conflicts[$module]) as $conflict) {
           if (!empty($form_state['values']['status'][$conflict])) {
-            form_set_error('status', t('The feature !module cannot be enabled because it conflicts with !conflict.', array('!module' => $module, '!conflict' => $conflict)));
+            form_set_error('status', t('The feature @module cannot be enabled because it conflicts with @conflict.', array('@module' => $module, '@conflict' => $conflict)));
           }
         }
       }
       if (!drupal_check_module($module)) {
-        form_set_error('status', t('The feature !module cannot be enabled because it has unmet requirements.', array('!module' => $module, '!conflict' => $conflict)));
+        form_set_error('status', t('The feature @module cannot be enabled because it has unmet requirements.', array('@module' => $module)));
       }
     }
   }
@@ -660,11 +1328,9 @@ function features_form_submit(&$form, &$form_state) {
 }
 
 /**
- * Form for disabling orphaned dependencies.
+ * Form for clearing cache after enabling a feature.
  */
 function features_cleanup_form($form, $form_state, $cache_clear = FALSE) {
-  $form = array();
-
   // Clear caches if we're getting a post-submit redirect that requests it.
   if ($cache_clear) {
     drupal_flush_all_caches();
@@ -676,80 +1342,7 @@ function features_cleanup_form($form, $form_state, $cache_clear = FALSE) {
     menu_rebuild();
   }
 
-  // Retrieve orphaned modules and provide them as optional modules to be disabled.
-  // Exclude any modules that have been added to the 'ignored' list.
-  $options = array();
-  $orphans = features_get_orphans();
-  $ignored = variable_get('features_ignored_orphans', array());
-  if (!empty($orphans)) {
-    foreach ($orphans as $module) {
-      if (!in_array($module->name, $ignored, TRUE)) {
-        $options[$module->name] = check_plain($module->info['name']);
-      }
-    }
-  }
-
-  if (!empty($options)) {
-    $form['orphans'] = array(
-      '#title' => t('Orphaned dependencies'),
-      '#description' => t('These modules are dependencies of features that have been disabled. They may be disabled without affecting other components of your website.'),
-      '#type' => 'checkboxes',
-      '#options' => $options,
-      '#default_value' => array_keys($options),
-    );
-    $form['buttons'] = array('#tree' => TRUE, '#theme' => 'features_form_buttons');
-    $form['buttons']['disable'] = array(
-      '#type' => 'submit',
-      '#value' => t('Disable selected modules'),
-      '#submit' => array('features_cleanup_form_disable'),
-    );
-    $form['buttons']['ignore'] = array(
-      '#type' => 'submit',
-      '#value' => t('Leave enabled'),
-      '#submit' => array('features_cleanup_form_ignore'),
-    );
-  }
-  else {
     drupal_goto('admin/structure/features');
-  }
-  return $form;
-}
-
-/**
- * Submit handler for disable action on features_cleanup_form().
- */
-function features_cleanup_form_disable(&$form, &$form_state) {
-  if (!empty($form_state['values']['orphans'])) {
-    $disable = array_keys(array_filter($form_state['values']['orphans']));
-    $ignored = array_diff(array_keys($form_state['values']['orphans']), $disable);
-
-    // Disable any orphans that have been selected.
-    module_disable($disable);
-    drupal_flush_all_caches();
-
-    // Add enabled modules to ignored orphans list.
-    $ignored_orphans = variable_get('features_ignored_orphans', array());
-    foreach ($ignored as $module) {
-      $ignored_orphans[$module] = $module;
-    }
-    variable_set('features_ignored_orphans', $ignored_orphans);
-  }
-  $form_state['redirect'] = 'admin/structure/features/cleanup';
-}
-
-/**
- * Submit handler for ignore action on features_cleanup_form().
- */
-function features_cleanup_form_ignore(&$form, &$form_state) {
-  if (!empty($form_state['values']['orphans'])) {
-    $ignored = array_keys($form_state['values']['orphans']);
-    $ignored_orphans = variable_get('features_ignored_orphans', array());
-    foreach ($ignored as $module) {
-      $ignored_orphans[$module] = $module;
-    }
-    variable_set('features_ignored_orphans', $ignored_orphans);
-  }
-  $form_state['redirect'] = 'admin/structure/features/cleanup';
 }
 
 /**
@@ -759,13 +1352,16 @@ function features_cleanup_form_ignore(&$form, &$form_state) {
  * @param $feature
  *   A loaded feature object to display differences for.
  * @param $component
- *   Optional: specific component to display differences for. If excluded, all components are used.
+ *   (optional) Specific component to display differences for. If excluded, all
+ *   components are used.
  *
- * @return Themed display of what is different.
+ * @return
+ *   Themed display of what is different.
  */
 function features_feature_diff($feature, $component = NULL) {
   drupal_add_css(drupal_get_path('module', 'features') . '/features.css');
   module_load_include('inc', 'features', 'features.export');
+  drupal_set_title($feature->info['name']);
 
   $overrides = features_detect_overrides($feature);
 
@@ -778,7 +1374,7 @@ function features_feature_diff($feature, $component = NULL) {
 
     module_load_include('inc', 'diff', 'diff.engine');
     $formatter = new DrupalDiffFormatter();
-    
+
     $rows = array();
     foreach ($overrides as $component => $items) {
       $rows[] = array(array('data' => $component, 'colspan' => 4, 'header' => TRUE));
@@ -798,6 +1394,71 @@ function features_feature_diff($feature, $component = NULL) {
   return $output;
 }
 
+
+
+/**
+ * Page callback to lock a component.
+ *
+ * @param $feature
+ *  Loaded feature object to be processed for component locking.
+ * @param $component
+ *   (optional) A specific component to lock.
+ *
+ * @return
+ *   Themed display of what is different.
+ */
+function features_admin_lock($feature, $type = 'ajax', $component = NULL) {
+  if ($type == 'ajax' && !empty($_GET['token']) && drupal_valid_token($_GET['token'], 'features/' . $feature->name . '/' . ($component ? $component : '')) == $_GET['token']) {
+    if (features_feature_is_locked($feature->name, $component, FALSE)) {
+      features_feature_unlock($feature->name, $component);
+    }
+    else {
+      features_feature_lock($feature->name, $component);
+    }
+    $commands = array();
+    $new_link = theme('features_lock_link', array('feature' => $feature->name, 'component' => $component));
+    $commands[] = ajax_command_replace('#features-lock-link-' . $feature->name . ($component ? '-' . $component : ''),  $new_link);
+    $page = array('#type' => 'ajax', '#commands' => $commands);
+    ajax_deliver($page);
+  }
+  else {
+    return drupal_get_form('features_feature_lock_confirm_form', $feature, $component);
+  }
+}
+
+/**
+ * Confirm form for locking a feature.
+ */
+function features_feature_lock_confirm_form($form, $form_state, $feature, $component) {
+  $form['#feature'] = $feature;
+  $form['#component'] = $component;
+  $is_locked = features_feature_is_locked($feature->name, $component, FALSE);
+  $args = array(
+    '@name' => $feature->name,
+    '@component' => $component ? $component : t('all'),
+    '!action' => $is_locked ? t('unlock') : t('lock'),
+  );
+  $question = t('Are you sure you want to !action this Feature @name (component @component)?', $args);
+  return confirm_form($form, $question, 'admin/structure/features/' . $feature->name);
+}
+
+/**
+ * Submit callback to lock components of a feature.
+ */
+function features_feature_lock_confirm_form_submit($form, &$form_state) {
+  $feature = $form['#feature']->name;
+  $component = $form['#component'];
+  if (features_feature_is_locked($feature, $component, FALSE)) {
+    features_feature_unlock($feature, $component);
+    drupal_set_message(t('Feature @name (component @component) has been unlocked.', array('@name' => $feature, '@component' => $component ? $component : t('all'))));
+  }
+  else {
+    features_feature_lock($feature, $component);
+    drupal_set_message(t('Feature @name (component @component) has been locked.', array('@name' => $feature, '@component' => $component ? $component : t('all'))));
+  }
+  $form_state['redirect'] = 'admin/structure/features/' . $feature;
+}
+
 /**
  * Compare the component names. Used to sort alphabetically.
  */
@@ -806,7 +1467,7 @@ function features_compare_component_name($a, $b) {
 }
 
 /**
- * Javascript call back that returns the status of a feature.
+ * Javascript callback that returns the status of a feature.
  */
 function features_feature_status($feature) {
   module_load_include('inc', 'features', 'features.export');
@@ -827,6 +1488,16 @@ function features_dom_encode_options($options = array(), $keys_only = TRUE) {
   return $encoded;
 }
 
+function features_dom_encode($key) {
+  $replacements = features_dom_encode_map();
+  return strtr($key, $replacements);
+}
+
+function features_dom_decode($key) {
+  $replacements = array_flip(features_dom_encode_map());
+  return strtr($key, $replacements);
+}
+
 /**
  * Decode an array of option values that have been encoded by
  * features_dom_encode_options().
@@ -851,6 +1522,9 @@ function features_dom_encode_map() {
     '.' => '__' . ord('.') . '__',
     '<' => '__' . ord('<') . '__',
     '>' => '__' . ord('>') . '__',
+    '%' => '__' . ord('%') . '__',
+    ')' => '__' . ord(')') . '__',
+    '(' => '__' . ord('(') . '__',
   );
 }
 
@@ -875,3 +1549,41 @@ function features_autocomplete_packages($search_string) {
   $matched_packages = array_unique($matched_packages);
   drupal_json_output($matched_packages);
 }
+
+/**
+ * Return a list of all used components/items not matching a given feature module
+ * similar to features_get_conflicts but returns all component items "in use"
+ */
+function _features_get_used($module_name = NULL) {
+
+  global $features_ignore_conflicts;
+  // make sure we turn off the ignore_conflicts global to get full list of used components
+  // hate to use global, but since this is just for an admin screen it's not a real problem
+  $old_value = $features_ignore_conflicts;
+  $features_ignore_conflicts = FALSE;
+
+  $conflicts = array();
+  $component_info = features_get_components();
+  $map = features_get_component_map();
+
+  foreach ($map as $type => $components) {
+    // Only check conflicts for components we know about.
+    if (isset($component_info[$type])) {
+      foreach ($components as $component => $modules) {
+        foreach ($modules as $module) {
+          // only for enabled modules
+          if (module_exists($module) && (empty($module_name) || ($module_name != $module))) {
+            if (!isset($conflicts[$module])) {
+              $conflicts[$module] = array();
+            }
+            $conflicts[$module][$type][] = $component;
+          }
+        }
+      }
+    }
+  }
+
+  // restore previous value of global
+  $features_ignore_conflicts = $old_value;
+  return $conflicts;
+}
diff --git a/profiles/commerce_kickstart/modules/contrib/features/features.api.php b/profiles/commerce_kickstart/modules/contrib/features/features.api.php
index 7a0311d..f5984e0 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/features.api.php
+++ b/profiles/commerce_kickstart/modules/contrib/features/features.api.php
@@ -55,13 +55,13 @@ function hook_features_api() {
       'default_hook' => 'mycomponent_defaults',
       'default_file' => FEATURES_DEFAULTS_INCLUDED,
       'feature_source' => TRUE,
-      'file' => drupal_get_path('module', 'mycomponent') .'/mycomponent.features.inc',
+      'file' => drupal_get_path('module', 'mycomponent') . '/mycomponent.features.inc',
     ),
   );
 }
 
 /**
- * Component hook. The hook should be implemented using the name ot the
+ * Component hook. The hook should be implemented using the name of the
  * component, not the module, eg. [component]_features_export() rather than
  * [module]_features_export().
  *
@@ -112,7 +112,7 @@ function hook_features_export($data, &$export, $module_name) {
   // The following is the simplest implementation of a straight object export
   // with no further export processors called.
   foreach ($data as $component) {
-    $export['mycomponent'][$component] = $component;
+    $export['features']['mycomponent'][$component] = $component;
   }
   return array();
 }
@@ -137,7 +137,7 @@ function hook_features_export_options() {
 }
 
 /**
- * Component hook. The hook should be implemented using the name ot the
+ * Component hook. The hook should be implemented using the name of the
  * component, not the module, eg. [component]_features_export() rather than
  * [module]_features_export().
  *
@@ -171,7 +171,7 @@ function hook_features_export_render($module_name, $data, $export = NULL) {
 }
 
 /**
- * Component hook. The hook should be implemented using the name ot the
+ * Component hook. The hook should be implemented using the name of the
  * component, not the module, eg. [component]_features_export() rather than
  * [module]_features_export().
  *
@@ -181,10 +181,12 @@ function hook_features_export_render($module_name, $data, $export = NULL) {
  *   The name of the feature module whose components should be reverted.
  * @return boolean
  *   TRUE or FALSE for whether the components were successfully reverted.
+ *   NOTE: This return value is no longer used in the latest Features so
+ *   modules should no longer count on this value
  */
 function hook_features_revert($module_name) {
-  $mycomponents = module_invoke_all($module_name, 'mycomponent_defaults');
-  if (!empty($$mycomponents)) {
+  $mycomponents = module_invoke($module_name, 'mycomponent_defaults');
+  if (!empty($mycomponents)) {
     foreach ($mycomponents as $mycomponent) {
       mycomponent_delete($mycomponent);
     }
@@ -192,7 +194,7 @@ function hook_features_revert($module_name) {
 }
 
 /**
- * Component hook. The hook should be implemented using the name ot the
+ * Component hook. The hook should be implemented using the name of the
  * component, not the module, eg. [component]_features_export() rather than
  * [module]_features_export().
  *
@@ -209,8 +211,8 @@ function hook_features_revert($module_name) {
  *   The name of the feature module whose components should be rebuilt.
  */
 function hook_features_rebuild($module_name) {
-  $mycomponents = module_invoke_all($module_name, 'mycomponent_defaults');
-  if (!empty($$mycomponents)) {
+  $mycomponents = module_invoke($module_name, 'mycomponent_defaults');
+  if (!empty($mycomponents)) {
     foreach ($mycomponents as $mycomponent) {
       mycomponent_save($mycomponent);
     }
@@ -218,11 +220,49 @@ function hook_features_rebuild($module_name) {
 }
 
 /**
- * Alter the final export array just prior to the rendering of defaults. Allows
- * modules a final say in altering what component objects are exported.
+ * Invoked before a restore operation is run.
+ *
+ * This hook is called before any of the restore operations on the components is
+ * run.
+ *
+ * @param string $op
+ *   The operation that is triggered: revert, rebuild, disable, enable
+ * @param array $items
+ *   The items handled by the operation.
+ */
+function hook_features_pre_restore($op, $items) {
+  if ($op == 'rebuild') {
+    // Use features rebuild to rebuild the features independent exports too.
+    entity_defaults_rebuild();
+  }
+}
+
+/**
+ * Invoked after a restore operation is run.
+ *
+ * This hook is called after any of the restore operations on the components is
+ * run.
+ *
+ * @param string $op
+ *   The operation that is triggered: revert, rebuild, disable, enable
+ * @param array $items
+ *   The items handled by the operation.
+ */
+function hook_features_post_restore($op, $items) {
+  if ($op == 'rebuild') {
+    // Use features rebuild to rebuild the features independent exports too.
+    entity_defaults_rebuild();
+  }
+}
+
+/**
+ * Alter the final array of Component names to be exported, just prior to
+ * the rendering of defaults. Allows modules a final say in whether or not
+ * certain Components are exported (the Components' actual data, however,
+ * cannot be altered by this hook).
  *
  * @param array &$export
- *   By reference. An array of all components to be exported with a given
+ *   By reference. An array of all component names to be exported with a given
  *   feature.
  * @param array $module_name
  *   The name of the feature module to be generated.
@@ -289,6 +329,8 @@ function hook_features_pipe_alter(&$pipe, $data, $export) {
  */
 
 /**
+ * Deprecated as of 7.x-2.0.
+ *
  * Alter the default fields right before they are cached into the database.
  *
  * @param &$fields
@@ -298,6 +340,24 @@ function hook_field_default_fields_alter(&$fields) {
 }
 
 /**
+ * Alter the base fields right before they are cached into the database.
+ *
+ * @param &$fields
+ *   By reference. The fields that have been declared by another feature.
+ */
+function hook_field_default_field_bases_alter(&$fields) {
+}
+
+/**
+ * Alter the field instances right before they are cached into the database.
+ *
+ * @param &$fields
+ *   By reference. The fields that have been declared by another feature.
+ */
+function hook_field_default_field_instances_alter(&$fields) {
+}
+
+/**
  * Alter the default fieldgroup groups right before they are cached into the
  * database.
  *
@@ -377,3 +437,96 @@ function hook_user_default_roles_alter(&$roles) {
 /**
  * @}
  */
+
+
+/**
+ * @defgroup features_module_hooks Feature module hooks
+ * @{
+ * Hooks invoked on Feature modules when that module is enabled, disabled,
+ * rebuilt, or reverted. These are ONLY invoked on the Features module on
+ * which these actions are taken.
+ */
+
+/**
+ * Feature module hook. Invoked on a Feature module before that module is
+ * reverted.
+ *
+ * @param $component
+ *   String name of the component that is about to be reverted.
+ */
+function hook_pre_features_revert($component) {
+}
+
+/**
+ * Feature module hook. Invoked on a Feature module after that module is
+ * reverted.
+ *
+ * @param $component
+ *   String name of the component that has just been reverted.
+ */
+function hook_post_features_revert($component) {
+}
+
+/**
+ * Feature module hook. Invoked on a Feature module before that module is
+ * rebuilt.
+ *
+ * @param $component
+ *   String name of the component that is about to be rebuilt.
+ */
+function hook_pre_features_rebuild($component) {
+}
+
+/**
+ * Feature module hook. Invoked on a Feature module after that module is
+ * rebuilt.
+ *
+ * @param $component
+ *   String name of the component that has just been rebuilt.
+ */
+function hook_post_features_rebuild($component) {
+}
+
+/**
+ * Feature module hook. Invoked on a Feature module before that module is
+ * disabled.
+ *
+ * @param $component
+ *   String name of the component that is about to be disabled.
+ */
+function hook_pre_features_disable_feature($component) {
+}
+
+/**
+ * Feature module hook. Invoked on a Feature module after that module is
+ * disabled.
+ *
+ * @param $component
+ *   String name of the component that has just been disabled.
+ */
+function hook_post_features_disable_feature($component) {
+}
+
+/**
+ * Feature module hook. Invoked on a Feature module before that module is
+ * enabled.
+ *
+ * @param $component
+ *   String name of the component that is about to be enabled.
+ */
+function hook_pre_features_enable_feature($component) {
+}
+
+/**
+ * Feature module hook. Invoked on a Feature module after that module is
+ * enabled.
+ *
+ * @param $component
+ *   String name of the component that has just been enabled.
+ */
+function hook_post_features_enable_feature($component) {
+}
+
+/**
+ * @}
+ */
diff --git a/profiles/commerce_kickstart/modules/contrib/features/features.css b/profiles/commerce_kickstart/modules/contrib/features/features.css
index 0197c31..e3f0251 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/features.css
+++ b/profiles/commerce_kickstart/modules/contrib/features/features.css
@@ -32,6 +32,7 @@ div.features-form-links ul#features-form-links li a {
   padding:5px 5px 4px 4px;
   border-left:1px solid #eee;
   border-bottom:1px solid #eee;
+  color: #000;
   cursor:pointer;
 }
 
@@ -40,6 +41,7 @@ div.features-form-links ul#features-form-links li a.features-package-active {
   background:#fff;
   border:1px solid #ccc;
   border-right:0px;
+  color: #000;
   margin-right:-1px;
 }
 
@@ -47,6 +49,7 @@ div.features-form-links ul#features-form-links li a.features-package-active {
 div.features-form-package {
   border:1px solid #ccc;
   background:#fff;
+  color: #000;
   padding:10px;
   margin:0px 0px 20px;
   display:none;
@@ -154,11 +157,13 @@ form.features-export-form div.features-select {
   display:none;
 }
 
+/*
 form.features-export-form div.form-checkboxes {
   overflow-x:hidden;
   overflow-y:auto;
   height:20em;
   }
+   */
 
 form.features-export-form div#edit-components-wrapper,
 form.features-export-form div.features-select {
@@ -226,10 +231,16 @@ span.features-component-list span {
 
 div.features-key span.admin-conflict,
 span.features-component-list span.features-conflict {
-  background-color: #c30;
+  background-color: #c30 !important;
   color: #fff;
 }
 
+#features-export-wrapper .features-conflict,
+#features-export-wrapper .features-conflict label.option{
+  color: #c30 !important;
+  font-weight: bold !important;
+}
+
 div.conflicts span.admin-disabled {
   color: #955;
 }
@@ -295,3 +306,274 @@ table.features-diff td.diff-context {
   width:50%;
   font-family:'Andale Mono',monospace;
 }
+
+/**
+ * New UI component export list
+ */
+#features-export-wrapper div.features-export-parent {
+  clear: both;
+}
+#features-export-form .fieldset-content.fieldset-wrapper {
+  padding-top: 5px;
+}
+html.js #features-export-form fieldset.collapsed {
+  min-height: 2em;
+  margin-bottom: 0;
+  top: 0;
+  padding: 0 0 0 0;
+}
+fieldset.features-export-component  {
+  background: #F3F8FB;
+  margin: 0.5em 0;
+  font-weight: normal;
+  font-size: 12px;
+  top: 0;
+}
+fieldset.features-export-component.collapsed  {
+  background: #F3F8FB;
+}
+fieldset.features-export-component legend {
+  top: 0;
+}
+fieldset.features-export-component.collapsed .fieldset-wrapper {
+  margin: 0;
+  padding: 0 13px 6px 15px;
+}
+fieldset.features-export-component .fieldset-legend {
+  white-space: nowrap;
+}
+fieldset.features-export-component .fieldset-title span {
+  font-size: 11px;
+  text-transform: none;
+  font-weight: normal;
+}
+#features-export-wrapper .fieldset-wrapper  {
+  font-size: 12px;
+}
+div.features-export-list  {
+  font-weight: normal;
+  font-size: 12px;
+  border: 1px solid #CCC;
+  border-top-width: 0;
+  overflow: hidden;
+}
+#features-export-form .fieldset-description {
+  margin: 5px 0;
+  line-height: 1.231em;
+  font-size: 0.923em;
+  color: #666;
+}
+div.features-export-empty {
+  display: none;
+}
+fieldset.features-export-component .fieldset-wrapper .form-checkboxes {
+  max-height: 20em;
+  overflow: auto;
+  min-width: 100px;
+}
+
+#features-export-wrapper .component-select .form-type-checkbox {
+  overflow: hidden;
+  padding: 0 0 0 2px;
+}
+
+#features-export-wrapper .component-added .form-type-checkbox,
+#features-export-wrapper .component-detected .form-type-checkbox,
+#features-export-wrapper .component-included .form-type-checkbox {
+  float: left;
+  white-space: normal;
+  margin: 2px 5px;
+  padding: 0 5px;
+  background: transparent;
+}
+
+#features-export-wrapper .component-added .form-type-checkbox {
+  font-weight: bold;
+  background: #EEE;
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+}
+#features-export-wrapper div.component-added label.option {
+  font-weight: bold;
+}
+#features-export-wrapper .component-detected .form-type-checkbox {
+  font-style: italic;
+  color:#68a;
+  background:#def;
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+}
+
+#features-export-info {
+  width: 49%;
+  float: left;
+  position: relative;
+}
+#features-export-wrapper {
+  width: 49%;
+  float: right;
+  clear: both;
+  position: relative;
+}
+#features-export-advanced {
+  width: 49%;
+  float: left;
+  clear: left;
+  margin-top: 0.5em;
+  position: relative;
+}
+#features-export-buttons {
+  width: 49%;
+  float: left;
+  margin-top: 0.5em;
+  position: relative;
+  text-align: center;
+}
+#features-export-buttons input {
+  margin: 0 3px;
+}
+
+#features-export-wrapper .component-added label a,
+#features-export-wrapper .component-detected label a,
+#features-export-wrapper .component-included label a {
+  display: inline;
+  float: none;
+}
+#features-export-wrapper label.component-added {
+  font-weight: bold;
+}
+#features-export-form input[size="60"].form-text {
+  width: 100%;
+}
+input.form-submit.features-refresh-button {
+  font-size: 0.7em;
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  border-radius: 5px;
+  background-color: transparent;
+  margin-left: 1em;
+}
+.features-refresh-wrapper .ajax-progress {
+  font-size: 10px;
+  width: 10em;
+}
+#features-export-advanced .ajax-progress {
+  font-size: 10px;
+  width: 10em;
+}
+#features-export-wrapper div.fieldset-description,
+#features-export-wrapper div.description {
+  clear: both;
+}
+#features-filter input[size="60"].form-text {
+  width: 200px;
+}
+#features-filter .fieldset-content,
+#features-filter .fieldset-wrapper,
+#features-filter fieldset {
+  border: 0;
+  padding: 0;
+  margin: 0;
+}
+#features-filter fieldset legend {
+  display: none;
+}
+#features-filter label,
+#features-filter input {
+  display: inline;
+  width: auto;
+}
+#features-filter .form-item {
+  float: left;
+  margin: 5px 0;
+  padding: 0;
+}
+#features-filter .form-item.form-type-checkbox {
+  margin: 5px 0;
+}
+#features-filter span {
+  float: left;
+  white-space: normal;
+  margin: 5px 5px;
+  padding: 0 5px;
+  background: transparent;
+  background: #EEE;
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  cursor: pointer;
+}
+#features-filter span:hover {
+  background:#def;
+}
+#features-autodetect .form-item {
+  float: left;
+  margin: 0 0;
+  padding: 0;
+}
+#features-autodetect .fieldset-content,
+#features-autodetect .fieldset-wrapper,
+#features-autodetect fieldset {
+  border: 0;
+  padding: 0;
+  margin: 1em 0 0 0;
+  top: 0;
+}
+#features-autodetect fieldset legend {
+  display: none;
+}
+#features-export-advanced .form-item.form-item-generate-path {
+  margin-bottom: 0;
+}
+#features-info-file .form-textarea-wrapper,
+#features-info-file textarea {
+  height: 100%;
+}
+
+#features-info-file .form-type-textarea {
+  height: 100%;
+  margin: 0;
+}
+#edit-info-preview {
+  margin: 1em 0;
+}
+#features-legend .fieldset-wrapper span {
+  font-style: normal;
+  color: black;
+  display: inline-block;
+  background: transparent;
+  border: 1px solid #DDD;
+  -moz-border-radius: 5px;
+  -webkit-border-radius: 5px;
+  white-space: nowrap;
+  padding: 0 8px;
+  margin: 0 10px 0 0;
+}
+#features-legend .fieldset-wrapper .component-detected {
+  font-style: italic;
+  color:#68a;
+  background:#def;
+  border-width: 0;
+}
+#features-legend .fieldset-wrapper .component-added {
+  font-weight: bold;
+  background: #EEE;
+  border-width: 0;
+}
+
+fieldset.features-export-component .fieldset-title .component-count {
+font-size: 12px;
+font-weight: bold;
+}
+
+.features-lock-icon {
+  display: inline-block;
+}
+
+.features-components h3 {
+  display: inline-block;
+}
+
+.features-lock-empty {
+  display: inline-block;
+  width: 16px;
+}
\ No newline at end of file
diff --git a/profiles/commerce_kickstart/modules/contrib/features/features.drush.inc b/profiles/commerce_kickstart/modules/contrib/features/features.drush.inc
index 919f54a..c1a15ac 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/features.drush.inc
+++ b/profiles/commerce_kickstart/modules/contrib/features/features.drush.inc
@@ -2,22 +2,34 @@
 
 /**
  * @file
- *   Features module drush integration.
+ * Features module drush integration.
  */
 
 /**
  * Implements hook_drush_command().
  *
- * @See drush_parse_command() for a list of recognized keys.
- *
  * @return
  *   An associative array describing your command(s).
+ *
+ * @see drush_parse_command()
  */
 function features_drush_command() {
   $items = array();
 
+  // If Features is enabled display the configured default export path,
+  // otherwise just show the default.
+  if (defined('FEATURES_DEFAULT_EXPORT_PATH')) {
+    $path = variable_get('features_default_export_path', FEATURES_DEFAULT_EXPORT_PATH);
+  }
+  else {
+    $path = 'sites/all/modules';
+  }
+
   $items['features-list'] = array(
     'description' => "List all the available features for your site.",
+    'options' => array(
+      'status' => "Feature status, can be 'enabled', 'disabled'  or 'all'",
+    ),
     'drupal dependencies' => array('features'),
     'aliases' => array('fl', 'features'),
   );
@@ -28,7 +40,7 @@ function features_drush_command() {
       'components' => 'Patterns of components to include, see features-components for the format of patterns.'
     ),
     'options' => array(
-      'destination' => "Destination path (from Drupal root) of the exported feature. Defaults to 'sites/all/modules'",
+      'destination' => "Destination path (from Drupal root) of the exported feature. Defaults to '" . $path . "'.",
       'version-set' => "Specify a version number for the feature.",
       'version-increment' => "Increment the feature's version number.",
     ),
@@ -114,6 +126,10 @@ function features_drush_command() {
     'arguments' => array(
       'feature' => 'The feature in question.',
     ),
+    'options' => array(
+      'ctypes' => 'Comma separated list of component types to limit the output to. Defaults to all types.',
+      'lines' => 'Generate diffs with <n> lines of context instead of the usual two.',
+    ),
     'drupal dependencies' => array('features', 'diff'),
     'aliases' => array('fd'),
   );
@@ -125,11 +141,20 @@ function features_drush_command() {
  * Implements hook_drush_help().
  */
 function features_drush_help($section) {
+  // If Features is enabled display the configured default export path,
+  // otherwise just show the default.
+  if (defined('FEATURES_DEFAULT_EXPORT_PATH')) {
+    $path = variable_get('features_default_export_path', FEATURES_DEFAULT_EXPORT_PATH);
+  }
+  else {
+    $path = 'sites/all/modules';
+  }
+
   switch ($section) {
     case 'drush:features':
       return dt("List all the available features for your site.");
     case 'drush:features-export':
-      return dt("Export a feature from your site into a module. If called with no arguments, display a list of available components. If called with a single argument, attempt to create a feature including the given component with the same name. The option '--destination=foo' may be used to specify the path (from Drupal root) where the feature should be created. The default destination is 'sites/all/modules'. The option '--version-set=foo' may be used to specify a version number for the feature or the option '--version-increment' may also to increment the feature's version number.");
+      return dt("Export a feature from your site into a module. If called with no arguments, display a list of available components. If called with a single argument, attempt to create a feature including the given component with the same name. The option '--destination=foo' may be used to specify the path (from Drupal root) where the feature should be created. The default destination is '@path'. The option '--version-set=foo' may be used to specify a version number for the feature or the option '--version-increment' may also to increment the feature's version number.", array('@path' => $path));
     case 'drush:features-components':
       return dt("List feature components matching patterns. The listing may be limited to exported/not-exported components.
 
@@ -149,8 +174,6 @@ Lastly, a pattern without a colon is interpreted as having \":%\" appended, for
       return dt("Revert a feature module on your site.");
     case 'drush:features-revert-all':
       return dt("Revert all enabled feature module on your site.");
-    case 'drush:features-revert':
-      return dt("Revert a feature module on your site.");
     case 'drush:features-diff':
       return dt("Show a diff of a feature module.");
     case 'drush:features-add':
@@ -162,9 +185,19 @@ Lastly, a pattern without a colon is interpreted as having \":%\" appended, for
  * Get a list of all feature modules.
  */
 function drush_features_list() {
+  $status = drush_get_option('status') ? drush_get_option('status') : 'all';
+  if (!in_array($status, array('enabled', 'disabled', 'all'))) {
+    return drush_set_error('', dt('!status is not valid', array('!status' => $status)));
+  }
+
   module_load_include('inc', 'features', 'features.export');
-  $rows = array(array(dt('Name'), dt('Feature'), dt('Status'), dt('State')));
-  foreach (features_get_features(NULL, TRUE) as $k => $m) {
+  $rows = array(array(dt('Name'), dt('Feature'), dt('Status'), dt('Version'), dt('State')));
+
+  // Sort the Features list before compiling the output.
+  $features = features_get_features(NULL, TRUE);
+  ksort($features);
+
+  foreach ($features as $k => $m) {
     switch (features_get_storage($m->name)) {
       case FEATURES_DEFAULT:
       case FEATURES_REBUILDABLE:
@@ -177,12 +210,18 @@ function drush_features_list() {
         $storage = dt('Needs review');
         break;
     }
-    $rows[] = array(
-      $m->info['name'],
-      $m->name,
-      $m->status ? dt('Enabled') : dt('Disabled'),
-      $storage
-    );
+    if (
+      ($m->status == 0 && ($status == 'all' || $status == 'disabled')) ||
+      ($m->status == 1 && ($status == 'all' || $status == 'enabled'))
+    ) {
+      $rows[] = array(
+        $m->info['name'],
+        $m->name,
+        $m->status ? dt('Enabled') : dt('Disabled'),
+        $m->info['version'],
+        $storage
+      );
+    }
   }
   drush_print_table($rows, TRUE);
 }
@@ -193,6 +232,7 @@ function drush_features_list() {
 function drush_features_components() {
   $args = func_get_args();
   $components = _drush_features_component_list();
+  ksort($components);
   // If no args supplied, prompt with a list.
   if (empty($args)) {
     $types = array_keys($components);
@@ -420,23 +460,25 @@ function drush_features_export() {
 
     $items = array_map('array_keys', $items);
 
-    if (($feature = feature_load($module, TRUE)) && module_exists($module)) {
+    if (($feature = features_load_feature($module, TRUE)) && module_exists($module)) {
       module_load_include('inc', 'features', 'features.export');
       _features_populate($items, $feature->info, $feature->name);
-      _drush_features_export($feature->info['features'], $feature->info['dependencies'], $feature->name, dirname($feature->filename));
+      _drush_features_export($feature->info, $feature->name, dirname($feature->filename));
     }
     elseif ($feature) {
       _features_drush_set_error($module, 'FEATURES_FEATURE_NOT_ENABLED');
     }
     else {
       // Same logic as in _drush_features_export. Should be refactored.
-      $destination = drush_get_option(array('destination'), 'sites/all/modules');
+      $destination = drush_get_option(array('destination'), variable_get('features_default_export_path', FEATURES_DEFAULT_EXPORT_PATH));
       $directory = isset($directory) ? $directory : $destination . '/' . $module;
       drush_print(dt('Will create a new module in !dir', array('!dir' => $directory)));
       if (!drush_confirm(dt('Do you really want to continue?'))) {
         drush_die('Aborting.');
       }
-      _drush_features_export($items, array(), $module);
+      $export = _drush_features_generate_export($items, $module);
+      _features_populate($items, $export[info], $export[name]);
+      _drush_features_export($export['info'], $module, $directory);
     }
   }
   else {
@@ -451,8 +493,8 @@ function drush_features_export() {
  * This is DEPRECATED, but keeping it around for a bit longer for user migration
  */
 function drush_features_add() {
-  drush_print(dt('features_add is DEPRECATED.'));
-  drush_print(dt('Calling features_export instead.'));
+  drush_print(dt('features-add is DEPRECATED.'));
+  drush_print(dt('Calling features-export instead.'));
   drush_features_export();
 }
 
@@ -463,10 +505,10 @@ function drush_features_add() {
 function drush_features_update() {
   if ($args = func_get_args()) {
     foreach ($args as $module) {
-      if (($feature = feature_load($module, TRUE)) && module_exists($module)) {
-        _drush_features_export($feature->info['features'], $feature->info['dependencies'], $feature->name, dirname($feature->filename));
+      if (($feature = features_load_feature($module, TRUE)) && module_exists($module)) {
+        _drush_features_export($feature->info, $feature->name, dirname($feature->filename));
       }
-      else if ($feature) {
+      elseif ($feature) {
         _features_drush_set_error($module, 'FEATURES_FEATURE_NOT_ENABLED');
       }
       else {
@@ -496,33 +538,40 @@ function drush_features_update_all() {
       $features_to_update[] = $module->name;
     }
   }
-  drush_print(dt('The following modules will be updated: !modules', array('!modules' => implode(', ', $features_to_update))));
-  if (drush_confirm(dt('Do you really want to continue?'))) {
-    foreach ($features_to_update as $module_name) {
-      drush_invoke_process(drush_sitealias_get_record('@self'), 'features-update', array($module_name));
-    }
-  }
-  else {
-    drush_die('Aborting.');
-  }
+  $dt_args = array('!modules' => implode(', ', $features_to_update));
+  drush_print(dt('The following modules will be updated: !modules', $dt_args));
+  if (!drush_confirm(dt('Do you really want to continue?'))) {
+    return drush_user_abort('Aborting.');
+  }
+  // If we got here, set affirmative to TRUE, so that the user doesn't have to
+  // confirm each and every feature. Start off by storing the current value,
+  // so we can set it back afteward.
+  $skip_confirmation = drush_get_context('DRUSH_AFFIRMATIVE');
+  drush_set_context('DRUSH_AFFIRMATIVE', TRUE);
+  // Now update all the features.
+  drush_invoke('features-update', $features_to_update);
+  // Now set it back as it was, in case other commands are called after this.
+  drush_set_context('DRUSH_AFFIRMATIVE', $skip_confirmation);
 }
 
 /**
  * Write a module to the site dir.
  *
- * @param $requests
- *   An array of the context requested in this export.
+ * @param $info
+ *   The feature info associative array.
  * @param $module_name
  *  Optional. The name for the exported module.
  */
-function _drush_features_export($stub, $dependencies, $module_name = NULL, $directory = NULL) {
+function _drush_features_export($info, $module_name = NULL, $directory = NULL) {
   $root = drush_get_option(array('r', 'root'), drush_locate_root());
+  $skip_confirmation = drush_get_context('DRUSH_AFFIRMATIVE');
   if ($root) {
-    $destination = drush_get_option(array('destination'), 'sites/all/modules');
+    $destination = drush_get_option(array('destination'), variable_get('features_default_export_path', FEATURES_DEFAULT_EXPORT_PATH));
     $directory = isset($directory) ? $directory : $destination . '/' . $module_name;
     if (is_dir($directory)) {
-      drush_print(dt('Module appears to already exist in !dir', array('!dir' => $directory)));
-      if (!drush_confirm(dt('Do you really want to continue?'))) {
+      // If we aren't skipping confirmation and the directory already exists,
+      // prompt the user. This message most make sense for but fe and fu.
+      if (!$skip_confirmation && !drush_confirm(dt('Module located at !dir will be updated. Do you want to continue?', array('!dir' => $directory)))) {
         drush_die('Aborting.');
       }
     }
@@ -531,34 +580,7 @@ function _drush_features_export($stub, $dependencies, $module_name = NULL, $dire
     }
     if (is_dir($directory)) {
       drupal_flush_all_caches();
-      module_load_include('inc', 'features', 'features.export');
-      $export = features_populate($stub, $dependencies, $module_name);
-      if (!feature_load($module_name)) {
-        $export['name'] = $module_name;
-      }
-      // Set the feature version if the --version-set or --version-increment option is passed.
-      if ($version = drush_get_option(array('version-set'))) {
-        preg_match('/^(?P<core>\d+\.x)-(?P<major>\d+)\.(?P<patch>\d+)-?(?P<extra>\w+)?$/', $version, $matches);
-        if (!isset($matches['core'], $matches['major'])) {
-          drush_die(dt('Please enter a valid version with core and major version number. Example: !example', array('!example' => '7.x-1.0')));
-        }
-        $export['version'] = $version;
-      }
-      else if ($version = drush_get_option(array('version-increment'))) {
-        // Determine current version and increment it.
-        $export_load = features_export_prepare($export, $module_name);
-        $version = $export_load['version'];
-        $version_explode = explode('.', $version);
-        $version_minor = array_pop($version_explode);
-        // Increment minor version number if numeric or not a dev release.
-        if (is_numeric($version_minor) || strpos($version_minor, 'dev') !== (strlen($version_minor) - 3)) {
-          ++$version_minor;
-        }
-        array_push($version_explode, $version_minor);
-        // Rebuild version string.
-        $version = implode('.', $version_explode);
-        $export['version'] = $version;
-      }
+      $export = _drush_features_generate_export($info, $module_name);
       $files = features_export_render($export, $module_name, TRUE);
       foreach ($files as $extension => $file_contents) {
         if (!in_array($extension, array('module', 'info'))) {
@@ -578,6 +600,59 @@ function _drush_features_export($stub, $dependencies, $module_name = NULL, $dire
 }
 
 /**
+ * Helper function for _drush_feature_export.
+ *
+ * @param $info
+ *   The feature info associative array.
+ * @param $module_name
+ *  Optional. The name for the exported module.
+ */
+function _drush_features_generate_export(&$info, &$module_name) {
+  module_load_include('inc', 'features', 'features.export');
+  $export = features_populate($info, $module_name);
+  if (!features_load_feature($module_name)) {
+    $export['name'] = $module_name;
+  }
+  // Set the feature version if the --version-set or --version-increment option is passed.
+  if ($version = drush_get_option(array('version-set'))) {
+    preg_match('/^(?P<core>\d+\.x)-(?P<major>\d+)\.(?P<patch>\d+)-?(?P<extra>\w+)?$/', $version, $matches);
+    if (!isset($matches['core'], $matches['major'])) {
+      drush_die(dt('Please enter a valid version with core and major version number. Example: !example', array('!example' => '7.x-1.0')));
+    }
+    $export['version'] = $version;
+  }
+  elseif ($version = drush_get_option(array('version-increment'))) {
+    // Determine current version and increment it.
+    $export_load = features_export_prepare($export, $module_name);
+    $version = $export_load['version'];
+    $version_explode = explode('.', $version);
+    $version_minor = array_pop($version_explode);
+    // Increment minor version number if numeric or not a dev release.
+    if (is_numeric($version_minor) || strpos($version_minor, 'dev') !== (strlen($version_minor) - 3)) {
+      // Check for prefixed versions (alpha, beta, rc).
+      if (ctype_digit($version_minor)) {
+        ++$version_minor;
+      }
+      else {
+        // Split version number parts.
+        $pattern = '/([0-9]-[a-z]+([0-9])+)/';
+        $matches = array();
+        preg_match($pattern, $version_minor, $matches);
+        $number = array_pop($matches);
+        ++$number;
+        $pattern = '/[0-9]+$/';
+        $version_minor = preg_replace($pattern, $number, $version_minor);
+      }
+    }
+    array_push($version_explode, $version_minor);
+    // Rebuild version string.
+    $version = implode('.', $version_explode);
+    $export['version'] = $version;
+  }
+  return $export;
+}
+
+/**
  * Revert a feature to it's code definition.
  * Optionally accept a list of components to revert.
  */
@@ -588,11 +663,16 @@ function drush_features_revert() {
 
     // Determine if revert should be forced.
     $force = drush_get_option('force');
+    // Determine if -y was supplied. If so, we can filter out needless output
+    // from this command.
+    $skip_confirmation = drush_get_context('DRUSH_AFFIRMATIVE');
 
     // Parse list of arguments.
     $modules = array();
     foreach ($args as $arg) {
-      list($module, $component) = explode('.', $arg);
+      $arg = explode('.', $arg);
+      $module = array_shift($arg);
+      $component = array_shift($arg);
 
       if (isset($module)) {
         if (empty($component)) {
@@ -610,7 +690,8 @@ function drush_features_revert() {
 
     // Process modules.
     foreach ($modules as $module => $components_needed) {
-      if (($feature = feature_load($module, TRUE)) && module_exists($module)) {
+      $dt_args['@module'] = $module;
+      if (($feature = features_load_feature($module, TRUE)) && module_exists($module)) {
 
         $components = array();
         // Forcefully revert all components of a feature.
@@ -621,11 +702,12 @@ function drush_features_revert() {
             }
           }
         }
-        // Only revert components that are detected to be Overridden/Needs review.
+        // Only revert components that are detected to be Overridden/Needs review/rebuildable.
         else {
           $states = features_get_component_states(array($feature->name), FALSE);
           foreach ($states[$feature->name] as $component => $state) {
-            if (in_array($state, array(FEATURES_OVERRIDDEN, FEATURES_NEEDS_REVIEW)) && features_hook($component, 'features_revert')) {
+            $revertable_states = array(FEATURES_OVERRIDDEN, FEATURES_NEEDS_REVIEW, FEATURES_REBUILDABLE);
+            if (in_array($state, $revertable_states) && features_hook($component, 'features_revert')) {
               $components[] = $component;
             }
           }
@@ -639,17 +721,24 @@ function drush_features_revert() {
         }
         else {
           foreach ($components as $component) {
-            if (drush_confirm(dt('Do you really want to revert !component?', array('!component' => $component)))) {
-              features_revert(array($module => array($component)));
-              drush_log(dt('Reverted !component.', array('!component' => $component)), 'ok');
+            $dt_args['@component'] = $component;
+            $confirmation_message = 'Do you really want to revert @module.@component?';
+            if ($skip_confirmation || drush_confirm(dt($confirmation_message, $dt_args))) {
+              if (features_feature_is_locked($module, $component)) {
+                drush_log(dt('Skipping locked @module.@component.', $dt_args), 'ok');
+              }
+              else {
+                features_revert(array($module => array($component)));
+                drush_log(dt('Reverted @module.@component.', $dt_args), 'ok');
+              }
             }
             else {
-              drush_log(dt('Skipping !component.', array('!component' => $component)), 'ok');
+              drush_log(dt('Skipping @module.@component.', $dt_args), 'ok');
             }
           }
         }
       }
-      else if ($feature) {
+      elseif ($feature) {
         _features_drush_set_error($module, 'FEATURES_FEATURE_NOT_ENABLED');
       }
       else {
@@ -685,6 +774,7 @@ function drush_features_revert_all() {
         switch (features_get_storage($module->name)) {
           case FEATURES_OVERRIDDEN:
           case FEATURES_NEEDS_REVIEW:
+          case FEATURES_REBUILDABLE:
             $features_to_revert[] = $module->name;
             break;
         }
@@ -693,15 +783,13 @@ function drush_features_revert_all() {
   }
 
   if ($features_to_revert) {
-    drush_print(dt('The following modules will be reverted: !modules', array('!modules' => implode(', ', $features_to_revert))));
-    if (drush_confirm(dt('Do you really want to continue?'))) {
-      foreach ($features_to_revert as $module) {
-        drush_invoke_process(drush_sitealias_get_record('@self'), 'features-revert', array($module), array('force' => $force, '#integrate' => TRUE));
-      }
-    }
-    else {
-      drush_die('Aborting.');
+    $dt_args = array('!modules' => implode(', ', $features_to_revert));
+    drush_print(dt('The following modules will be reverted: !modules', $dt_args));
+    // Confirm that the user would like to continue. If not, simply abort.
+    if (!drush_confirm(dt('Do you really want to continue?'))) {
+      return drush_user_abort('Aborting.');
     }
+    drush_invoke('features-revert', $features_to_revert);
   }
   else {
     drush_log(dt('Current state already matches defaults, aborting.'), 'ok');
@@ -717,7 +805,12 @@ function drush_features_diff() {
     return;
   }
   $module = $args[0];
-  $feature = feature_load($module);
+  $filter_ctypes = drush_get_option("ctypes");
+  if ($filter_ctypes) {
+    $filter_ctypes = explode(',', $filter_ctypes);
+  }
+
+  $feature = features_load_feature($module);
   if (!module_exists($module)) {
     drush_log(dt('No such feature is enabled: ' . $module), 'error');
     return;
@@ -734,11 +827,11 @@ function drush_features_diff() {
     if (drush_confirm(dt('It seems that the Diff module is not available. Would you like to download and enable it?'))) {
       // Download it if it's not already here.
       $project_info = drush_get_projects();
-      if (empty($project_info['diff']) && !drush_invoke_process(drush_sitealias_get_record('@self'), 'dl', array('diff'), array('#integrate' => TRUE))) {
+      if (empty($project_info['diff']) && !drush_invoke('dl', array('diff'))) {
         return drush_set_error(dt('Diff module could not be downloaded.'));
       }
 
-      if (!drush_invoke_process(drush_sitealias_get_record('@self'), 'en', array('diff'), array('#integrate' => TRUE))) {
+      if (!drush_invoke('en', array('diff'))) {
         return drush_set_error(dt('Diff module could not be enabled.'));
       }
     }
@@ -749,9 +842,12 @@ function drush_features_diff() {
     module_load_include('inc', 'diff', 'diff.engine');
   }
 
+  $lines = (int) drush_get_option('lines');
+  $lines = $lines > 0 ? $lines : 2;
+
   $formatter = new DiffFormatter();
-  $formatter->leading_context_lines = 2;
-  $formatter->trailing_context_lines = 2;
+  $formatter->leading_context_lines = $lines;
+  $formatter->trailing_context_lines = $lines;
   $formatter->show_header = FALSE;
 
   if (drush_get_context('DRUSH_NOCOLOR')) {
@@ -768,10 +864,13 @@ function drush_features_diff() {
   drush_print(sprintf($green, dt('Overrides:  drush features-update will update the exported feature with the displayed overrides')));
   drush_print();
 
+  if ($filter_ctypes) {
+    $overrides = array_intersect_key($overrides, array_flip($filter_ctypes));
+  }
   foreach ($overrides as $component => $items) {
     $diff = new Diff(explode("\n", $items['default']), explode("\n", $items['normal']));
     drush_print();
-    drush_print(dt("Component: !component", array('!component' => $component)));
+    drush_print(dt("Component type: !component", array('!component' => $component)));
     $rows = explode("\n", $formatter->format($diff));
     foreach ($rows as $row) {
       if (strpos($row, '>') === 0) {
diff --git a/profiles/commerce_kickstart/modules/contrib/features/features.export.inc b/profiles/commerce_kickstart/modules/contrib/features/features.export.inc
index 9374e20..154b26b 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/features.export.inc
+++ b/profiles/commerce_kickstart/modules/contrib/features/features.export.inc
@@ -1,23 +1,22 @@
 <?php
 
 /**
- * @param $items
+ * @param $info - feature info array
  * @param $module_name
- * @return
+ * @return fully populated export array
  */
-function features_populate($items, $dependencies, $module_name) {
+function features_populate($info, $module_name) {
   // Sanitize items.
-  $items = array_filter($items);
-  $items['dependencies'] = drupal_map_assoc(array_filter($dependencies));
+  $items = !empty($info['features']) ? array_filter($info['features']) : array();
+  $items['dependencies'] = !empty($info['dependencies']) ? drupal_map_assoc(array_filter($info['dependencies'])) : array();
 
   // Populate stub
-  $stub = array('features' => array(), 'dependencies' => array(), 'conflicts' => array());
-  $export = _features_populate($items, $stub, $module_name);
+  $stub = array('features' => array(), 'dependencies' => array(), 'conflicts' => array()) + $info + array('features_exclude' => array());
+  $export = _features_populate($items, $stub, $module_name, TRUE);
 
   // Add Features API version. Any module with this entry in the .info file
   // will be treated as a Feature and included in the admin/build/features UI.
   $export['features']['features_api']['api:' . FEATURES_API] = TRUE;
-
   // Allow other modules to alter the export.
   drupal_alter('features_export', $export, $module_name);
 
@@ -27,6 +26,7 @@ function features_populate($items, $dependencies, $module_name) {
   }
   ksort($export['features']);
   ksort($export['dependencies']);
+  ksort($export['features_exclude']);
 
   return $export;
 }
@@ -44,12 +44,22 @@ function features_populate($items, $dependencies, $module_name) {
  *
  * @return fully populated $export array.
  */
-function _features_populate($pipe, &$export, $module_name = '') {
+function _features_populate($pipe, &$export, $module_name = '', $reset = FALSE) {
+  if ($reset) {
+    drupal_static_reset(__FUNCTION__);
+  }
+  $processed = &drupal_static(__FUNCTION__, array());
   features_include();
   foreach ($pipe as $component => $data) {
-    static $processed = array();
     // Convert already defined items to dependencies.
-    _features_resolve_dependencies($data, $export, $module_name, $component);
+//    _features_resolve_dependencies($data, $export, $module_name, $component);
+    // Remove any excluded items.
+    if (!empty($export['features_exclude'][$component])) {
+      $data = array_diff($data, $export['features_exclude'][$component]);
+      if ($component == 'dependencies' && !empty($export['dependencies'])) {
+        $export['dependencies'] = array_diff($export['dependencies'], $export['features_exclude'][$component]);
+      }
+    }
     if (!empty($data) && $function = features_hook($component, 'features_export')) {
       // Pass module-specific data and export array.
       // We don't use features_invoke() here since we need to pass $export by reference.
@@ -160,17 +170,39 @@ function _features_export_maximize_dependencies($dependencies, $module_name = ''
 
 /**
  * Prepare a feature export array into a finalized info array.
+ * @param $export
+ *  An exported feature definition.
+ * @param $module_name
+ *  The name of the module to be exported.
+ * @param $reset
+ *  Boolean flag for resetting the module cache. Only set to true when
+ *  doing a final export for delivery.
  */
-function features_export_prepare($export, $module_name, $reset = FALSE) {
+function features_export_prepare($export, $module_name, $reset = FALSE, $add_deprecated = TRUE) {
   $existing = features_get_modules($module_name, $reset);
 
+  // copy certain exports directly into info
+  $copy_list = array('scripts', 'stylesheets');
+  foreach ($copy_list as $item) {
+    if(isset($export[$item])) {
+      $existing->info[$item] = $export[$item];
+    }
+  }
+
   // Prepare info string -- if module exists, merge into its existing info file
-  $defaults = $existing ? $existing->info : array('core' => '7.x', 'package' => 'Features');
+  $defaults = !empty($existing->info) ? $existing->info : array('core' => '7.x', 'package' => 'Features');
   $export = array_merge($defaults, $export);
 
+  $deprecated = features_get_deprecated();
   // Cleanup info array
   foreach ($export['features'] as $component => $data) {
-    $export['features'][$component] = array_keys($data);
+    // if performing the final export, do not export deprecated components
+    if (($reset || !$add_deprecated) && !empty($deprecated[$component])) {
+      unset($export['features'][$component]);
+    }
+    else {
+      $export['features'][$component] = array_keys($data);
+    }
   }
   if (isset($export['dependencies'])) {
     $export['dependencies'] = array_values($export['dependencies']);
@@ -181,11 +213,15 @@ function features_export_prepare($export, $module_name, $reset = FALSE) {
 
   // Order info array.
   $standard_info = array();
-  foreach (array('name', 'description', 'core', 'package', 'php', 'version', 'project', 'dependencies') as $item) {
+  foreach (array_merge(array('name', 'description', 'core', 'package', 'version', 'project', 'dependencies'), $copy_list) as $item) {
     if (isset($export[$item])) {
       $standard_info[$item] = $export[$item];
     }
   }
+  if (isset($export['php']) && ($export['php'] != DRUPAL_MINIMUM_PHP)) {
+    $standard_info['php'] = $export['php'];
+  }
+  unset($export['php']);
 
   $export = features_array_diff_assoc_recursive($export, $standard_info);
   ksort($export);
@@ -234,9 +270,14 @@ function features_export_render($export, $module_name, $reset = FALSE) {
   // Generate hook code
   $component_hooks = features_export_render_hooks($export, $module_name, $reset);
   $components = features_get_components();
+  $deprecated = features_get_deprecated($components);
 
   // Group component code into their respective files
   foreach ($component_hooks as $component => $hooks) {
+    if ($reset && !empty($deprecated[$component])) {
+      // skip deprecated components on final export
+      continue;
+    }
     $file = array('name' => 'features');
     if (isset($components[$component]['default_file'])) {
       switch ($components[$component]['default_file']) {
@@ -271,40 +312,71 @@ function features_export_render($export, $module_name, $reset = FALSE) {
   $export = features_export_prepare($export, $module_name, $reset);
   $code['info'] = features_export_info($export);
 
+  // Used to create or manipulate the generated .module for features.inc.
+  $modulefile_features_inc = "<?php\n/**\n * @file\n * Code for the {$export['name']} feature.\n */\n\ninclude_once '{$module_name}.features.inc';\n";
+  $modulefile_blank = "<?php\n/**\n * @file\n * Drupal needs this blank file.\n */\n";
+
   // Prepare the module
   // If module exists, let it be and include it in the files
   if ($existing = features_get_modules($module_name, TRUE)) {
     $code['module'] = file_get_contents($existing->filename);
 
     // If the current module file does not reference the features.inc include,
-    // set a warning message.
     // @TODO this way of checking does not account for the possibility of inclusion instruction being commented out.
     if (isset($code['features']) && strpos($code['module'], "{$module_name}.features.inc") === FALSE) {
-      features_log(t('@module does not appear to include the @include file.', array('@module' => "{$module_name}.module", '@include' => "{$module_name}.features.inc")), 'warning');
-    }
-
-    // Deprecated files. Display a message for any of these files letting the
-    // user know that they may be removed.
-    $deprecated = array(
-      "{$module_name}.defaults",
-      "{$module_name}.features.views",
-      "{$module_name}.features.node"
-    );
-    foreach (file_scan_directory(drupal_get_path('module', $module_name), '/.*/') as $file) {
-      if (in_array($file->name, $deprecated, TRUE)) {
-        features_log(t('The file @filename has been deprecated and can be removed.', array('@filename' => $file->filename)), 'status');
+      // If .module does not begin with <?php\n, just add a warning.
+      if (strpos($code['module'], "<?php\n") !== 0) {
+        features_log(t('@module does not appear to include the @include file.', array('@module' => "{$module_name}.module", '@include' => "{$module_name}.features.inc")), 'warning');
+      }
+      else {
+        // Remove the old message if it exists, else just remove the <?php
+        $length = strpos($code['module'], $modulefile_blank) === 0 ? strlen($modulefile_blank) : 6;
+        $code['module'] = $modulefile_features_inc . substr($code['module'], $length);
+      }
+    }
+
+    if ($reset) {
+      // only check for deprecated files on final export
+
+      // Deprecated files. Display a message for any of these files letting the
+      // user know that they may be removed.
+      $deprecated_files = array(
+        "{$module_name}.defaults",
+        "{$module_name}.features.views",
+        "{$module_name}.features.node"
+      );
+      // add deprecated components
+      foreach ($deprecated as $component) {
+        $info = features_get_components($component);
+        $filename = isset($info['default_file']) && $info['default_file'] == FEATURES_DEFAULTS_CUSTOM ? $info['default_filename'] : "features.{$component}";
+        $deprecated_files[] = "{$module_name}.$filename";
       }
-      elseif ($file->name === "{$module_name}.features" && empty($code['features'])) {
-        $code['features'] = "<?php\n\n// This file is deprecated and can be removed.\n// Please remove include_once('{$module_name}.features.inc') in {$module_name}.module as well.\n";
+      foreach (file_scan_directory(drupal_get_path('module', $module_name), '/.*/') as $file) {
+        if (in_array($file->name, $deprecated_files, TRUE)) {
+          features_log(t('The file @filename has been deprecated and can be removed.', array('@filename' => $file->filename)), 'status');
+        }
+        elseif ($file->name === "{$module_name}.features" && empty($code['features'])) {
+          // Try and remove features.inc include.
+          if (strpos($code['module'], "{$module_name}.features.inc")) {
+            $code['module'] = str_replace($modulefile_features_inc, $modulefile_blank, $code['module']);
+          }
+          // If unable to remove the include, add a message to remove.
+          if (strpos($code['module'], "{$module_name}.features.inc")) {
+            $code['features'] = "<?php\n\n// This file is deprecated and can be removed.\n// Please remove include_once('{$module_name}.features.inc') in {$module_name}.module as well.\n";
+          }
+          else {
+            $code['features'] = "<?php\n\n// This file is deprecated and can be removed.\n";
+          }
+        }
       }
     }
   }
   // Add a stub module to include the defaults
   else if (!empty($code['features'])) {
-    $code['module'] = "<?php\n/**\n * @file\n * Code for the {$export['name']} feature.\n */\n\ninclude_once '{$module_name}.features.inc';\n";
+    $code['module'] = $modulefile_features_inc;
   }
   else {
-    $code['module'] = "<?php\n/**\n * @file\n * Drupal needs this blank file.\n */\n";
+    $code['module'] = $modulefile_blank;
   }
   return $code;
 }
@@ -313,14 +385,11 @@ function features_export_render($export, $module_name, $reset = FALSE) {
  * Detect differences between DB and code components of a feature.
  */
 function features_detect_overrides($module) {
-  static $cache;
-  if (!isset($cache)) {
-    $cache = array();
-  }
+  $cache = &drupal_static(__FUNCTION__, array());
   if (!isset($cache[$module->name])) {
     // Rebuild feature from .info file description and prepare an export from current DB state.
-    $export = features_populate($module->info['features'], $module->info['dependencies'], $module->name);
-    $export = features_export_prepare($export, $module->name);
+    $export = features_populate($module->info, $module->name);
+    $export = features_export_prepare($export, $module->name, FALSE, FALSE);
 
     $overridden = array();
 
@@ -427,31 +496,50 @@ function features_export_info($info, $parents = array()) {
  *   A string of the tar file contents.
  */
 function features_tar_create($name, $contents) {
+  /* http://www.mkssoftware.com/docs/man4/tar.4.asp */
+  /* http://www.phpclasses.org/browse/file/21200.html */
   $tar = '';
-  $binary_data_first = pack("a100a8a8a8a12A12",
-    $name,
-    '100644 ', // File permissions
-    '   765 ', // UID,
-    '   765 ', // GID,
+  $bigheader = $header = '';
+  if (strlen($name) > 100) {
+    $bigheader = pack("a100a8a8a8a12a12a8a1a100a6a2a32a32a8a8a155a12",
+        '././@LongLink', '0000000', '0000000', '0000000',
+        sprintf("%011o", strlen($name)), '00000000000',
+        '        ', 'L', '', 'ustar ', '0',
+        '', '', '', '', '', '');
+
+    $bigheader .= str_pad($name, floor((strlen($name) + 512 - 1) / 512) * 512, "\0");
+
+    $checksum = 0;
+    for ($i = 0; $i < 512; $i++) {
+      $checksum += ord(substr($bigheader, $i, 1));
+    }
+    $bigheader = substr_replace($bigheader, sprintf("%06o", $checksum)."\0 ", 148, 8);
+  }
+ $header = pack("a100a8a8a8a12a12a8a1a100a6a2a32a32a8a8a155a12", // book the memorie area
+    substr($name,0,100),  //  0     100     File name
+    '100644 ',            // File permissions
+    '   765 ',            // UID,
+    '   765 ',            // GID,
     sprintf("%11s ", decoct(strlen($contents))), // Filesize,
-    sprintf("%11s", decoct(REQUEST_TIME)) // Creation time
-  );
-  $binary_data_last = pack("a1a100a6a2a32a32a8a8a155a12", '', '', '', '', '', '', '', '', '', '');
+    sprintf("%11s", decoct(REQUEST_TIME)),       // Creation time
+    '        ',        // 148     8         Check sum for header block
+    '',                // 156     1         Link indicator / ustar Type flag
+    '',                // 157     100     Name of linked file
+    'ustar ',          // 257     6         USTAR indicator "ustar"
+    ' ',               // 263     2         USTAR version "00"
+    '',                // 265     32         Owner user name
+    '',                // 297     32         Owner group name
+    '',                // 329     8         Device major number
+    '',                // 337     8         Device minor number
+    '',                // 345     155     Filename prefix
+    '');               // 500     12         ??
 
   $checksum = 0;
-  for ($i = 0; $i < 148; $i++) {
-    $checksum += ord(substr($binary_data_first, $i, 1));
-  }
-  for ($i = 148; $i < 156; $i++) {
-    $checksum += ord(' ');
+  for ($i = 0; $i < 512; $i++) {
+    $checksum += ord(substr($header, $i, 1));
   }
-  for ($i = 156, $j = 0; $i < 512; $i++, $j++) {
-    $checksum += ord(substr($binary_data_last, $j, 1));
-  }
-
-  $tar .= $binary_data_first;
-  $tar .= pack("a8", sprintf("%6s ", decoct($checksum)));
-  $tar .= $binary_data_last;
+  $header = substr_replace($header, sprintf("%06o", $checksum)."\0 ", 148, 8);
+  $tar = $bigheader.$header;
 
   $buffer = str_split($contents, 512);
   foreach ($buffer as $item) {
@@ -463,9 +551,14 @@ function features_tar_create($name, $contents) {
 /**
  * Export var function -- from Views.
  */
-function features_var_export($var, $prefix = '', $init = TRUE) {
+function features_var_export($var, $prefix = '', $init = TRUE, $count = 0) {
+  if ($count > 50) {
+    watchdog('features', 'Recursion depth reached in features_var_export', array());
+    return '';
+  }
+
   if (is_object($var)) {
-    $output = method_exists($var, 'export') ? $var->export() : features_var_export((array) $var, '', FALSE);
+    $output = method_exists($var, 'export') ? $var->export() : features_var_export((array) $var, '', FALSE, $count+1);
   }
   else if (is_array($var)) {
     if (empty($var)) {
@@ -475,7 +568,7 @@ function features_var_export($var, $prefix = '', $init = TRUE) {
       $output = "array(\n";
       foreach ($var as $key => $value) {
         // Using normal var_export on the key to ensure correct quoting.
-        $output .= "  " . var_export($key, TRUE) . " => " . features_var_export($value, '  ', FALSE) . ",\n";
+        $output .= "  " . var_export($key, TRUE) . " => " . features_var_export($value, '  ', FALSE, $count+1) . ",\n";
       }
       $output .= ')';
     }
@@ -483,6 +576,21 @@ function features_var_export($var, $prefix = '', $init = TRUE) {
   else if (is_bool($var)) {
     $output = $var ? 'TRUE' : 'FALSE';
   }
+  else if (is_int($var)) {
+    $output = intval($var);
+  }
+  else if (is_numeric($var)) {
+    $floatval = floatval($var);
+    if (is_string($var) && ((string) $floatval !== $var)) {
+      // Do not convert a string to a number if the string
+      // representation of that number is not identical to the
+      // original value.
+      $output = var_export($var, TRUE);
+    }
+    else {
+      $output = $floatval;
+    }
+  }
   else if (is_string($var) && strpos($var, "\n") !== FALSE) {
     // Replace line breaks in strings with a token for replacement
     // at the very end. This protects whitespace in strings from
@@ -602,10 +710,10 @@ function features_semaphore($op, $component) {
  * Get normal objects for a given module/component pair.
  */
 function features_get_normal($component, $module_name, $reset = FALSE) {
-  static $cache;
-  if (!isset($cache) || $reset) {
-    $cache = array();
+  if ($reset) {
+    drupal_static_reset(__FUNCTION__);
   }
+  $cache = &drupal_static(__FUNCTION__, array());
   if (!isset($cache[$module_name][$component])) {
     features_include();
     $code = NULL;
@@ -635,7 +743,8 @@ function features_get_normal($component, $module_name, $reset = FALSE) {
  * Get defaults for a given module/component pair.
  */
 function features_get_default($component, $module_name = NULL, $alter = TRUE, $reset = FALSE) {
-  static $cache = array();
+  $cache = &drupal_static(__FUNCTION__, array());
+  $alter = !empty($alter); // ensure $alter is a true/false boolean
   features_include();
   features_include_defaults($component);
   $default_hook = features_get_default_hooks($component);
@@ -660,26 +769,31 @@ function features_get_default($component, $module_name = NULL, $alter = TRUE, $r
 
   // Collect and cache information for each specified module.
   foreach ($modules as $m) {
-    if (!isset($cache[$component][$m]) || $reset) {
+    if (!isset($cache[$component][$alter][$m]) || $reset) {
       // Special handling for dependencies component.
       if ($component === 'dependencies') {
         $module = features_get_features($m);
-        $cache[$component][$m] = isset($module->info['dependencies']) ? $module->info['dependencies'] : array();
+        $cache[$component][$alter][$m] = isset($module->info['dependencies']) ? $module->info['dependencies'] : array();
         unset($module);
       }
       // All other components
       else {
         if ($default_hook && module_hook($m, $default_hook)) {
-          $cache[$component][$m] = call_user_func("{$m}_{$default_hook}");
-          $alter_type = features_get_components('alter_type', $component);
-          if ($alter && (!isset($alter_type) || $alter_type == FEATURES_ALTER_TYPE_NORMAL)) {
-            if ($alter_hook = features_get_default_alter_hook($component)) {
-              drupal_alter($alter_hook, $cache[$component][$m]);
+          $cache[$component][$alter][$m] = call_user_func("{$m}_{$default_hook}");
+          if (is_array($cache[$component][$alter][$m])) {
+            $alter_type = features_get_components('alter_type', $component);
+            if ($alter && (!isset($alter_type) || $alter_type == FEATURES_ALTER_TYPE_NORMAL)) {
+              if ($alter_hook = features_get_default_alter_hook($component)) {
+                drupal_alter($alter_hook, $cache[$component][$alter][$m]);
+              }
             }
           }
+          else {
+            $cache[$component][$alter][$m] = FALSE;
+          }
         }
         else {
-          $cache[$component][$m] = FALSE;
+          $cache[$component][$alter][$m] = FALSE;
         }
       }
     }
@@ -687,12 +801,12 @@ function features_get_default($component, $module_name = NULL, $alter = TRUE, $r
 
   // A specific module was specified. Retrieve only its components.
   if (isset($module_name)) {
-    return isset($cache[$component][$module_name]) ? $cache[$component][$module_name] : FALSE;
+    return isset($cache[$component][$alter][$module_name]) ? $cache[$component][$alter][$module_name] : FALSE;
   }
   // No module was specified. Retrieve all components.
   $all_defaults = array();
-  if (isset($cache[$component])) {
-    foreach (array_filter($cache[$component]) as $module_components) {
+  if (isset($cache[$component][$alter])) {
+    foreach (array_filter($cache[$component][$alter]) as $module_components) {
       $all_defaults = array_merge($all_defaults, $module_components);
     }
   }
@@ -703,7 +817,13 @@ function features_get_default($component, $module_name = NULL, $alter = TRUE, $r
  * Get a map of components to their providing modules.
  */
 function features_get_default_map($component, $attribute = NULL, $callback = NULL, $reset = FALSE) {
-  static $map = array();
+  $map = &drupal_static(__FUNCTION__, array());
+
+  global $features_ignore_conflicts;
+  if ($features_ignore_conflicts) {
+    return FALSE;
+  }
+
   features_include();
   features_include_defaults($component);
   if ((!isset($map[$component]) || $reset) && $default_hook = features_get_default_hooks($component)) {
@@ -743,12 +863,13 @@ function features_get_default_map($component, $attribute = NULL, $callback = NUL
  * Retrieve an array of features/components and their current states.
  */
 function features_get_component_states($features = array(), $rebuild_only = TRUE, $reset = FALSE) {
-  static $cache;
-  if (!isset($cache) || $reset) {
-    $cache = array();
+  if ($reset) {
+    drupal_static_reset(__FUNCTION__);
   }
+  $cache = &drupal_static(__FUNCTION__, array());
 
-  $features = !empty($features) ? $features : array_keys(features_get_features());
+  $all_features = features_get_features();
+  $features = !empty($features) ? $features : array_keys($all_features);
 
   // Retrieve only rebuildable components if requested.
   features_include();
@@ -763,8 +884,8 @@ function features_get_component_states($features = array(), $rebuild_only = TRUE
 
   foreach ($features as $feature) {
     $cache[$feature] = isset($cache[$feature]) ? $cache[$feature] : array();
-    if (module_exists($feature)) {
-      foreach ($components as $component) {
+    if (module_exists($feature) && !empty($all_features[$feature]->components)) {
+      foreach (array_intersect($all_features[$feature]->components, $components) as $component) {
         if (!isset($cache[$feature][$component])) {
           $normal = features_get_signature('normal', $feature, $component, $reset);
           $default = features_get_signature('default', $feature, $component, $reset);
@@ -856,8 +977,9 @@ function _features_linetrim($code) {
  */
 function _features_sanitize(&$array) {
   if (is_array($array)) {
-    if (_features_is_assoc($array)) {
-      ksort($array);
+    $is_assoc = _features_is_assoc($array);
+    if ($is_assoc) {
+      ksort($array, SORT_STRING);
       $array = array_filter($array);
     }
     else {
@@ -866,6 +988,9 @@ function _features_sanitize(&$array) {
     foreach ($array as $k => $v) {
       if (is_array($v)) {
         _features_sanitize($array[$k]);
+        if ($is_assoc && empty($array[$k])) {
+          unset($array[$k]);
+        }
       }
     }
   }
diff --git a/profiles/commerce_kickstart/modules/contrib/features/features.info b/profiles/commerce_kickstart/modules/contrib/features/features.info
index 24fd181..dfadcf0 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/features.info
+++ b/profiles/commerce_kickstart/modules/contrib/features/features.info
@@ -4,9 +4,11 @@ core = 7.x
 package = "Features"
 files[] = tests/features.test
 
-; Information added by drupal.org packaging script on 2012-07-25
-version = "7.x-1.0"
+configure = admin/structure/features/settings
+
+; Information added by Drupal.org packaging script on 2015-01-05
+version = "7.x-2.3"
 core = "7.x"
 project = "features"
-datestamp = "1343240292"
+datestamp = "1420492083"
 
diff --git a/profiles/commerce_kickstart/modules/contrib/features/features.install b/profiles/commerce_kickstart/modules/contrib/features/features.install
index 419af3f..aafdcc6 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/features.install
+++ b/profiles/commerce_kickstart/modules/contrib/features/features.install
@@ -22,11 +22,20 @@ function features_install() {
  */
 function features_uninstall() {
   variable_del('features_codecache');
+  variable_del('features_default_export_path');
   variable_del('features_semaphore');
   variable_del('features_ignored_orphans');
-  db_delete('menu_custom')
-    ->condition('menu_name', 'features')
-    ->execute();
+  variable_del('features_feature_locked');
+  variable_del('features_lock_mode');
+  foreach (array_keys(features_get_components()) as $component) {
+    variable_del('features_admin_show_component_' . $component);
+    variable_del('features_component_locked_' . $component);
+  }
+  if (db_table_exists('menu_custom')) {
+    db_delete('menu_custom')
+      ->condition('menu_name', 'features')
+      ->execute();
+  }
   db_delete('menu_links')
     ->condition('module', 'features')
     ->execute();
@@ -50,7 +59,7 @@ function _features_install_menu() {
 
 /**
  * Update 6100: Set module on all feature node types to 'features'.
-
+ *
  * This update can be re-run as needed to repair any node types that are not
  * removed after disabling the associated feature.
  *
diff --git a/profiles/commerce_kickstart/modules/contrib/features/features.js b/profiles/commerce_kickstart/modules/contrib/features/features.js
index 520e98e..023247a 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/features.js
+++ b/profiles/commerce_kickstart/modules/contrib/features/features.js
@@ -1,8 +1,77 @@
+/**
+ * jQuery.fn.sortElements
+ * --------------
+ * @param Function comparator:
+ *   Exactly the same behaviour as [1,2,3].sort(comparator)
+ *
+ * @param Function getSortable
+ *   A function that should return the element that is
+ *   to be sorted. The comparator will run on the
+ *   current collection, but you may want the actual
+ *   resulting sort to occur on a parent or another
+ *   associated element.
+ *
+ *   E.g. $('td').sortElements(comparator, function(){
+ *      return this.parentNode;
+ *   })
+ *
+ *   The <td>'s parent (<tr>) will be sorted instead
+ *   of the <td> itself.
+ *
+ * Credit: http://james.padolsey.com/javascript/sorting-elements-with-jquery/
+ *
+ */
+jQuery.fn.sortElements = (function(){
+
+    var sort = [].sort;
+
+    return function(comparator, getSortable) {
+
+        getSortable = getSortable || function(){return this;};
+
+        var placements = this.map(function(){
+
+            var sortElement = getSortable.call(this),
+                parentNode = sortElement.parentNode,
+
+                // Since the element itself will change position, we have
+                // to have some way of storing its original position in
+                // the DOM. The easiest way is to have a 'flag' node:
+                nextSibling = parentNode.insertBefore(
+                    document.createTextNode(''),
+                    sortElement.nextSibling
+                );
+
+            return function() {
+
+                if (parentNode === this) {
+                    throw new Error(
+                        "You can't sort elements if any one is a descendant of another."
+                    );
+                }
+
+                // Insert before flag:
+                parentNode.insertBefore(this, nextSibling);
+                // Remove flag:
+                parentNode.removeChild(nextSibling);
+
+            };
+
+        });
+
+        return sort.call(this, comparator).each(function(i){
+            placements[i].call(getSortable.call(this));
+        });
+
+    };
+
+})();
+
 (function ($) {
   Drupal.behaviors.features = {
     attach: function(context, settings) {
       // Features management form
-      $('table.features:not(.processed)').each(function() {
+      $('table.features:not(.processed)', context).each(function() {
         $(this).addClass('processed');
 
         // Check the overridden status of each feature
@@ -20,7 +89,7 @@
       });
 
       // Export form component selector
-      $('form.features-export-form select.features-select-components:not(.processed)').each(function() {
+      $('form.features-export-form select.features-select-components:not(.processed)', context).each(function() {
         $(this)
           .addClass('processed')
           .change(function() {
@@ -28,35 +97,295 @@
             $('div.features-select').hide();
             $('div.features-select-' + target).show();
             return false;
+        }).trigger('change');
+      });
+
+      //View info dialog
+      var infoDialog = $('#features-info-file');
+      if (infoDialog.length != 0) {
+        infoDialog.dialog({
+          autoOpen: false,
+          modal: true,
+          draggable: false,
+          resizable: false,
+          width: 600,
+          height: 480
+        });
+      }
+
+      if ((Drupal.settings.features != undefined) && (Drupal.settings.features.info != undefined)) {
+        $('#features-info-file textarea').val(Drupal.settings.features.info);
+        $('#features-info-file').dialog('open');
+        //To be reset by the button click ajax
+        Drupal.settings.features.info = undefined;
+      }
+
+      // mark any conflicts with a class
+      if ((Drupal.settings.features != undefined) && (Drupal.settings.features.conflicts != undefined)) {
+        for (var moduleName in Drupal.settings.features.conflicts) {
+          moduleConflicts = Drupal.settings.features.conflicts[moduleName];
+          $('#features-export-wrapper input[type=checkbox]', context).each(function() {
+            if (!$(this).hasClass('features-checkall')) {
+              var key = $(this).attr('name');
+              var matches = key.match(/^([^\[]+)(\[.+\])?\[(.+)\]\[(.+)\]$/);
+              var component = matches[1];
+              var item = matches[4];
+              if ((component in moduleConflicts) && (moduleConflicts[component].indexOf(item) != -1)) {
+                $(this).parent().addClass('features-conflict');
+              }
+            }
+          });
+        }
+      }
+
+      function _checkAll(value) {
+        if (value) {
+          $('#features-export-wrapper .component-select input[type=checkbox]:visible', context).each(function() {
+            var move_id = $(this).attr('id');
+            $(this).click();
+            $('#'+ move_id).attr('checked', 'checked');
+        });
+        }
+        else {
+          $('#features-export-wrapper .component-added input[type=checkbox]:visible', context).each(function() {
+            var move_id = $(this).attr('id');
+            $('#'+ move_id).removeAttr('checked');
+            $(this).click();
+            $('#'+ move_id).removeAttr('checked');
+          });
+        }
+      }
+
+      function updateComponentCountInfo(item, section) {
+        switch (section) {
+          case 'select':
+            var parent = $(item).closest('.features-export-list').siblings('.features-export-component');
+            $('.component-count', parent).text(function (index, text) {
+                return +text + 1;
+              }
+            );
+            break;
+          case 'added':
+          case 'detected':
+            var parent = $(item).closest('.features-export-component');
+            $('.component-count', parent).text(function (index, text) {
+              return text - 1;
+            });
+        }
+      }
+
+      function moveCheckbox(item, section, value) {
+        updateComponentCountInfo(item, section);
+        var curParent = item;
+        if ($(item).hasClass('form-type-checkbox')) {
+          item = $(item).children('input[type=checkbox]');
+        }
+        else {
+          curParent = $(item).parents('.form-type-checkbox');
+        }
+        var newParent = $(curParent).parents('.features-export-parent').find('.form-checkboxes.component-'+section);
+        $(curParent).detach();
+        $(curParent).appendTo(newParent);
+        var list = ['select', 'added', 'detected', 'included'];
+        for (i in list) {
+          $(curParent).removeClass('component-' + list[i]);
+          $(item).removeClass('component-' + list[i]);
+        }
+        $(curParent).addClass('component-'+section);
+        $(item).addClass('component-'+section);
+        if (value) {
+          $(item).attr('checked', 'checked');
+        }
+        else {
+          $(item).removeAttr('checked')
+        }
+        $(newParent).parent().removeClass('features-export-empty');
+
+        // re-sort new list of checkboxes based on labels
+        $(newParent).find('label').sortElements(
+          function(a, b){
+            return $(a).text() > $(b).text() ? 1 : -1;
+          },
+          function(){
+            return this.parentNode;
+          }
+        );
+      }
+
+      // provide timer for auto-refresh trigger
+      var timeoutID = 0;
+      var inTimeout = 0;
+      function _triggerTimeout() {
+        timeoutID = 0;
+        _updateDetected();
+      }
+      function _resetTimeout() {
+        inTimeout++;
+        // if timeout is already active, reset it
+        if (timeoutID != 0) {
+          window.clearTimeout(timeoutID);
+          if (inTimeout > 0) inTimeout--;
+        }
+        timeoutID = window.setTimeout(_triggerTimeout, 500);
+      }
+
+      function _updateDetected() {
+        var autodetect = $('#features-autodetect input[type=checkbox]');
+        if ((autodetect.length > 0) && (!autodetect.is(':checked'))) return;
+        // query the server for a list of components/items in the feature and update
+        // the auto-detected items
+        var items = [];  // will contain a list of selected items exported to feature
+        var components = {};  // contains object of component names that have checked items
+        $('#features-export-wrapper input[type=checkbox]:checked', context).each(function() {
+          if (!$(this).hasClass('features-checkall')) {
+            var key = $(this).attr('name');
+            var matches = key.match(/^([^\[]+)(\[.+\])?\[(.+)\]\[(.+)\]$/);
+            components[matches[1]] = matches[1];
+            if (!$(this).hasClass('component-detected')) {
+              items.push(key);
+            }
+          }
         });
+        var featureName = $('#edit-module-name').val();
+        if (featureName == '') {
+          featureName = '*';
+        }
+        var url = Drupal.settings.basePath + 'features/ajaxcallback/' + featureName;
+        var excluded = Drupal.settings.features.excluded;
+        var postData = {'items': items, 'excluded': excluded};
+        jQuery.post(url, postData, function(data) {
+          if (inTimeout > 0) inTimeout--;
+          // if we have triggered another timeout then don't update with old results
+          if (inTimeout == 0) {
+            // data is an object keyed by component listing the exports of the feature
+            for (var component in data) {
+              var itemList = data[component];
+              $('#features-export-wrapper .component-' + component + ' input[type=checkbox]', context).each(function() {
+                var key = $(this).attr('value');
+                // first remove any auto-detected items that are no longer in component
+                if ($(this).hasClass('component-detected')) {
+                  if (!(key in itemList)) {
+                    moveCheckbox(this, 'select', false)
+                  }
+                }
+                // next, add any new auto-detected items
+                else if ($(this).hasClass('component-select')) {
+                  if (key in itemList) {
+                    moveCheckbox(this, 'detected', itemList[key]);
+                    $(this).parent().show(); // make sure it's not hidden from filter
+                  }
+                }
+              });
+            }
+            // loop over all selected components and check for any that have been completely removed
+            for (var component in components) {
+              if ((data == null) || !(component in data)) {
+                $('#features-export-wrapper .component-' + component + ' input[type=checkbox].component-detected', context).each(function() {
+                  moveCheckbox(this, 'select', false);
+                });
+              }
+            }
+          }
+        }, "json");
+      }
+
+      // Handle component selection UI
+      $('#features-export-wrapper input[type=checkbox]', context).click(function() {
+        _resetTimeout();
+        if ($(this).hasClass('component-select')) {
+          moveCheckbox(this, 'added', true);
+        }
+        else if ($(this).hasClass('component-included')) {
+          moveCheckbox(this, 'added', false);
+        }
+        else if ($(this).hasClass('component-added')) {
+          if ($(this).is(':checked')) {
+            moveCheckbox(this, 'included', true);
+          }
+          else {
+            moveCheckbox(this, 'select', false);
+          }
+        }
       });
 
-      // Export form machine-readable JS
-      $('.feature-name:not(.processed)').each(function() {
-        $('.feature-name')
-          .addClass('processed')
-          .after(' <small class="feature-module-name-suffix">&nbsp;</small>');
-        if ($('.feature-module-name').val() === $('.feature-name').val().toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/_+/g, '_') || $('.feature-module-name').val() === '') {
-          $('.feature-module-name').parents('.form-item').hide();
-          $('.feature-name').bind('keyup change', function() {
-            var machine = $(this).val().toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/_+/g, '_');
-            if (machine !== '_' && machine !== '') {
-              $('.feature-module-name').val(machine);
-              $('.feature-module-name-suffix').empty().append(' Machine name: ' + machine + ' [').append($('<a href="#">'+ Drupal.t('Edit') +'</a>').click(function() {
-                $('.feature-module-name').parents('.form-item').show();
-                $('.feature-module-name-suffix').hide();
-                $('.feature-name').unbind('keyup');
-                return false;
-              })).append(']');
+      // Handle select/unselect all
+      $('#features-filter .features-checkall', context).click(function() {
+        if ($(this).attr('checked')) {
+          _checkAll(true);
+          $(this).next().html(Drupal.t('Deselect all'));
+        }
+        else {
+          _checkAll(false);
+          $(this).next().html(Drupal.t('Select all'));
+        }
+        _resetTimeout();
+      });
+
+      // Handle filtering
+
+      // provide timer for auto-refresh trigger
+      var filterTimeoutID = 0;
+      var inFilterTimeout = 0;
+      function _triggerFilterTimeout() {
+        filterTimeoutID = 0;
+        _updateFilter();
+      }
+      function _resetFilterTimeout() {
+        inFilterTimeout++;
+        // if timeout is already active, reset it
+        if (filterTimeoutID != 0) {
+          window.clearTimeout(filterTimeoutID);
+          if (inFilterTimeout > 0) inFilterTimeout--;
+        }
+        filterTimeoutID = window.setTimeout(_triggerFilterTimeout, 200);
+      }
+      function _updateFilter() {
+        var filter = $('#features-filter input').val();
+        var regex = new RegExp(filter, 'i');
+        // collapse fieldsets
+        var newState = {};
+        var currentState = {};
+        $('#features-export-wrapper fieldset.features-export-component', context).each(function() {
+          // expand parent fieldset
+          var section = $(this).attr('id');
+          currentState[section] = !($(this).hasClass('collapsed'));
+          if (!(section in newState)) {
+            newState[section] = false;
+          }
+
+          $(this).find('div.component-select label').each(function() {
+            if (filter == '') {
+              if (currentState[section]) {
+                Drupal.toggleFieldset($('#'+section));
+                currentState[section] = false;
+              }
+              $(this).parent().show();
+            }
+            else if ($(this).text().match(regex)) {
+              $(this).parent().show();
+              newState[section] = true;
             }
             else {
-              $('.feature-module-name').val(machine);
-              $('.feature-module-name-suffix').text('');
+              $(this).parent().hide();
             }
           });
-          $('.feature-name').keyup();
+        });
+        for (section in newState) {
+          if (currentState[section] != newState[section]) {
+            Drupal.toggleFieldset($('#'+section));
+          }
         }
+      }
+      $('#features-filter input', context).bind("input", function() {
+        _resetFilterTimeout();
       });
+      $('#features-filter .features-filter-clear', context).click(function() {
+        $('#features-filter input').val('');
+        _updateFilter();
+      });
+
+      // show the filter bar
+      $('#features-filter', context).removeClass('element-invisible');
     }
   }
 
diff --git a/profiles/commerce_kickstart/modules/contrib/features/features.module b/profiles/commerce_kickstart/modules/contrib/features/features.module
index 6485ad3..3a9ada8 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/features.module
+++ b/profiles/commerce_kickstart/modules/contrib/features/features.module
@@ -4,10 +4,10 @@
  * @file
  * Module file for the features module, which enables the capture and
  * management of features in Drupal. A feature is a collection of Drupal
- * entities which taken together statisfy a certain use-case.
+ * entities which taken together satisfy a certain use-case.
  */
 
-define('FEATURES_API', '1');
+define('FEATURES_API', '2');
 
 define('FEATURES_MODULE_ENABLED', 1);
 define('FEATURES_MODULE_DISABLED', 0);
@@ -64,6 +64,11 @@ define('FEATURES_DUPLICATES_CONFLICT', 0);
 define('FEATURES_DUPLICATES_ALLOWED', 1);
 
 /**
+ * The default destination path for features exported via the UI.
+ */
+define('FEATURES_DEFAULT_EXPORT_PATH', 'sites/all/modules');
+
+/**
  * Implements hook_menu().
  */
 function features_menu() {
@@ -78,7 +83,7 @@ function features_menu() {
   );
   $items['admin/structure/features/cleanup'] = array(
     'title' => 'Cleanup',
-    'description' => 'Detect and disable any orphaned feature dependencies.',
+    'description' => 'Clear cache after enabling/disabling a feature.',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('features_cleanup_form', 4),
     'type' => MENU_CALLBACK,
@@ -104,6 +109,18 @@ function features_menu() {
     'file' => "features.admin.inc",
     'weight' => 10,
   );
+  $items['admin/structure/features/settings'] = array(
+    'title' => 'Settings',
+    'description' => 'Adjust settings for using features module.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('features_settings_form'),
+    'access callback' => 'user_access',
+    'access arguments' => array('administer features'),
+    'type' => MENU_LOCAL_TASK,
+    'file' => "features.admin.inc",
+    'weight' => 11,
+  );
+
 
   $items['admin/structure/features/%feature'] = array(
     'title callback' => 'features_get_feature_title',
@@ -150,6 +167,17 @@ function features_menu() {
       'file' => 'features.admin.inc',
     );
   }
+
+  $items['admin/structure/features/%feature/lock'] = array(
+    'title' => 'Lock',
+    'description' => 'Lock a feature or components.',
+    'page callback' => 'features_admin_lock',
+    'page arguments' => array(3, 5, 6),
+    'load arguments' => array(3, TRUE, TRUE),
+    'access arguments' => array('administer features'),
+    'type' => MENU_CALLBACK,
+    'file' => 'features.admin.inc',
+  );
   $items['admin/structure/features/%feature/status'] = array(
     'title' => 'Status',
     'description' => 'Javascript status call back.',
@@ -167,6 +195,16 @@ function features_menu() {
     'type' => MENU_CALLBACK,
     'file' => 'features.admin.inc',
   );
+  $items['features/ajaxcallback/%'] = array(
+    'title callback' => 'features_get_feature_components',
+    'description' => 'Return components of a feature.',
+    'page callback' => 'features_export_components_json',
+    'page arguments' => array(2),
+    'access callback' => 'user_access',
+    'access arguments' => array('administer features'),
+    'type' => MENU_CALLBACK,
+    'file' => 'features.admin.inc',
+  );
   foreach ($items as $path => $item) {
     if (!isset($item['access callback'])) {
       $items[$path]['access callback'] = 'user_access';
@@ -187,11 +225,11 @@ function features_theme() {
 
   $items = array();
   $items['features_module_status'] = array(
-    'variables' => array('module' => null, 'status' => null)
+    'variables' => array('module' => NULL, 'status' => NULL)
   ) + $base;
 
   $items['features_components'] = array(
-    'variables' => array('info' => null, 'sources' => null),
+    'variables' => array('info' => NULL, 'sources' => NULL),
   ) + $base;
 
   $items['features_component_key'] = $base;
@@ -200,7 +238,11 @@ function features_theme() {
   ) + $base;
 
   $items['features_storage_link'] = array(
-    'variables' => array('storage' => null, 'text' => null, 'path' => null, 'options' => array()),
+    'variables' => array('storage' => NULL, 'text' => NULL, 'path' => NULL, 'options' => array()),
+  ) + $base;
+
+  $items['features_lock_link'] = array(
+    'variables' => array('feature' => NULL, 'component' => NULL, 'locked' => FALSE),
   ) + $base;
 
   $items['features_form_components'] =
@@ -226,10 +268,12 @@ function features_theme() {
  * Implements hook_flush_caches().
  */
 function features_flush_caches() {
-  features_rebuild();
-  // Don't flush the modules cache during installation, for performance reasons.
-  if (variable_get('install_task') == 'done') {
-    features_get_modules(NULL, TRUE);
+  if (variable_get('features_rebuild_on_flush', TRUE)) {
+    features_rebuild();
+    // Don't flush the modules cache during installation, for performance reasons.
+    if (variable_get('install_task') == 'done') {
+      features_get_modules(NULL, TRUE);
+    }
   }
   return array();
 }
@@ -242,13 +286,6 @@ function features_form($node, $form_state) {
 }
 
 /**
- * Implemenation of hook_node_access()
- */
-function features_node_access($node, $op, $account) {
-  return node_node_access($node, $op, $account);
-}
-
-/**
  * Implements hook_permission().
  */
 function features_permission() {
@@ -256,10 +293,22 @@ function features_permission() {
     'administer features' => array(
       'title' => t('Administer features'),
       'description' => t('Perform administration tasks on features.'),
+      'restrict access' => TRUE,
     ),
     'manage features' => array(
       'title' => t('Manage features'),
       'description' => t('View, enable and disable features.'),
+      'restrict access' => TRUE,
+    ),
+    'generate features' => array(
+      'title' => t('Generate features'),
+      'description' => t('Allow feature exports to be generated and written directly to site.'),
+      'restrict access' => TRUE,
+    ),
+    'rename features' => array(
+      'title' => t('Edit feature machine name'),
+      'description' => t('Allows editing machine name of a disabled feature'),
+      'restrict access' => TRUE,
     ),
   );
 }
@@ -270,10 +319,10 @@ function features_permission() {
 function features_help($path, $arg) {
   switch ($path) {
     case 'admin/help#features':
-      $output = file_get_contents(drupal_get_path('module', 'features') .'/README.txt');
-      return module_exists('markdown') ? filter_xss_admin(module_invoke('markdown', 'filter', 'process', 0, -1, $output)) : '<pre>'. check_plain($output) .'</pre>';
+      $output = file_get_contents(drupal_get_path('module', 'features') . '/README.txt');
+      return module_exists('markdown') ? filter_xss_admin(module_invoke('markdown', 'filter', 'process', 0, -1, $output)) : '<pre>' . check_plain($output) . '</pre>';
     case 'admin/build/features':
-      return '<p>'. t('A "Feature" is a certain type of Drupal module which contains a package of configuration that, when enabled, provides a new set of functionality for your Drupal site. Enable features by selecting the checkboxes below and clicking the Save configuration button. If the configuration of the feature has been changed its "State" will be either "overridden" or "needs review", otherwise it will be "default", indicating that the configuration has not been changed. Click on the state to see more details about the feature and its components.') .'</p>';
+      return '<p>' . t('A "Feature" is a certain type of Drupal module which contains a package of configuration that, when enabled, provides a new set of functionality for your Drupal site. Enable features by selecting the checkboxes below and clicking the Save configuration button. If the configuration of the feature has been changed its "State" will be either "overridden" or "needs review", otherwise it will be "default", indicating that the configuration has not been changed. Click on the state to see more details about the feature and its components.') . '</p>';
   }
 }
 
@@ -284,7 +333,7 @@ function features_modules_disabled($modules) {
   // Go through all modules and gather features that can be disabled.
   $items = array();
   foreach ($modules as $module) {
-    if (!module_hook($module, 'disable') && $feature = feature_load($module)) {
+    if ($feature = features_load_feature($module)) {
       $items[$module] = array_keys($feature->info['features']);
     }
   }
@@ -300,18 +349,33 @@ function features_modules_disabled($modules) {
  * Implements hook_modules_enabled().
  */
 function features_modules_enabled($modules) {
+  // Allow distributions to disable this behavior and rebuild the features
+  // manually inside a batch.
+  if (!variable_get('features_rebuild_on_module_install', TRUE)) {
+    return;
+  }
+
   // Go through all modules and gather features that can be enabled.
   $items = array();
   foreach ($modules as $module) {
-    if (!module_hook($module, 'enable') && $feature = feature_load($module)) {
+    if ($feature = features_load_feature($module, TRUE)) {
       $items[$module] = array_keys($feature->info['features']);
     }
   }
 
   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);
   }
 }
 
@@ -359,7 +423,7 @@ function features_include_defaults($components = NULL, $reset = FALSE) {
   if (!isset($include_components) || $reset) {
     $include_components = features_get_components();
     foreach ($include_components as $component => $info) {
-      if ($component !== 'views' && !isset($info['api']) && (!isset($info['default_file']) || $info['default_file'] !== FEATURES_DEFAULTS_INCLUDED)) {
+      if (!isset($info['api']) && (!isset($info['default_file']) || $info['default_file'] !== FEATURES_DEFAULTS_INCLUDED)) {
         unset($include_components[$component]);
       }
     }
@@ -376,7 +440,7 @@ function features_include_defaults($components = NULL, $reset = FALSE) {
   foreach ($components as $component) {
     if (isset($include_components[$component])) {
       $info = $include_components[$component];
-      // Inclusion of defaults for Views.
+      // Inclusion of ctools components.
       if (isset($info['api'], $info['module'], $info['current_version'])) {
         ctools_include('plugins');
         ctools_plugin_api_include($info['module'], $info['api'], $info['current_version'], $info['current_version']);
@@ -385,7 +449,10 @@ function features_include_defaults($components = NULL, $reset = FALSE) {
       else {
         $features = isset($features) ? $features : features_get_features(NULL, $reset);
         foreach ($features as $feature) {
-          module_load_include('inc', $feature->name, "{$feature->name}.features.{$component}");
+          $filename = isset($info['default_file']) && $info['default_file'] == FEATURES_DEFAULTS_CUSTOM ? $info['default_filename'] : "features.{$component}";
+          if (module_exists($feature->name) && isset($feature->info['features'][$component])) {
+            module_load_include('inc', $feature->name, "{$feature->name}.$filename");
+          }
         }
       }
     }
@@ -393,9 +460,16 @@ function features_include_defaults($components = NULL, $reset = FALSE) {
 }
 
 /**
- * Feature object loader.
+ * Feature object loader.  DEPRECATED but included for backwards compatibility
  */
 function feature_load($name, $reset = FALSE) {
+  return features_load_feature($name, $reset);
+}
+
+/**
+ * Feature object loader.
+ */
+function features_load_feature($name, $reset = FALSE) {
   // Use an alternative code path during installation, for better performance.
   if (variable_get('install_task') != 'done') {
     static $features;
@@ -592,11 +666,15 @@ function features_get_info($type = 'module', $name = NULL, $reset = FALSE) {
     $ignored = variable_get('features_ignored_orphans', array());
     $files = system_rebuild_module_data();
 
-    // Filter out intentionally hidden features.
-    module_load_include('inc', 'features', 'features.admin');
-    $files = array_filter($files, 'features_filter_hidden');
-
     foreach ($files as $row) {
+      // Remove modification timestamp, added in Drupal 7.33.
+      if (isset($row->info['mtime'])) {
+        unset($row->info['mtime']);
+      }
+      // Avoid false-reported feature overrides for php = 5.2.4 line in .info file.
+      if (isset($row->info['php'])) {
+        unset($row->info['php']);
+      }
       // If module is no longer enabled, remove it from the ignored orphans list.
       if (in_array($row->name, $ignored, TRUE) && !$row->status) {
         $key = array_search($row->name, $ignored, TRUE);
@@ -606,14 +684,30 @@ function features_get_info($type = 'module', $name = NULL, $reset = FALSE) {
       if (!empty($row->info['features'])) {
         // Fix css/js paths
         if (!empty($row->info['stylesheets'])) {
-          foreach($row->info['stylesheets'] as $media => $css) {
+          foreach ($row->info['stylesheets'] as $media => $css) {
             $row->info['stylesheets'][$media] = array_keys($css);
           }
         }
         if (!empty($row->info['scripts'])) {
           $row->info['scripts'] = array_keys($row->info['scripts']);
         }
+        // Rework the features array, to change the vocabulary permission
+        // features.
+        foreach ($row->info['features'] as $component => $features) {
+          if ($component == 'user_permission') {
+            foreach ($features as $key => $feature) {
+              // Export vocabulary permissions using the machine name, instead
+              // of vocabulary id.
+              _user_features_change_term_permission($feature);
+              $row->info['features'][$component][$key] = $feature;
+            }
+          }
+        }
         $data['feature'][$row->name] = $row;
+        $data['feature'][$row->name]->components = array_keys($row->info['features']);
+        if (!empty($row->info['dependencies'])) {
+          $data['feature'][$row->name]->components[] = 'dependencies';
+        }
       }
       $data['module'][$row->name] = $row;
     }
@@ -694,6 +788,9 @@ function features_get_orphans($reset = FALSE) {
 
     foreach ($orphaned as $module) {
       if (!empty($modules[$module]->required_by)) {
+        foreach ($modules[$module]->required_by as $module_name => $dependency) {
+          $modules[$module]->required_by[$module_name] = $dependency['name'];
+        }
         // Determine whether any dependents are actually enabled.
         $dependents = array_intersect($modules[$module]->required_by, $enabled);
         if (empty($dependents)) {
@@ -722,7 +819,7 @@ function features_get_conflicts($reset = FALSE) {
         if (isset($component_info[$type]['duplicates']) && $component_info[$type]['duplicates'] == FEATURES_DUPLICATES_ALLOWED) {
           continue;
         }
-        else if (count($modules) > 1) {
+        elseif (count($modules) > 1) {
           foreach ($modules as $module) {
             if (!isset($conflicts[$module])) {
               $conflicts[$module] = array();
@@ -773,7 +870,7 @@ function features_get_module_status($module) {
   if (module_exists($module)) {
     return FEATURES_MODULE_ENABLED;
   }
-  else if (features_get_modules($module)) {
+  elseif (features_get_modules($module)) {
     return FEATURES_MODULE_DISABLED;
   }
   else {
@@ -819,6 +916,12 @@ function features_form_system_modules_alter(&$form) {
  * Restore the specified modules to the default state.
  */
 function _features_restore($op, $items = array()) {
+  $lockable = FALSE;
+  // Set this variable in $conf if having timeout issues during install/rebuild.
+  if (variable_get('features_restore_time_limit_' . $op, FALSE) !== FALSE) {
+    drupal_set_time_limit(variable_get('features_restore_time_limit_' . $op, FALSE));
+  }
+
   module_load_include('inc', 'features', 'features.export');
   features_include();
 
@@ -827,11 +930,13 @@ function _features_restore($op, $items = array()) {
       $restore_states = array(FEATURES_OVERRIDDEN, FEATURES_REBUILDABLE, FEATURES_NEEDS_REVIEW);
       $restore_hook = 'features_revert';
       $log_action = 'Revert';
+      $lockable = TRUE;
       break;
     case 'rebuild':
       $restore_states = array(FEATURES_REBUILDABLE);
       $restore_hook = 'features_rebuild';
       $log_action = 'Rebuild';
+      $lockable = variable_get('features_lock_mode', 'all') == 'all';
       break;
     case 'disable':
       $restore_hook = 'features_disable_feature';
@@ -860,8 +965,24 @@ function _features_restore($op, $items = array()) {
     }
   }
 
+  // Invoke global pre restore hook.
+  module_invoke_all('features_pre_restore', $op, $items);
   foreach ($items as $module_name => $components) {
+    // If feature is totally locked, do not execute past this stage.
+    if ($lockable && features_feature_is_locked($module_name)) {
+      watchdog('features', 'Tried @actioning a locked @module_name, aborted.', array('@action' => $log_action, '@module_name' => $module_name));
+      continue;
+    }
     foreach ($components as $component) {
+      // If feature is totally locked, do not execute past this stage.
+      if ($lockable && features_feature_is_locked($module_name, $component)) {
+        watchdog('features', 'Tried @actioning a locked @module_name / @component, aborted.', array('@action' => $log_action, '@component' => $component, '@module_name' => $module_name));
+        continue;
+      }
+      // Invoke pre hook
+      $pre_hook = 'pre_' . $restore_hook;
+      module_invoke($module_name, $pre_hook, $component);
+
       if (features_hook($component, $restore_hook)) {
         // Set a semaphore to prevent other instances of the same script from running concurrently.
         watchdog('features', '@actioning @module_name / @component.', array('@action' => $log_action, '@component' => $component, '@module_name' => $module_name));
@@ -873,8 +994,14 @@ function _features_restore($op, $items = array()) {
         features_set_signature($module_name, $component);
         watchdog('features', '@action completed for @module_name / @component.', array('@action' => $log_action, '@component' => $component, '@module_name' => $module_name));
       }
+
+      // Invoke post hook
+      $post_hook = 'post_' . $restore_hook;
+      module_invoke($module_name, $post_hook, $component);
     }
   }
+  // Invoke global post restore hook.
+  module_invoke_all('features_post_restore', $op, $items);
 }
 
 /**
@@ -892,6 +1019,25 @@ function features_rebuild($rebuild = array()) {
 }
 
 /**
+ * Revert a single features module.
+ *
+ * @param string $module
+ *   A features module machine name. This module must be a
+ *   features module and enabled.
+ */
+function features_revert_module($module) {
+  if (($feature = feature_load($module, TRUE)) && module_exists($module)) {
+    $components = array();
+    foreach (array_keys($feature->info['features']) as $component) {
+      if (features_hook($component, 'features_revert')) {
+        $components[] = $component;
+      }
+    }
+    features_revert(array($module => $components));
+  }
+}
+
+/**
  * Utility functions ==================================================
  */
 
@@ -932,6 +1078,30 @@ function features_hook_info() {
 }
 
 /**
+ * Change vocabularies permission, from vocab id to machine name and vice versa.
+ */
+function _user_features_change_term_permission(&$perm, $type = 'vid') {
+  // Export vocabulary permissions using the machine name, instead of vocabulary
+  // id.
+  if (strpos($perm, 'edit terms in ') !== FALSE || strpos($perm, 'delete terms in ') !== FALSE) {
+    preg_match("/(?<=\040)([^\s]+?)$/", trim($perm), $voc_id);
+    $vid = $voc_id[0];
+    if (is_numeric($vid) && $type == 'vid') {
+      if (function_exists('taxonomy_vocabulary_load')) {
+        if ($voc = taxonomy_vocabulary_load($vid)) {
+          $perm = str_replace($vid, $voc->machine_name, $perm);
+        }
+      }
+    }
+    elseif ($type == 'machine_name') {
+      if ($voc = taxonomy_vocabulary_machine_name_load($vid)) {
+        $perm = str_replace($vid, $voc->vid, $perm);
+      }
+    }
+  }
+}
+
+/**
  * Recursively computes the difference of arrays with additional index check.
  *
  * This is a version of array_diff_assoc() that supports multidimensional
@@ -966,3 +1136,73 @@ function features_array_diff_assoc_recursive(array $array1, array $array2) {
   }
   return $difference;
 }
+
+/**
+ * Returns an array of deprecated components
+ * Rather than deprecating the component directly, we look for other components
+ * that supersedes the component
+ * @param $components
+ *   The array of components (component_info) from features_get_components typically.
+ */
+function features_get_deprecated($components = array()) {
+  if (empty($components)) {
+    $components = features_get_components();
+  }
+  $deprecated = array();
+  foreach ($components as $component => $component_info) {
+    if (!empty($component_info['supersedes'])) {
+      $deprecated[$component_info['supersedes']] = $component_info['supersedes'];
+    }
+  }
+  return $deprecated;
+}
+
+/**
+ * Returns whether a feature or it's component is locked.
+ */
+function features_feature_is_locked($feature, $component = NULL, $check_global_component_setting = TRUE) {
+  $locked = variable_get('features_feature_locked', array());
+  if ($component) {
+    return ($check_global_component_setting && features_component_is_locked($component)) || !empty($locked[$feature][$component]);
+  }
+  else {
+    return !empty($locked[$feature]['_all']);
+  }
+}
+
+/**
+ * Returns whether a component is locked.
+ */
+function features_component_is_locked($component) {
+  return variable_get('features_component_locked_' . $component, FALSE);
+}
+
+/**
+ * Locks a feature or it's component.
+ */
+function features_feature_lock($feature, $component = NULL) {
+  $locked = variable_get('features_feature_locked', array());
+  $locked[$feature] = !empty($locked[$feature]) ? $locked[$feature] : array();
+  if ($component) {
+    $locked[$feature][$component] = TRUE;
+  }
+  else {
+    $locked[$feature]['_all'] = TRUE;
+  }
+  variable_set('features_feature_locked', $locked);
+}
+
+
+/**
+ * Unlocks a feature or it's component.
+ */
+function features_feature_unlock($feature, $component = NULL) {
+  $locked = variable_get('features_feature_locked', array());
+  if ($component) {
+    unset($locked[$feature][$component]);
+  }
+  else {
+    unset($locked[$feature]['_all']);
+  }
+  variable_set('features_feature_locked', $locked);
+}
diff --git a/profiles/commerce_kickstart/modules/contrib/features/includes/features.ctools.inc b/profiles/commerce_kickstart/modules/contrib/features/includes/features.ctools.inc
index 13a82fe..387cece 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/includes/features.ctools.inc
+++ b/profiles/commerce_kickstart/modules/contrib/features/includes/features.ctools.inc
@@ -11,6 +11,12 @@ function ctools_features_declare_functions($reset = FALSE) {
       if (!function_exists("{$info['module']}_features_api")) {
         $code .= 'function '. $info['module'] .'_features_api() { return ctools_component_features_api("'. $info['module'] .'"); }';
       }
+
+      // ctools component with owner defined as "ctools"
+      if (!function_exists("{$component}_features_api") && $info['module'] === 'ctools') {
+        $code .= 'function '. $component .'_features_api() { return ctools_component_features_api("'. $component .'"); }';
+      }
+
       if (!function_exists("{$component}_features_export")) {
         $code .= 'function '. $component .'_features_export($data, &$export, $module_name = "") { return ctools_component_features_export("'. $component .'", $data, $export, $module_name); }';
       }
@@ -77,10 +83,9 @@ function ctools_features_export_render($module, $data) {
       // For background on why we change the output for hook_views_api()
       // see http://drupal.org/node/1459120.
       if ($info['module'] == 'views') {
-        $code[] = '  return array("version" => "3.0");';
+        $code[] = '  return array("api" => "3.0");';
       }
       else {
-        $code[] = '  list($module, $api) = func_get_args();';
         $code[] = '  if ($module == "'. $info['module'] .'" && $api == "'. $info['api'] .'") {';
         $code[] = '    return array("version" => "'. $info['current_version'] .'");';
         $code[] = '  }';
@@ -90,10 +95,13 @@ function ctools_features_export_render($module, $data) {
     $plugin_api_hook_name = ctools_plugin_api_get_hook($info['module'], $info['api']);
 
     if (key_exists($plugin_api_hook_name, $component_exports)) {
-        $component_exports[$plugin_api_hook_name] .= "\n" . implode("\n", $code);
+      $component_exports[$plugin_api_hook_name]['code'] .= "\n" . implode("\n", $code);
     }
     else {
-        $component_exports[$plugin_api_hook_name] = implode("\n", $code);
+      $component_exports[$plugin_api_hook_name] = array(
+        'code' => implode("\n", $code),
+        'args' => '$module = NULL, $api = NULL',
+      );
     }
   }
 
@@ -110,7 +118,8 @@ function ctools_features_export_render($module, $data) {
 function ctools_component_features_api($module_name) {
   $api = array();
   foreach (_ctools_features_get_info() as $component => $info) {
-    if ($info['module'] == $module_name) {
+    // if module owner is set to "ctools" we need to compare the component
+    if ($info['module'] == $module_name || ($info['module'] === 'ctools' && $component == $module_name) ) {
       $api[$component] = $info;
     }
   }
@@ -259,7 +268,7 @@ function _ctools_features_get_info($identifier = NULL, $reset = FALSE) {
       return $components[$identifier];
     }
     // New API identifier. Allows non-exportables related CTools APIs to be
-    // supported by an explicit `module:api:current_version` key. 
+    // supported by an explicit `module:api:current_version` key.
     else if (substr_count($identifier, ':') === 2) {
       list($module, $api, $current_version) = explode(':', $identifier);
       // If a schema component matches the provided identifier, provide that
@@ -348,3 +357,22 @@ function page_manager_pages_features_revert($module) {
     }
   }
 }
+
+/**
+ * Implements hook_features_pipe_COMPONENT_alter() for views_view.
+ */
+function views_features_pipe_views_view_alter(&$pipe, $data, $export) {
+  // @todo Remove this check before next stable release.
+  if (!function_exists('views_plugin_list')) {
+    return;
+  }
+
+  $map = array_flip($data);
+  foreach (views_plugin_list() as $plugin) {
+    foreach ($plugin['views'] as $view_name) {
+      if (isset($map[$view_name])) {
+        $pipe['dependencies'][$plugin['module']] = $plugin['module'];
+      }
+    }
+  }
+}
diff --git a/profiles/commerce_kickstart/modules/contrib/features/includes/features.field.inc b/profiles/commerce_kickstart/modules/contrib/features/includes/features.field.inc
index 1936826..09104a3 100755
--- a/profiles/commerce_kickstart/modules/contrib/features/includes/features.field.inc
+++ b/profiles/commerce_kickstart/modules/contrib/features/includes/features.field.inc
@@ -6,69 +6,91 @@
 function field_features_api() {
   return array(
     'field' => array(
+      // this is deprecated by field_base and field_instance
+      // but retained for compatibility with older exports
       'name' => t('Fields'),
       'default_hook' => 'field_default_fields',
       'default_file' => FEATURES_DEFAULTS_INCLUDED,
+      'feature_source' => FALSE,
+    ),
+    'field_base' => array(
+      'name' => t('Field Bases'),
+      'default_hook' => 'field_default_field_bases',
+      'default_file' => FEATURES_DEFAULTS_INCLUDED,
+      'feature_source' => TRUE,
+      'supersedes' => 'field',
+    ),
+    'field_instance' => array(
+      'name' => t('Field Instances'),
+      'default_hook' => 'field_default_field_instances',
+      'default_file' => FEATURES_DEFAULTS_INCLUDED,
       'feature_source' => TRUE,
+      'supersedes' => 'field',
     )
   );
 }
 
+/**
+ * Implements hook_features_export_options().
+ */
+function field_base_features_export_options() {
+  $options = array();
+  $fields = field_info_fields();
+  foreach ($fields as $field_name => $field) {
+    $options[$field_name] = $field_name;
+  }
+  return $options;
+}
 
 /**
  * Implements hook_features_export_options().
  */
-function field_features_export_options() {
+function field_instance_features_export_options() {
   $options = array();
-  $instances = field_info_instances();
-  foreach ($instances as $entity_type => $bundles) {
-    foreach ($bundles as $bundle => $fields) {
-      foreach ($fields as $field) {
-        $identifier = "{$entity_type}-{$bundle}-{$field['field_name']}";
+  foreach (field_info_fields() as $field_name => $field) {
+    foreach ($field['bundles'] as $entity_type => $bundles) {
+      foreach ($bundles as $bundle) {
+        $identifier = "{$entity_type}-{$bundle}-{$field_name}";
         $options[$identifier] = $identifier;
       }
     }
   }
+  ksort($options);
   return $options;
 }
 
 /**
  * Implements hook_features_export().
  */
-function field_features_export($data, &$export, $module_name = '') {
+function field_base_features_export($data, &$export, $module_name = '') {
   $pipe = array();
-  $map = features_get_default_map('field');
+  $map = features_get_default_map('field_base');
 
-  // The field_default_fields() hook integration is provided by the
+  // The field_default_field_bases() hook integration is provided by the
   // features module so we need to add it as a dependency.
   $export['dependencies']['features'] = 'features';
 
   foreach ($data as $identifier) {
-    if ($field = features_field_load($identifier)) {
+    if ($base = features_field_base_load($identifier)) {
       // If this field is already provided by another module, remove the field
       // and add the other module as a dependency.
       if (isset($map[$identifier]) && $map[$identifier] != $module_name) {
-        if (isset($export['features']['field'][$identifier])) {
-          unset($export['features']['field'][$identifier]);
+        if (isset($export['features']['field_base'][$identifier])) {
+          unset($export['features']['field_base'][$identifier]);
         }
         $module = $map[$identifier];
         $export['dependencies'][$module] = $module;
       }
       // If the field has not yet been exported, add it
       else {
-        $export['features']['field'][$identifier] = $identifier;
-        $export['dependencies'][$field['field_config']['module']] = $field['field_config']['module'];
-        $export['dependencies'][$field['field_config']['storage']['module']] = $field['field_config']['storage']['module'];
-        $export['dependencies'][$field['field_instance']['widget']['module']] = $field['field_instance']['widget']['module'];
-        foreach ($field['field_instance']['display'] as $key => $display) {
-          if (isset($display['module'])) {
-            $export['dependencies'][$display['module']] = $display['module'];
-            // @TODO: handle the pipe to image styles
-          }
+        $export['features']['field_base'][$identifier] = $identifier;
+        $export['dependencies'][$base['module']] = $base['module'];
+        if ($base['storage']['type'] != variable_get('field_storage_default', 'field_sql_storage')) {
+          $export['dependencies'][$base['storage']['module']] = $base['storage']['module'];
         }
         // If taxonomy field, add in the vocabulary
-        if ($field['field_config']['type'] == 'taxonomy_term_reference' && !empty($field['field_config']['settings']['allowed_values'])) {
-          foreach ($field['field_config']['settings']['allowed_values'] as $allowed_values) {
+        if ($base['type'] == 'taxonomy_term_reference' && !empty($base['settings']['allowed_values'])) {
+          foreach ($base['settings']['allowed_values'] as $allowed_values) {
             if (!empty($allowed_values['vocabulary'])) {
               $pipe['taxonomy'][] = $allowed_values['vocabulary'];
             }
@@ -81,6 +103,282 @@ function field_features_export($data, &$export, $module_name = '') {
 }
 
 /**
+ * Implements hook_features_export().
+ */
+function field_instance_features_export($data, &$export, $module_name = '') {
+  $pipe = array('field_base' => array());
+  $map = features_get_default_map('field_instance');
+
+  // The field_default_field_instances() hook integration is provided by the
+  // features module so we need to add it as a dependency.
+  $export['dependencies']['features'] = 'features';
+
+  foreach ($data as $identifier) {
+    if ($instance = features_field_instance_load($identifier)) {
+      // If this field is already provided by another module, remove the field
+      // and add the other module as a dependency.
+      if (isset($map[$identifier]) && $map[$identifier] != $module_name) {
+        if (isset($export['features']['field_instance'][$identifier])) {
+          unset($export['features']['field_instance'][$identifier]);
+        }
+        $module = $map[$identifier];
+        $export['dependencies'][$module] = $module;
+      }
+      // If the field has not yet been exported, add it
+      else {
+        $export['features']['field_instance'][$identifier] = $identifier;
+        $export['dependencies'][$instance['widget']['module']] = $instance['widget']['module'];
+        foreach ($instance['display'] as $key => $display) {
+          if (isset($display['module'])) {
+            $export['dependencies'][$display['module']] = $display['module'];
+            // @TODO: handle the pipe to image styles
+          }
+        }
+        $pipe['field_base'][] = $instance['field_name'];
+      }
+    }
+  }
+  return $pipe;
+}
+
+/**
+ * Implements hook_features_export_render().
+ */
+function field_base_features_export_render($module, $data, $export = NULL) {
+  $translatables = $code = array();
+  $code[] = '  $field_bases = array();';
+  $code[] = '';
+  foreach ($data as $identifier) {
+    if ($field = features_field_base_load($identifier)) {
+      unset($field['columns']);
+      // unset($field['locked']);
+      // Only remove the 'storage' declaration if the field is using the default
+      // storage type.
+      if ($field['storage']['type'] == variable_get('field_storage_default', 'field_sql_storage')) {
+        unset($field['storage']);
+      }
+      // If we still have a storage declaration here it means that a non-default
+      // storage type was altered into to the field definition. And noone would
+      // never need to change the 'details' key, so don't render it.
+      if (isset($field['storage']['details'])) {
+        unset($field['storage']['details']);
+      }
+
+      _field_instance_features_export_sort($field);
+      $field_export = features_var_export($field, '  ');
+      $field_identifier = features_var_export($identifier);
+      $code[] = "  // Exported field_base: {$field_identifier}";
+      $code[] = "  \$field_bases[{$field_identifier}] = {$field_export};";
+      $code[] = "";
+    }
+  }
+  $code[] = '  return $field_bases;';
+  $code = implode("\n", $code);
+  return array('field_default_field_bases' => $code);
+}
+
+/**
+ * Implements hook_features_export_render().
+ */
+function field_instance_features_export_render($module, $data, $export = NULL) {
+  $translatables = $code = array();
+
+  $code[] = '  $field_instances = array();';
+  $code[] = '';
+
+  foreach ($data as $identifier) {
+    if ($instance = features_field_instance_load($identifier)) {
+      _field_instance_features_export_sort($instance);
+      $field_export = features_var_export($instance, '  ');
+      $instance_identifier = features_var_export($identifier);
+      $code[] = "  // Exported field_instance: {$instance_identifier}";
+      $code[] = "  \$field_instances[{$instance_identifier}] = {$field_export};";
+      $code[] = "";
+
+      if (!empty($instance['label'])) {
+        $translatables[] = $instance['label'];
+      }
+      if (!empty($instance['description'])) {
+        $translatables[] = $instance['description'];
+      }
+    }
+  }
+  if (!empty($translatables)) {
+    $code[] = features_translatables_export($translatables, '  ');
+  }
+  $code[] = '  return $field_instances;';
+  $code = implode("\n", $code);
+  return array('field_default_field_instances' => $code);
+}
+
+// Helper to enforce consistency in field export arrays.
+function _field_instance_features_export_sort(&$field, $sort = TRUE) {
+
+  // Some arrays are not sorted to preserve order (for example allowed_values).
+  static $sort_blacklist = array(
+      'allowed_values',
+      'format_handlers',
+  );
+
+  if ($sort) {
+    uksort($field, 'strnatcmp');
+  }
+  foreach ($field as $k => $v) {
+    if (is_array($v)) {
+      _field_instance_features_export_sort($field[$k], !in_array($k, $sort_blacklist));
+    }
+  }
+}
+
+/**
+ * Implements hook_features_revert().
+ */
+function field_base_features_revert($module) {
+  field_base_features_rebuild($module);
+}
+
+/**
+ * Implements hook_features_revert().
+ */
+function field_instance_features_revert($module) {
+  field_instance_features_rebuild($module);
+}
+
+/**
+ * Implements of hook_features_rebuild().
+ * Rebuilds fields from code defaults.
+ */
+function field_base_features_rebuild($module) {
+  if ($fields = features_get_default('field_base', $module)) {
+    field_info_cache_clear();
+
+    // Load all the existing field bases up-front so that we don't
+    // have to rebuild the cache all the time.
+    $existing_fields = field_info_fields();
+
+    foreach ($fields as $field) {
+      // Create or update field.
+      if (isset($existing_fields[$field['field_name']])) {
+        $existing_field = $existing_fields[$field['field_name']];
+        if ($field + $existing_field !== $existing_field) {
+          field_update_field($field);
+        }
+      }
+      else {
+        field_create_field($field);
+        $existing_fields[$field['field_name']] = $field;
+      }
+      variable_set('menu_rebuild_needed', TRUE);
+    }
+  }
+}
+
+/**
+ * Implements of hook_features_rebuild().
+ * Rebuilds field instances from code defaults.
+ */
+function field_instance_features_rebuild($module) {
+  if ($instances = features_get_default('field_instance', $module)) {
+    field_info_cache_clear();
+
+    // Load all the existing instances up-front so that we don't
+    // have to rebuild the cache all the time.
+    $existing_instances = field_info_instances();
+
+    foreach ($instances as $field_instance) {
+      // If the field base information does not exist yet, cancel out.
+      if (!field_info_field($field_instance['field_name'])) {
+        continue;
+      }
+
+      // Create or update field instance.
+      if (isset($existing_instances[$field_instance['entity_type']][$field_instance['bundle']][$field_instance['field_name']])) {
+        $existing_instance = $existing_instances[$field_instance['entity_type']][$field_instance['bundle']][$field_instance['field_name']];
+        if ($field_instance + $existing_instance !== $existing_instance) {
+          try {
+            field_update_instance($field_instance);
+          }
+          catch (FieldException $e) {
+            watchdog('features', 'Attempt to update field instance %label (in %entity entity type %bundle bundle) failed: %message', array('%label' => $field_instance['field_name'], '%entity' => $field_instance['entity_type'], '%bundle' => $field_instance['bundle'], '%message' => $e->getMessage()), WATCHDOG_ERROR);
+          }
+        }
+      }
+      else {
+        try {
+          field_create_instance($field_instance);
+        }
+        catch (FieldException $e) {
+          watchdog('features', 'Attempt to create field instance %label (in %entity entity type %bundle bundle) failed: %message', array('%label' => $field_instance['field_name'], '%entity' => $field_instance['entity_type'], '%bundle' => $field_instance['bundle'], '%message' => $e->getMessage()), WATCHDOG_ERROR);
+        }
+        $existing_instances[$field_instance['entity_type']][$field_instance['bundle']][$field_instance['field_name']] = $field_instance;
+      }
+    }
+
+    if ($instances) {
+      variable_set('menu_rebuild_needed', TRUE);
+    }
+  }
+}
+
+/**
+ * Load a field base configuration by a field_name identifier.
+ */
+function features_field_base_load($field_name) {
+  if ($field_info = field_info_field($field_name)) {
+    unset($field_info['id']);
+    unset($field_info['bundles']);
+    return $field_info;
+  }
+  return FALSE;
+}
+
+/**
+ * Load a field's instance configuration by an entity_type-bundle-field_name
+ * identifier.
+ */
+function features_field_instance_load($identifier) {
+  list($entity_type, $bundle, $field_name) = explode('-', $identifier);
+  if ($instance_info = field_info_instance($entity_type, $field_name, $bundle)) {
+    unset($instance_info['id']);
+    unset($instance_info['field_id']);
+    return $instance_info;
+  }
+  return FALSE;
+}
+
+/* ----- DEPRECATED FIELD EXPORT -----
+ * keep this code for backward compatibility with older exports
+ * until v3.x
+ */
+
+/**
+ * Implements hook_features_export_options().
+ */
+function field_features_export_options() {
+  $options = array();
+  $instances = field_info_instances();
+  foreach ($instances as $entity_type => $bundles) {
+    foreach ($bundles as $bundle => $fields) {
+      foreach ($fields as $field) {
+        $identifier = "{$entity_type}-{$bundle}-{$field['field_name']}";
+        $options[$identifier] = $identifier;
+      }
+    }
+  }
+  return $options;
+}
+
+/**
+ * Implements hook_features_export().
+ */
+function field_features_export($data, &$export, $module_name = '') {
+  $pipe = array();
+  // Convert 'field' to 'field_instance' on features-update.
+  $pipe['field_instance'] = $data;
+  return $pipe;
+}
+
+/**
  * Implements hook_features_export_render().
  */
 function field_features_export_render($module, $data, $export = NULL) {
@@ -171,12 +469,22 @@ function field_features_rebuild($module) {
       $field_config = $field['field_config'];
       if (isset($existing_fields[$field_config['field_name']])) {
         $existing_field = $existing_fields[$field_config['field_name']];
-        if ($field_config + $existing_field != $existing_field) {
-          field_update_field($field_config);
+        if ($field_config + $existing_field !== $existing_field) {
+          try {
+            field_update_field($field_config);
+          }
+          catch (FieldException $e) {
+            watchdog('features', 'Attempt to update field %label failed: %message', array('%label' => $field_config['field_name'], '%message' => $e->getMessage()), WATCHDOG_ERROR);
+          }
         }
       }
       else {
-        field_create_field($field_config);
+        try {
+          field_create_field($field_config);
+        }
+        catch (FieldException $e) {
+          watchdog('features', 'Attempt to create field %label failed: %message', array('%label' => $field_config['field_name'], '%message' => $e->getMessage()), WATCHDOG_ERROR);
+        }
         $existing_fields[$field_config['field_name']] = $field_config;
       }
 
@@ -184,7 +492,7 @@ function field_features_rebuild($module) {
       $field_instance = $field['field_instance'];
       if (isset($existing_instances[$field_instance['entity_type']][$field_instance['bundle']][$field_instance['field_name']])) {
         $existing_instance = $existing_instances[$field_instance['entity_type']][$field_instance['bundle']][$field_instance['field_name']];
-        if ($field_instance + $existing_instance != $existing_instance) {
+        if ($field_instance + $existing_instance !== $existing_instance) {
           field_update_instance($field_instance);
         }
       }
diff --git a/profiles/commerce_kickstart/modules/contrib/features/includes/features.image.inc b/profiles/commerce_kickstart/modules/contrib/features/includes/features.image.inc
index 5674499..2b5eb27 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/includes/features.image.inc
+++ b/profiles/commerce_kickstart/modules/contrib/features/includes/features.image.inc
@@ -72,10 +72,12 @@ function image_features_export_render($module_name, $data, $export = NULL) {
  * Implements hook_features_revert().
  */
 function image_features_revert($module) {
-  if ($default_styles = features_get_default('image')) {
+  if ($default_styles = features_get_default('image', $module)) {
     foreach (array_keys($default_styles) as $default_style) {
       if ($style = image_style_load($default_style)) {
-        image_style_delete($style);
+        if ($style['storage'] != IMAGE_STORAGE_DEFAULT) {
+          image_default_style_revert($style);
+        }
       }
     }
   }
diff --git a/profiles/commerce_kickstart/modules/contrib/features/includes/features.locale.inc b/profiles/commerce_kickstart/modules/contrib/features/includes/features.locale.inc
index 6d56fe4..fc27174 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/includes/features.locale.inc
+++ b/profiles/commerce_kickstart/modules/contrib/features/includes/features.locale.inc
@@ -13,7 +13,7 @@ function locale_features_api() {
     'language' => array(
       'name' => t('Languages'),
       'default_hook' => 'locale_default_languages',
-      'features_source' => TRUE,
+      'feature_source' => TRUE,
       'default_file' => FEATURES_DEFAULTS_INCLUDED,
     ),
   );
@@ -141,7 +141,11 @@ function _features_language_save($language) {
   // Update Existing language.
   else {
     // @TODO: get properties from schema.
-    $properties = array('language', 'name', 'native', 'direction', 'enabled', 'plurals', 'formula', 'domain', 'prefix', 'weight');
+    $properties = array('language', 'name', 'native', 'direction', 'enabled', 'plurals', 'formula', 'domain', 'prefix', 'weight', 'javascript');
+    // The javascript hash is not in the imported data but should be empty
+    if (!isset($language->javascript)) {
+      $language->javascript = '';
+    }
 
     $fields = array_intersect_key((array) $language, array_flip($properties));
     db_update('languages')
diff --git a/profiles/commerce_kickstart/modules/contrib/features/includes/features.menu.inc b/profiles/commerce_kickstart/modules/contrib/features/includes/features.menu.inc
index 282335e..c883e6a 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/includes/features.menu.inc
+++ b/profiles/commerce_kickstart/modules/contrib/features/includes/features.menu.inc
@@ -132,17 +132,17 @@ function menu_custom_features_rebuild($module) {
  */
 function menu_links_features_export_options() {
   global $menu_admin;
-  
   // Need to set this to TRUE in order to get menu links that the
   // current user may not have access to (i.e. user/login)
   $menu_admin = TRUE;
-  $menu_links = menu_parent_options(menu_get_menus(), array('mlid' => 0));
+  $use_menus = array_intersect_key(menu_get_menus(), array_flip(array_filter(variable_get('features_admin_menu_links_menus', array_keys(menu_get_menus())))));
+  $menu_links = menu_parent_options($use_menus, array('mlid' => 0));
   $options = array();
   foreach ($menu_links as $key => $name) {
     list($menu_name, $mlid) = explode(':', $key, 2);
     if ($mlid != 0) {
       $link = menu_link_load($mlid);
-      $identifier = menu_links_features_identifier($link, true);
+      $identifier = menu_links_features_identifier($link, TRUE);
       $options[$identifier] = "{$menu_name}: {$name}";
     }
   }
@@ -153,17 +153,16 @@ function menu_links_features_export_options() {
 /**
  * Callback for generating the menu link exportable identifier.
  */
-function menu_links_features_identifier($link, $old = false) {
-    
-  // add some uniqueness to these identifiers, allowing multiple links with the same path, but different titles.
-  $cleantitle = clean_title(isset($link['title']) ? $link['title'] : $link['link_title']);
+function menu_links_features_identifier($link, $old = FALSE) {
+  // Add some uniqueness to these identifiers, allowing multiple links with the same path, but different titles.
+  $clean_title = features_clean_title(isset($link['title']) ? $link['title'] : $link['link_title']);
 
   // The old identifier is requested.
   if ($old) {
     // if identifier already exists
     if (isset($link['options']['identifier'])) {
       return $link['options']['identifier'];
-    } 
+    }
     // providing backward compatibility and allowing/enabling multiple links with same paths
     else {
       $identifier = isset($link['menu_name'], $link['link_path']) ? "{$link['menu_name']}:{$link['link_path']}" : FALSE;
@@ -175,14 +174,13 @@ function menu_links_features_identifier($link, $old = false) {
     }
   }
 
-  return isset($link['menu_name'], $link['link_path']) ? "{$link['menu_name']}_{$cleantitle}:{$link['link_path']}" : FALSE;
+  return isset($link['menu_name'], $link['link_path']) ? "{$link['menu_name']}_{$clean_title}:{$link['link_path']}" : FALSE;
 }
 
 /**
  * Implements hook_features_export().
  */
 function menu_links_features_export($data, &$export, $module_name = '') {
-
   // Default hooks are provided by the feature module so we need to add
   // it as a dependency.
   $export['dependencies']['features'] = 'features';
@@ -191,21 +189,16 @@ function menu_links_features_export($data, &$export, $module_name = '') {
   // Collect a link to module map
   $pipe = array();
   $map = features_get_default_map('menu_links', 'menu_links_features_identifier');
-  
   foreach ($data as $key => $identifier) {
-  
     if ($link = features_menu_link_load($identifier)) {
       // If this link is provided by a different module, add it as a dependency.
-      
       $new_identifier = menu_links_features_identifier($link, empty($export));
-      
       if (isset($map[$identifier]) && $map[$identifier] != $module_name) {
         $export['dependencies'][$map[$identifier]] = $map[$identifier];
       }
       else {
         $export['features']['menu_links'][$new_identifier] = $new_identifier;
       }
-      
       // For now, exclude a variety of common menus from automatic export.
       // They may still be explicitly included in a Feature if the builder
       // chooses to do so.
@@ -224,29 +217,36 @@ function menu_links_features_export_render($module, $data, $export = NULL) {
   $code = array();
   $code[] = '  $menu_links = array();';
   $code[] = '';
-  
+
   $translatables = array();
   foreach ($data as $identifier) {
-  
+
     if ($link = features_menu_link_load($identifier)) {
-    
       $new_identifier = menu_links_features_identifier($link, empty($export));
-    
-      $link['options']['identifier'] = $new_identifier;
-      
+
       // Replace plid with a parent path.
       if (!empty($link['plid']) && $parent = menu_link_load($link['plid'])) {
-        $cleantitle = clean_title($parent['title']);
-        $link['parent_identifier'] = "{$parent['menu_name']}_{$cleantitle}:{$parent['link_path']}";
+        // If the new identifier is different than the old, maintain
+        // 'parent_path' for backwards compatibility.
+        if ($new_identifier != menu_links_features_identifier($link)) {
+          $link['parent_path'] = $parent['link_path'];
+        }
+        else {
+          $clean_title = features_clean_title($parent['title']);
+          $link['parent_identifier'] = "{$parent['menu_name']}_{$clean_title}:{$parent['link_path']}";
+        }
       }
-      
+
       if (isset($export)) {
+        // Don't show new identifier unless we are actually exporting.
+        $link['options']['identifier'] = $new_identifier;
         // identifiers are renewed, => that means we need to update them in the db
-        menu_link_save($temp = $link);
+        $temp = $link;
+        menu_link_save($temp);
       }
-      
-      unset($link['plid']);
-      unset($link['mlid']);
+
+       unset($link['plid']);
+       unset($link['mlid']);
 
       $code[] = "  // Exported menu link: {$new_identifier}";
       $code[] = "  \$menu_links['{$new_identifier}'] = ". features_var_export($link, '  ') .";";
@@ -260,7 +260,6 @@ function menu_links_features_export_render($module, $data, $export = NULL) {
   $code[] = '';
   $code[] = '  return $menu_links;';
   $code = implode("\n", $code);
-  
   return array('menu_default_menu_links' => $code);
 }
 
@@ -275,7 +274,6 @@ function menu_links_features_revert($module) {
  * Implements hook_features_rebuild().
  */
 function menu_links_features_rebuild($module) {
-
   if ($menu_links = features_get_default('menu_links', $module)) {
     menu_links_features_rebuild_ordered($menu_links);
   }
@@ -287,7 +285,6 @@ function menu_links_features_rebuild($module) {
 function menu_links_features_rebuild_ordered($menu_links, $reset = FALSE) {
   static $ordered;
   static $all_links;
-  
   if (!isset($ordered) || $reset) {
     $ordered = array();
     $unordered = features_get_default('menu_links');
@@ -299,26 +296,34 @@ function menu_links_features_rebuild_ordered($menu_links, $reset = FALSE) {
         foreach ($unordered as $key => $link) {
           $identifier = menu_links_features_identifier($link);
           $parent = isset($link['parent_identifier']) ? $link['parent_identifier'] : '';
-          if (empty($parent)) {
-            $ordered[$identifier] = 0;
-            $all_links[$identifier] = $link;
-            unset($unordered[$key]);
+          $weight = 0;
+          // Parent has been seen, so weigh this above parent.
+          if (isset($ordered[$parent])) {
+            $weight = $ordered[$parent] + 1;
           }
-          elseif (isset($ordered[$parent])) {
-            $ordered[$identifier] = $ordered[$parent] + 1;
-            $all_links[$identifier] = $link;
-            unset($unordered[$key]);
+          // Next loop will try to find parent weight instead.
+          elseif ($parent) {
+            continue;
           }
+          $ordered[$identifier] = $weight;
+          $all_links[$identifier] = $link;
+          unset($unordered[$key]);
         }
+      // Exit out when the above does no changes this loop.
       } while (count($unordered) < $current);
     }
+    // Add all remaining unordered items to the ordered list.
+    foreach ($unordered as $link) {
+      $identifier = menu_links_features_identifier($link);
+      $ordered[$identifier] = 0;
+    }
     asort($ordered);
   }
 
   // Ensure any default menu items that do not exist are created.
   foreach (array_keys($ordered) as $identifier) {
     $link = $all_links[$identifier];
-    
+
     $existing = features_menu_link_load($identifier);
     if (!$existing || in_array($link, $menu_links)) {
       // Retrieve the mlid if this is an existing item.
@@ -329,6 +334,10 @@ function menu_links_features_rebuild_ordered($menu_links, $reset = FALSE) {
       if (!empty($link['parent_identifier']) && $parent = features_menu_link_load($link['parent_identifier'])) {
         $link['plid'] = $parent['mlid'];
       }
+      // This if for backwards compatibility.
+      elseif (!empty($link['parent_path']) && $parent = features_menu_link_load("{$link['menu_name']}:{$link['parent_path']}")) {
+         $link['plid'] = $parent['mlid'];
+       }
       else {
         $link['plid'] = 0;
       }
@@ -342,63 +351,77 @@ function menu_links_features_rebuild_ordered($menu_links, $reset = FALSE) {
  * Also matches links with unique menu_name:link_path
  */
 function features_menu_link_load($identifier) {
-  list($menu_name, $link_path) = explode(':', $identifier, 2);
-  list($menu_name, $cleantitle) = array_merge(explode('_', $menu_name, 2), array('', ''));
-  
+  $menu_name = '';
+  $link_path = '';
+  // This gets variables for menu_name_cleantitle:link_path format.
+  if (strstr($identifier, "_")) {
+    $link_path = substr($identifier, strpos($identifier, ":") + 1);
+    list($menu_name) = explode('_', $identifier, 2);
+    $clean_title = substr($identifier, strpos($identifier, "_")  + 1, strpos($identifier, ":") - strpos($identifier, "_") - 1);
+  }
+  // This gets variables for traditional identifier format.
+  else {
+    $clean_title = '';
+    list($menu_name, $link_path) = explode(':', $identifier, 2);
+  }
   $links = db_select('menu_links')
-    ->fields('menu_links', array('menu_name', 'mlid', 'plid', 'link_path', 'router_path', 'link_title', 'options', 'module', 'hidden', 'external', 'has_children', 'expanded', 'weight'))
+    ->fields('menu_links', array('menu_name', 'mlid', 'plid', 'link_path', 'router_path', 'link_title', 'options', 'module', 'hidden', 'external', 'has_children', 'expanded', 'weight', 'customized'))
     ->condition('menu_name', $menu_name)
     ->condition('link_path', $link_path)
+    ->addTag('features_menu_link')
     ->execute()
     ->fetchAllAssoc('mlid');
-    
+
   foreach($links as $link) {
     $link->options = unserialize($link->options);
-    
-    // title or previous identifier matches
-    if ((isset($link->options['identifier']) && strcmp($link->options['identifier'], $identifier) == 0) 
-        || (isset($cleantitle) && strcmp(clean_title($link->link_title), $cleantitle) == 0)) {
-    
+
+    // Title or previous identifier matches.
+    if ((isset($link->options['identifier']) && strcmp($link->options['identifier'], $identifier) == 0)
+        || (isset($clean_title) && strcmp(features_clean_title($link->link_title), $clean_title) == 0)) {
+
       return (array)$link;
     }
   }
-  
-  // only one link with the requested menu_name and link_path does exists, 
-  // -- providing an upgrade possibility for links saved in a feature before the new identifier-pattern was added.
-  if (count($links)==1 && empty($cleantitle)) {
+
+  // Only one link with the requested menu_name and link_path does exists,
+  // -- providing an upgrade possibility for links saved in a feature before the
+  // new identifier-pattern was added.
+  if (count($links) == 1 && empty($clean_title)) {
     $link = reset($links); // get the first item
     return (array)$link;
   }
-  // if link_path was changed on an existing link, we need to find it by searching for link_title.
-  else if (isset($cleantitle)) {
+  // If link_path was changed on an existing link, we need to find it by
+  // searching for link_title.
+  else if (isset($clean_title)) {
     $links = db_select('menu_links')
     ->fields('menu_links', array('menu_name', 'mlid', 'plid', 'link_path', 'router_path', 'link_title', 'options', 'module', 'hidden', 'external', 'has_children', 'expanded', 'weight'))
     ->condition('menu_name', $menu_name)
     ->execute()
     ->fetchAllAssoc('mlid');
-    
+
     foreach($links as $link) {
       $link->options = unserialize($link->options);
-      
-      // title or previous identifier matches
-      if ((isset($link->options['identifier']) && strcmp($link->options['identifier'], $identifier) == 0) 
-          || (isset($cleantitle) && strcmp(clean_title($link->link_title), $cleantitle) == 0)) {
-      
+      // Links with a stored identifier must only be matched on that identifier,
+      // to prevent cross over assumptions.
+      if (isset($link->options['identifier'])) {
+        if (strcmp($link->options['identifier'], $identifier) == 0) {
+          return (array)$link;
+        }
+      }
+      elseif ((strcmp(features_clean_title($link->link_title), $clean_title) == 0)) {
         return (array)$link;
       }
     }
-
   }
-  
   return FALSE;
 }
 
 /**
  * Returns a lowercase clean string with only letters, numbers and dashes
  */
-function clean_title($str) {
+function features_clean_title($str) {
   return strtolower(preg_replace_callback('/(\s)|([^a-zA-Z\-0-9])/i', create_function(
-            '$matches',
-            'return $matches[1]?"-":"";'
-        ), $str));
-} 
+          '$matches',
+          'return $matches[1]?"-":"";'
+      ), $str));
+}
diff --git a/profiles/commerce_kickstart/modules/contrib/features/includes/features.node.inc b/profiles/commerce_kickstart/modules/contrib/features/includes/features.node.inc
index af35e25..9461778 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/includes/features.node.inc
+++ b/profiles/commerce_kickstart/modules/contrib/features/includes/features.node.inc
@@ -9,6 +9,7 @@ function node_features_api() {
       'name' => t('Content types'),
       'feature_source' => TRUE,
       'default_hook' => 'node_info',
+      'alter_type' => FEATURES_ALTER_TYPE_INLINE,
     ),
   );
 }
@@ -43,7 +44,7 @@ function node_features_export($data, &$export, $module_name = '') {
 
       $fields = field_info_instances('node', $type);
       foreach ($fields as $name => $field) {
-        $pipe['field'][] = "node-{$field['bundle']}-{$field['field_name']}";
+        $pipe['field_instance'][] = "node-{$field['bundle']}-{$field['field_name']}";
       }
     }
   }
@@ -86,6 +87,7 @@ function node_features_export_render($module, $data, $export = NULL) {
     }
   }
   $output[] = '  );';
+  $output[] = '  drupal_alter(\'node_info\', $items);';
   $output[] = '  return $items;';
   $output = implode("\n", $output);
   return array('node_info' => $output);
diff --git a/profiles/commerce_kickstart/modules/contrib/features/includes/features.taxonomy.inc b/profiles/commerce_kickstart/modules/contrib/features/includes/features.taxonomy.inc
index 5ac4ec5..a7c85cd 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/includes/features.taxonomy.inc
+++ b/profiles/commerce_kickstart/modules/contrib/features/includes/features.taxonomy.inc
@@ -49,6 +49,7 @@ function taxonomy_features_export($data, &$export, $module_name = '') {
       $fields = field_info_instances('taxonomy_term', $machine_name);
       foreach ($fields as $name => $field) {
         $pipe['field'][] = "taxonomy_term-{$field['bundle']}-{$field['field_name']}";
+        $pipe['field_instance'][] = "taxonomy_term-{$field['bundle']}-{$field['field_name']}";
       }
     }
   }
diff --git a/profiles/commerce_kickstart/modules/contrib/features/includes/features.user.inc b/profiles/commerce_kickstart/modules/contrib/features/includes/features.user.inc
index 0b13514..152c5a8 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/includes/features.user.inc
+++ b/profiles/commerce_kickstart/modules/contrib/features/includes/features.user.inc
@@ -29,8 +29,12 @@ function user_permission_features_export($data, &$export, $module_name = '') {
   // Ensure the modules that provide the given permissions are included as dependencies.
   $map = user_permission_get_modules();
   foreach ($data as $perm) {
-    if (isset($map[$perm])) {
-      $perm_module = $map[$perm];
+    $perm_name = $perm;
+    // Export vocabulary permissions using the machine name, instead of
+    // vocabulary id.
+    _user_features_change_term_permission($perm_name, 'machine_name');
+    if (isset($map[$perm_name])) {
+      $perm_module = $map[$perm_name];
       $export['dependencies'][$perm_module] = $perm_module;
       $export['features']['user_permission'][$perm] = $perm;
     }
@@ -46,14 +50,17 @@ function user_permission_features_export_options() {
   $modules = array();
   $module_info = system_get_info('module');
   foreach (module_implements('permission') as $module) {
-    $modules[$module_info[$module]['name']] = $module;
+    $modules[$module] = $module_info[$module]['name'];
   }
   ksort($modules);
 
   $options = array();
-  foreach ($modules as $display_name => $module) {
+  foreach ($modules as $module => $display_name) {
     if ($permissions = module_invoke($module, 'permission')) {
       foreach ($permissions as $perm => $perm_item) {
+        // Export vocabulary permissions using the machine name, instead of
+        // vocabulary id.
+        _user_features_change_term_permission($perm);
         $options[$perm] = strip_tags("{$display_name}: {$perm_item['title']}");
       }
     }
@@ -64,12 +71,12 @@ function user_permission_features_export_options() {
 /**
  * Implements hook_features_export_render().
  */
-function user_permission_features_export_render($module, $data) {  
+function user_permission_features_export_render($module, $data) {
   $perm_modules = &drupal_static(__FUNCTION__ . '_perm_modules');
   if (!isset($perm_modules)) {
     $perm_modules = user_permission_get_modules();
   }
-  
+
   $code = array();
   $code[] = '  $permissions = array();';
   $code[] = '';
@@ -78,10 +85,14 @@ function user_permission_features_export_render($module, $data) {
 
   foreach ($data as $perm_name) {
     $permission = array();
-    $permission['name'] = $perm_name;
-    if (isset($permissions[$perm_name])) {
+    // Export vocabulary permissions using the machine name, instead of
+    // vocabulary id.
+    $perm = $perm_name;
+    _user_features_change_term_permission($perm_name, 'machine_name');
+    $permission['name'] = $perm;
+    if (!empty($permissions[$perm_name])) {
       sort($permissions[$perm_name]);
-      $permission['roles'] = $permissions[$perm_name];
+      $permission['roles'] = drupal_map_assoc($permissions[$perm_name]);
     }
     else {
       $permission['roles'] = array();
@@ -89,9 +100,9 @@ function user_permission_features_export_render($module, $data) {
     if (isset($perm_modules[$perm_name])) {
       $permission['module'] = $perm_modules[$perm_name];
     }
-    $perm_identifier = features_var_export($perm_name);
+    $perm_identifier = features_var_export($perm);
     $perm_export = features_var_export($permission, '  ');
-    $code[] = "  // Exported permission: {$perm_name}.";
+    $code[] = "  // Exported permission: {$perm_identifier}.";
     $code[] = "  \$permissions[{$perm_identifier}] = {$perm_export};";
     $code[] = "";
   }
@@ -122,10 +133,20 @@ function user_permission_features_rebuild($module) {
     // or via drush.
     node_types_rebuild();
 
+    $modules = user_permission_get_modules();
     $roles = _user_features_get_roles();
     $permissions_by_role = _user_features_get_permissions(FALSE);
     foreach ($defaults as $permission) {
       $perm = $permission['name'];
+      _user_features_change_term_permission($perm, 'machine_name');
+      if (empty($modules[$perm])) {
+        $args = array('!name' => $perm, '!module' => $module,);
+        $msg = t('Warning in features rebuild of !module. No module defines permission "!name".', $args);
+        drupal_set_message($msg, 'warning');
+        continue;
+      }
+      // Export vocabulary permissions using the machine name, instead of
+      // vocabulary id.
       foreach ($roles as $role) {
         if (in_array($role, $permission['roles'])) {
           $permissions_by_role[$role][$perm] = TRUE;
diff --git a/profiles/commerce_kickstart/modules/contrib/features/tests/features.test b/profiles/commerce_kickstart/modules/contrib/features/tests/features.test
index 8da66a3..1fa51ac 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/tests/features.test
+++ b/profiles/commerce_kickstart/modules/contrib/features/tests/features.test
@@ -45,7 +45,7 @@ class FeaturesUserTestCase extends DrupalWebTestCase {
     module_load_include('inc', 'features', 'features.export');
 
     $components = array_filter(array(
-      'field' => 'field',
+      'field_instance' => 'field',
       'filter' => 'filter',
       'image' => 'image',
       'node' => 'node',
@@ -85,7 +85,7 @@ class FeaturesUserTestCase extends DrupalWebTestCase {
     }
   }
 
-  protected function _test_field($op = 'load') {
+  protected function _test_field_instance($op = 'load') {
     switch ($op) {
       case 'load':
         return field_info_instance('node', 'field_features_test', 'features_test');
@@ -266,6 +266,13 @@ class FeaturesCtoolsIntegrationTest extends DrupalWebTestCase {
       $this->assertFalse(function_exists($function), 'Chaos tools functions for ' . $module . ' do not exist while it is disabled.');
       // Module enable will trigger declaring the new functions.
       module_enable(array($module));
+    }
+
+    // CTools hooks only created when there is an actual feature exportable
+    // enabled.
+    module_enable(array('features_test'));
+
+    foreach ($try as $module) {
       if (module_exists($module)) {
         $function_exists = function_exists($function);
         if ($function_exists) {
diff --git a/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.field_base.inc b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.field_base.inc
new file mode 100644
index 0000000..b07f00c
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.field_base.inc
@@ -0,0 +1,43 @@
+<?php
+/**
+ * @file
+ * features_test.features.field_base.inc
+ */
+
+/**
+ * Implements hook_field_default_field_bases().
+ */
+function features_test_field_default_field_bases() {
+  $field_bases = array();
+
+  // Exported field_base: 'field_features_test'
+  $field_bases['field_features_test'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_features_test',
+    'foreign keys' => array(
+      'format' => array(
+        'columns' => array(
+          'format' => 'format',
+        ),
+        'table' => 'filter_format',
+      ),
+    ),
+    'indexes' => array(
+      'format' => array(
+        0 => 'format',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'text',
+    'settings' => array(
+      'max_length' => 255,
+    ),
+    'translatable' => 1,
+    'type' => 'text',
+  );
+
+  return $field_bases;
+}
diff --git a/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.field_instance.inc b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.field_instance.inc
new file mode 100644
index 0000000..8796ff4
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.field_instance.inc
@@ -0,0 +1,76 @@
+<?php
+/**
+ * @file
+ * features_test.features.field_instance.inc
+ */
+
+/**
+ * Implements hook_field_default_field_instances().
+ */
+function features_test_field_default_field_instances() {
+  $field_instances = array();
+
+  // Exported field_instance: 'node-features_test-field_features_test'
+  $field_instances['node-features_test-field_features_test'] = array(
+    'bundle' => 'features_test',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'text',
+        'settings' => array(),
+        'type' => 'text_default',
+        'weight' => 0,
+      ),
+      'full' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'print' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'rss' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'node',
+    'field_name' => 'field_features_test',
+    'label' => 'Test',
+    'required' => 0,
+    'settings' => array(
+      'text_processing' => 0,
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'text',
+      'settings' => array(
+        'size' => 60,
+      ),
+      'type' => 'text_textfield',
+      'weight' => -4,
+    ),
+  );
+
+  // Translatables
+  // Included for use with string extractors like potx.
+  t('Test');
+
+  return $field_instances;
+}
diff --git a/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.filter.inc b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.filter.inc
new file mode 100644
index 0000000..34cd5e9
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.filter.inc
@@ -0,0 +1,56 @@
+<?php
+/**
+ * @file
+ * features_test.features.filter.inc
+ */
+
+/**
+ * Implements hook_filter_default_formats().
+ */
+function features_test_filter_default_formats() {
+  $formats = array();
+
+  // Exported format: features_test.
+  $formats['features_test'] = array(
+    'format' => 'features_test',
+    'name' => 'features_test',
+    'cache' => 1,
+    'status' => 1,
+    'weight' => 0,
+    'filters' => array(
+      'filter_autop' => array(
+        'weight' => 10,
+        'status' => 1,
+        'settings' => array(),
+      ),
+      'filter_html' => array(
+        'weight' => 10,
+        'status' => 1,
+        'settings' => array(
+          'allowed_html' => '<a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>',
+          'filter_html_help' => 1,
+          'filter_html_nofollow' => 0,
+        ),
+      ),
+      'filter_htmlcorrector' => array(
+        'weight' => 10,
+        'status' => 1,
+        'settings' => array(),
+      ),
+      'filter_html_escape' => array(
+        'weight' => 10,
+        'status' => 1,
+        'settings' => array(),
+      ),
+      'filter_url' => array(
+        'weight' => 10,
+        'status' => 1,
+        'settings' => array(
+          'filter_url_length' => 72,
+        ),
+      ),
+    ),
+  );
+
+  return $formats;
+}
diff --git a/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.inc b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.inc
new file mode 100644
index 0000000..38aaa4d
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.inc
@@ -0,0 +1,72 @@
+<?php
+/**
+ * @file
+ * features_test.features.inc
+ */
+
+/**
+ * Implements hook_ctools_plugin_api().
+ */
+function features_test_ctools_plugin_api() {
+  list($module, $api) = func_get_args();
+  if ($module == "strongarm" && $api == "strongarm") {
+    return array("version" => "1");
+  }
+}
+
+/**
+ * Implements hook_views_api().
+ */
+function features_test_views_api() {
+  return array("api" => "3.0");
+}
+
+/**
+ * Implements hook_image_default_styles().
+ */
+function features_test_image_default_styles() {
+  $styles = array();
+
+  // Exported image style: features_test.
+  $styles['features_test'] = array(
+    'name' => 'features_test',
+    'effects' => array(
+      2 => array(
+        'label' => 'Scale',
+        'help' => 'Scaling will maintain the aspect-ratio of the original image. If only a single dimension is specified, the other dimension will be calculated.',
+        'effect callback' => 'image_scale_effect',
+        'dimensions callback' => 'image_scale_dimensions',
+        'form callback' => 'image_scale_form',
+        'summary theme' => 'image_scale_summary',
+        'module' => 'image',
+        'name' => 'image_scale',
+        'data' => array(
+          'width' => 100,
+          'height' => 100,
+          'upscale' => 0,
+        ),
+        'weight' => 1,
+      ),
+    ),
+    'label' => 'features_test',
+  );
+
+  return $styles;
+}
+
+/**
+ * Implements hook_node_info().
+ */
+function features_test_node_info() {
+  $items = array(
+    'features_test' => array(
+      'name' => t('Testing: Features'),
+      'base' => 'node_content',
+      'description' => t('Content type provided for Features tests.'),
+      'has_title' => '1',
+      'title_label' => t('Title'),
+      'help' => '',
+    ),
+  );
+  return $items;
+}
diff --git a/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.taxonomy.inc b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.taxonomy.inc
new file mode 100644
index 0000000..c5ab0fa
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.taxonomy.inc
@@ -0,0 +1,36 @@
+<?php
+/**
+ * @file
+ * features_test.features.taxonomy.inc
+ */
+
+/**
+ * Implements hook_taxonomy_default_vocabularies().
+ */
+function features_test_taxonomy_default_vocabularies() {
+  return array(
+    'taxonomy_features_test' => array(
+      'name' => 'Taxonomy Features Test',
+      'machine_name' => 'taxonomy_features_test',
+      'description' => 'Taxonomy vocabulary',
+      'hierarchy' => 0,
+      'module' => 'taxonomy',
+      'weight' => 0,
+      'rdf_mapping' => array(
+        'rdftype' => array(
+          0 => 'skos:ConceptScheme',
+        ),
+        'name' => array(
+          'predicates' => array(
+            0 => 'dc:title',
+          ),
+        ),
+        'description' => array(
+          'predicates' => array(
+            0 => 'rdfs:comment',
+          ),
+        ),
+      ),
+    ),
+  );
+}
diff --git a/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.user_permission.inc b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.user_permission.inc
new file mode 100644
index 0000000..30b192f
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.features.user_permission.inc
@@ -0,0 +1,24 @@
+<?php
+/**
+ * @file
+ * features_test.features.user_permission.inc
+ */
+
+/**
+ * Implements hook_user_default_permissions().
+ */
+function features_test_user_default_permissions() {
+  $permissions = array();
+
+  // Exported permission: create features_test content.
+  $permissions['create features_test content'] = array(
+    'name' => 'create features_test content',
+    'roles' => array(
+      'anonymous user' => 'anonymous user',
+      'authenticated user' => 'authenticated user',
+    ),
+    'module' => 'node',
+  );
+
+  return $permissions;
+}
diff --git a/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.info b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.info
new file mode 100644
index 0000000..2148161
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.info
@@ -0,0 +1,29 @@
+name = Features Tests
+description = Test module for Features testing.
+core = 7.x
+package = Testing
+php = 5.2.0
+dependencies[] = features
+dependencies[] = image
+dependencies[] = strongarm
+dependencies[] = taxonomy
+dependencies[] = views
+features[ctools][] = strongarm:strongarm:1
+features[ctools][] = views:views_default:3.0
+features[features_api][] = api:2
+features[field_base][] = field_features_test
+features[field_instance][] = node-features_test-field_features_test
+features[filter][] = features_test
+features[image][] = features_test
+features[node][] = features_test
+features[taxonomy][] = taxonomy_features_test
+features[user_permission][] = create features_test content
+features[views_view][] = features_test
+hidden = 1
+
+; Information added by Drupal.org packaging script on 2015-01-05
+version = "7.x-2.3"
+core = "7.x"
+project = "features"
+datestamp = "1420492083"
+
diff --git a/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.module b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.module
new file mode 100644
index 0000000..762d6e5
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.module
@@ -0,0 +1,3 @@
+<?php
+
+include_once('features_test.features.inc');
diff --git a/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.views_default.inc b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.views_default.inc
new file mode 100644
index 0000000..2145946
--- /dev/null
+++ b/profiles/commerce_kickstart/modules/contrib/features/tests/features_test/features_test.views_default.inc
@@ -0,0 +1,38 @@
+<?php
+/**
+ * @file
+ * features_test.views_default.inc
+ */
+
+/**
+ * Implements hook_views_default_views().
+ */
+function features_test_views_default_views() {
+  $export = array();
+
+  $view = new view();
+  $view->name = 'features_test';
+  $view->description = 'Test view provided by Features testing module.';
+  $view->tag = 'testing';
+  $view->base_table = 'node';
+  $view->human_name = '';
+  $view->core = 0;
+  $view->api_version = '3.0';
+  $view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
+
+  /* Display: Defaults */
+  $handler = $view->new_display('default', 'Defaults', 'default');
+  $handler->display->display_options['title'] = 'Test';
+  $handler->display->display_options['use_more_always'] = FALSE;
+  $handler->display->display_options['access']['type'] = 'none';
+  $handler->display->display_options['cache']['type'] = 'none';
+  $handler->display->display_options['query']['type'] = 'views_query';
+  $handler->display->display_options['query']['options']['query_comment'] = FALSE;
+  $handler->display->display_options['exposed_form']['type'] = 'basic';
+  $handler->display->display_options['pager']['type'] = 'full';
+  $handler->display->display_options['style_plugin'] = 'default';
+  $handler->display->display_options['row_plugin'] = 'node';
+  $export['features_test'] = $view;
+
+  return $export;
+}
diff --git a/profiles/commerce_kickstart/modules/contrib/features/theme/features-admin-components.tpl.php b/profiles/commerce_kickstart/modules/contrib/features/theme/features-admin-components.tpl.php
index 69faadf..04213a0 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/theme/features-admin-components.tpl.php
+++ b/profiles/commerce_kickstart/modules/contrib/features/theme/features-admin-components.tpl.php
@@ -3,7 +3,7 @@
 <div class='clearfix features-components'>
   <div class='column'>
     <div class='info'>
-      <h3><?php print $name ?></h3>
+      <?php print $lock_feature ?><h3><?php print $name ?></h3>
       <div class='description'><?php print $description ?></div>
       <?php print $dependencies ?>
     </div>
diff --git a/profiles/commerce_kickstart/modules/contrib/features/theme/theme.inc b/profiles/commerce_kickstart/modules/contrib/features/theme/theme.inc
index 36021c8..e0f3701 100644
--- a/profiles/commerce_kickstart/modules/contrib/features/theme/theme.inc
+++ b/profiles/commerce_kickstart/modules/contrib/features/theme/theme.inc
@@ -81,6 +81,7 @@ function template_preprocess_features_admin_components(&$vars) {
   // Other elements
   $vars['buttons'] = drupal_render($form['buttons']);
   $vars['form'] = $form;
+  $vars['lock_feature'] = theme('features_lock_link', array('feature' => $form['#feature']->name));
 }
 
 /**
@@ -110,6 +111,36 @@ function theme_features_module_status($vars) {
 }
 
 /**
+ * Themes a lock link
+ */
+function theme_features_lock_link($vars) {
+  drupal_add_library('system', 'ui');
+  drupal_add_library('system', 'drupal.ajax');
+  $component = $vars['component'] ? $vars['component'] : '';
+  if ($component && features_component_is_locked($component)) {
+    return l(t('Component locked'), 'admin/structure/features/settings', array(
+      'attributes' => array(
+        'class' => 'features-lock-icon ui-icon ui-icon-locked',
+        'title' => t('This component is locked on a global level.'),
+      ),
+      'fragment' => 'edit-lock-components',
+    ));
+  }
+  $feature = $vars['feature'];
+  $is_locked = features_feature_is_locked($feature, $component);
+  $options = array(
+    'attributes' => array(
+      'class' => array('use-ajax features-lock-icon ui-icon ' . ($is_locked ? ' ui-icon-locked' : ' ui-icon-unlocked')),
+      'id' => 'features-lock-link-' . $feature . ($component ? '-' . $component : ''),
+      'title' => $is_locked ? t('This item is locked and features will not be rebuilt or reverted.') : t('This item is unlocked and will be rebuilt/reverted as normal.'),
+    ),
+    'query' => array('token' => drupal_get_token('features/' . $feature . '/' . $component)),
+  );
+  $path =  "admin/structure/features/" . $feature . "/lock/nojs" . ($component ? '/' . $component: '');
+  return l($is_locked ? t('UnLock') : t('Lock'), $path, $options);
+}
+
+/**
  * Themes a module status display.
  */
 function theme_features_storage_link($vars) {
@@ -228,7 +259,7 @@ function theme_features_form_export(&$vars) {
   $output = '';
   $output .= "<div class='clearfix features-components'>";
   $output .= "<div class='column'>" . drupal_render($vars['form']['components']) . drupal_render($vars['form']['sources']) . "</div>";
-  $output .= "<div class='column'>" . drupal_render($vars['form']['features']) . "</div>";
+  $output .= "<div class='column'>" . drupal_render($vars['form']['preview']) . drupal_render($vars['form']['features']) . "</div>";
   $output .= "</div>";
   $output .= drupal_render_children($vars['form']);
   return $output;
diff --git a/profiles/commerce_kickstart/scripts/check-overridden.sh b/profiles/commerce_kickstart/scripts/check-overridden.sh
new file mode 100755
index 0000000..3ae347d
--- /dev/null
+++ b/profiles/commerce_kickstart/scripts/check-overridden.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+: ${DRUSH:=drush}
+: ${DRUSH_ARGS:=}
+
+FEATURES="commerce_kickstart_block commerce_kickstart_blog commerce_kickstart_merchandising commerce_kickstart_product commerce_kickstart_slideshow commerce_kickstart_social commerce_kickstart_user"
+
+# TODO: We should make sure that 'diff' is downloaded first!
+$DRUSH $DRUSH_ARGS en -y diff
+
+OVERRIDDEN=0
+for feature in $FEATURES; do
+  echo "Checking $feature..."
+  if $DRUSH $DRUSH_ARGS features-diff $feature 2>&1 | grep -v 'Feature is in its default state'; then
+    OVERRIDDEN=1
+  fi
+done
+
+exit $OVERRIDDEN
