diff --git a/commerce_sp.features.field.inc b/commerce_sp.features.field.inc
deleted file mode 100644
index f328eb2..0000000
--- a/commerce_sp.features.field.inc
+++ /dev/null
@@ -1,271 +0,0 @@
-<?php
-/**
- * @file
- * commerce_sp.features.field.inc
- */
-
-/**
- * Implements hook_field_default_fields().
- */
-function commerce_sp_field_default_fields() {
-  $fields = array();
-
-  // Exported field: 'commerce_product-commerce_sp_subscription-commerce_price'
-  $fields['commerce_product-commerce_sp_subscription-commerce_price'] = array(
-    'field_config' => 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',
-        ),
-      ),
-      'module' => 'commerce_price',
-      'settings' => array(),
-      'translatable' => '0',
-      'type' => 'commerce_price',
-    ),
-    'field_instance' => array(
-      'bundle' => 'commerce_sp_subscription',
-      'default_value' => NULL,
-      'deleted' => '0',
-      'description' => '',
-      'display' => array(
-        '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' => '3',
-        ),
-        '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_teaser' => 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' => '2',
-      ),
-    ),
-  );
-
-  // Exported field: 'commerce_product-commerce_sp_subscription-field_commerce_sp_time'
-  $fields['commerce_product-commerce_sp_subscription-field_commerce_sp_time'] = array(
-    'field_config' => array(
-      'active' => '1',
-      'cardinality' => '1',
-      'deleted' => '0',
-      'entity_types' => array(),
-      'field_name' => 'field_commerce_sp_time',
-      'field_permissions' => array(
-        'type' => '0',
-      ),
-      'foreign keys' => array(),
-      'indexes' => array(
-        'interval' => array(
-          0 => 'interval',
-        ),
-        'period' => array(
-          0 => 'period',
-        ),
-      ),
-      'module' => 'interval',
-      'settings' => array(),
-      'translatable' => '0',
-      'type' => 'interval',
-    ),
-    'field_instance' => array(
-      'bundle' => 'commerce_sp_subscription',
-      'default_value' => NULL,
-      'deleted' => '0',
-      'description' => 'The validity of the subscription once it has been bought. In case multiple subscription products are bought, the subscription time of all bought products is aggregated. In case there is already a valid subscription, its validity is extended by the given time period.',
-      'display' => array(
-        'default' => array(
-          'label' => 'above',
-          'module' => 'interval',
-          'settings' => array(),
-          'type' => 'interval_default',
-          'weight' => 4,
-        ),
-        'line_item' => array(
-          'label' => 'above',
-          'settings' => array(),
-          'type' => 'hidden',
-          'weight' => 0,
-        ),
-        'node_teaser' => array(
-          'label' => 'above',
-          'settings' => array(),
-          'type' => 'hidden',
-          'weight' => 0,
-        ),
-      ),
-      'entity_type' => 'commerce_product',
-      'field_name' => 'field_commerce_sp_time',
-      'label' => 'Subscription time',
-      'required' => 1,
-      'settings' => array(
-        'allowed_periods' => array(
-          'day' => 'day',
-          'fortnight' => 0,
-          'month' => 'month',
-          'quarter' => 0,
-          'week' => 'week',
-          'year' => 'year',
-        ),
-        'user_register_form' => FALSE,
-      ),
-      'widget' => array(
-        'active' => 0,
-        'module' => 'interval',
-        'settings' => array(),
-        'type' => 'interval_default',
-        'weight' => '3',
-      ),
-    ),
-  );
-
-  // Exported field: 'user-user-field_commerce_sp_validity'
-  $fields['user-user-field_commerce_sp_validity'] = array(
-    'field_config' => array(
-      'active' => '1',
-      'cardinality' => '1',
-      'deleted' => '0',
-      'entity_types' => array(),
-      'field_name' => 'field_commerce_sp_validity',
-      'field_permissions' => array(
-        'type' => 2,
-      ),
-      'foreign keys' => array(),
-      'indexes' => array(),
-      'module' => 'date',
-      'settings' => array(
-        'field_permissions' => NULL,
-        'granularity' => array(
-          'day' => 'day',
-          'hour' => 'hour',
-          'minute' => 'minute',
-          'month' => 'month',
-          'second' => 'second',
-          'year' => 'year',
-        ),
-        'profile2_private' => FALSE,
-        'repeat' => 0,
-        'timezone_db' => 'UTC',
-        'todate' => '',
-        'tz_handling' => 'user',
-      ),
-      'translatable' => '0',
-      'type' => 'datestamp',
-    ),
-    'field_instance' => array(
-      'bundle' => 'user',
-      'deleted' => '0',
-      'description' => '',
-      'display' => array(
-        'default' => array(
-          'label' => 'above',
-          'module' => 'date',
-          'settings' => array(
-            'format_type' => 'long',
-            'fromto' => 'both',
-            'multiple_from' => '',
-            'multiple_number' => '',
-            'multiple_to' => '',
-            'show_repeat_rule' => 'show',
-          ),
-          'type' => 'date_default',
-          'weight' => 1,
-        ),
-      ),
-      'entity_type' => 'user',
-      'field_name' => 'field_commerce_sp_validity',
-      'label' => 'Subscription validity',
-      'required' => 0,
-      'settings' => array(
-        'default_value' => 'blank',
-        'default_value2' => 'blank',
-        'default_value_code' => '',
-        'default_value_code2' => '',
-        'user_register_form' => 0,
-      ),
-      'widget' => array(
-        'active' => 1,
-        'module' => 'date',
-        'settings' => array(
-          'increment' => 15,
-          'input_format' => 'Y-m-d H:i:s',
-          'input_format_custom' => '',
-          'label_position' => 'above',
-          'repeat_collapsed' => 0,
-          'text_parts' => array(),
-          'year_range' => '-3:+3',
-        ),
-        'type' => 'date_text',
-        'weight' => '5',
-      ),
-    ),
-  );
-
-  // Translatables
-  // Included for use with string extractors like potx.
-  t('Price');
-  t('Subscription time');
-  t('Subscription validity');
-  t('The validity of the subscription once it has been bought. In case multiple subscription products are bought, the subscription time of all bought products is aggregated. In case there is already a valid subscription, its validity is extended by the given time period.');
-
-  return $fields;
-}
diff --git a/commerce_sp.features.field_base.inc b/commerce_sp.features.field_base.inc
new file mode 100644
index 0000000..d6cb72d
--- /dev/null
+++ b/commerce_sp.features.field_base.inc
@@ -0,0 +1,126 @@
+<?php
+/**
+ * @file
+ * commerce_sp.features.field_base.inc
+ */
+
+/**
+ * Implements hook_field_default_field_bases().
+ */
+function commerce_sp_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_commerce_sp_skip_expire'
+  $field_bases['field_commerce_sp_skip_expire'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_commerce_sp_skip_expire',
+    'field_permissions' => array(
+      'type' => 2,
+    ),
+    'foreign keys' => array(),
+    'indexes' => array(
+      'value' => array(
+        0 => 'value',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'list',
+    'settings' => array(
+      'allowed_values' => array(
+        0 => 'Automatic',
+        1 => 'Skip automatic expiration',
+      ),
+      'allowed_values_function' => '',
+    ),
+    'translatable' => 0,
+    'type' => 'list_boolean',
+  );
+
+  // Exported field_base: 'field_commerce_sp_time'
+  $field_bases['field_commerce_sp_time'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_commerce_sp_time',
+    'field_permissions' => array(
+      'type' => 0,
+    ),
+    'foreign keys' => array(),
+    'indexes' => array(
+      'interval' => array(
+        0 => 'interval',
+      ),
+      'period' => array(
+        0 => 'period',
+      ),
+    ),
+    'locked' => 0,
+    'module' => 'interval',
+    'settings' => array(),
+    'translatable' => 0,
+    'type' => 'interval',
+  );
+
+  // Exported field_base: 'field_commerce_sp_validity'
+  $field_bases['field_commerce_sp_validity'] = array(
+    'active' => 1,
+    'cardinality' => 1,
+    'deleted' => 0,
+    'entity_types' => array(),
+    'field_name' => 'field_commerce_sp_validity',
+    'field_permissions' => array(
+      'type' => 2,
+    ),
+    'foreign keys' => array(),
+    'indexes' => array(),
+    'locked' => 0,
+    'module' => 'date',
+    'settings' => array(
+      'field_permissions' => NULL,
+      'granularity' => array(
+        'day' => 'day',
+        'hour' => 'hour',
+        'minute' => 'minute',
+        'month' => 'month',
+        'second' => 'second',
+        'year' => 'year',
+      ),
+      'profile2_private' => FALSE,
+      'repeat' => 0,
+      'timezone_db' => 'UTC',
+      'todate' => '',
+      'tz_handling' => 'user',
+    ),
+    'translatable' => 0,
+    'type' => 'datestamp',
+  );
+
+  return $field_bases;
+}
diff --git a/commerce_sp.features.field_instance.inc b/commerce_sp.features.field_instance.inc
new file mode 100644
index 0000000..86c127a
--- /dev/null
+++ b/commerce_sp.features.field_instance.inc
@@ -0,0 +1,230 @@
+<?php
+/**
+ * @file
+ * commerce_sp.features.field_instance.inc
+ */
+
+/**
+ * Implements hook_field_default_field_instances().
+ */
+function commerce_sp_field_default_field_instances() {
+  $field_instances = array();
+
+  // Exported field_instance: 'commerce_product-commerce_sp_subscription-commerce_price'
+  $field_instances['commerce_product-commerce_sp_subscription-commerce_price'] = array(
+    'bundle' => 'commerce_sp_subscription',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      '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' => 3,
+      ),
+      '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_teaser' => 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' => 2,
+    ),
+  );
+
+  // Exported field_instance: 'commerce_product-commerce_sp_subscription-field_commerce_sp_time'
+  $field_instances['commerce_product-commerce_sp_subscription-field_commerce_sp_time'] = array(
+    'bundle' => 'commerce_sp_subscription',
+    'default_value' => NULL,
+    'deleted' => 0,
+    'description' => 'The validity of the subscription once it has been bought. In case multiple subscription products are bought, the subscription time of all bought products is aggregated. In case there is already a valid subscription, its validity is extended by the given time period.',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'interval',
+        'settings' => array(),
+        'type' => 'interval_default',
+        'weight' => 4,
+      ),
+      'line_item' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+      'node_teaser' => array(
+        'label' => 'above',
+        'settings' => array(),
+        'type' => 'hidden',
+        'weight' => 0,
+      ),
+    ),
+    'entity_type' => 'commerce_product',
+    'field_name' => 'field_commerce_sp_time',
+    'label' => 'Subscription time',
+    'required' => 1,
+    'settings' => array(
+      'allowed_periods' => array(
+        'day' => 'day',
+        'fortnight' => 0,
+        'month' => 'month',
+        'quarter' => 0,
+        'week' => 'week',
+        'year' => 'year',
+      ),
+      'user_register_form' => FALSE,
+    ),
+    'widget' => array(
+      'active' => 0,
+      'module' => 'interval',
+      'settings' => array(),
+      'type' => 'interval_default',
+      'weight' => 3,
+    ),
+  );
+
+  // Exported field_instance: 'user-user-field_commerce_sp_skip_expire'
+  $field_instances['user-user-field_commerce_sp_skip_expire'] = array(
+    'bundle' => 'user',
+    'default_value' => array(
+      0 => array(
+        'value' => 0,
+      ),
+    ),
+    'deleted' => 0,
+    'description' => 'If checked, the subscription does not expire automatically. For example, this could be used by modules to control and renew the subscription by the actual payments.',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'list',
+        'settings' => array(),
+        'type' => 'list_default',
+        'weight' => 2,
+      ),
+    ),
+    'entity_type' => 'user',
+    'field_name' => 'field_commerce_sp_skip_expire',
+    'label' => 'Subscription expiration',
+    'required' => 0,
+    'settings' => array(
+      'user_register_form' => 0,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'options',
+      'settings' => array(
+        'display_label' => 0,
+      ),
+      'type' => 'options_onoff',
+      'weight' => 6,
+    ),
+  );
+
+  // Exported field_instance: 'user-user-field_commerce_sp_validity'
+  $field_instances['user-user-field_commerce_sp_validity'] = array(
+    'bundle' => 'user',
+    'deleted' => 0,
+    'description' => '',
+    'display' => array(
+      'default' => array(
+        'label' => 'above',
+        'module' => 'date',
+        'settings' => array(
+          'format_type' => 'long',
+          'fromto' => 'both',
+          'multiple_from' => '',
+          'multiple_number' => '',
+          'multiple_to' => '',
+          'show_repeat_rule' => 'show',
+        ),
+        'type' => 'date_default',
+        'weight' => 1,
+      ),
+    ),
+    'entity_type' => 'user',
+    'field_name' => 'field_commerce_sp_validity',
+    'label' => 'Subscription validity',
+    'required' => 0,
+    'settings' => array(
+      'default_value' => 'blank',
+      'default_value2' => 'blank',
+      'default_value_code' => '',
+      'default_value_code2' => '',
+      'user_register_form' => 0,
+    ),
+    'widget' => array(
+      'active' => 1,
+      'module' => 'date',
+      'settings' => array(
+        'increment' => 15,
+        'input_format' => 'Y-m-d H:i:s',
+        'input_format_custom' => '',
+        'label_position' => 'above',
+        'repeat_collapsed' => 0,
+        'text_parts' => array(),
+        'year_range' => '-3:+3',
+      ),
+      'type' => 'date_text',
+      'weight' => 5,
+    ),
+  );
+
+  // Translatables
+  // Included for use with string extractors like potx.
+  t('If checked, the subscription does not expire automatically. For example, this could be used by modules to control and renew the subscription by the actual payments.');
+  t('Price');
+  t('Subscription expiration');
+  t('Subscription time');
+  t('Subscription validity');
+  t('The validity of the subscription once it has been bought. In case multiple subscription products are bought, the subscription time of all bought products is aggregated. In case there is already a valid subscription, its validity is extended by the given time period.');
+
+  return $field_instances;
+}
diff --git a/commerce_sp.features.inc b/commerce_sp.features.inc
index 4a3a308..4baf764 100644
--- a/commerce_sp.features.inc
+++ b/commerce_sp.features.inc
@@ -14,8 +14,7 @@ function commerce_sp_commerce_product_default_types() {
       'name' => 'Subscription',
       'description' => 'A product type for selling subscriptions.',
       'help' => '',
-      'revision' => '1',
-      'module' => 'commerce_product_ui',
+      'revision' => 1,
     ),
   );
   return $items;
@@ -25,5 +24,8 @@ function commerce_sp_commerce_product_default_types() {
  * Implements hook_ctools_plugin_api().
  */
 function commerce_sp_ctools_plugin_api() {
-  return array("version" => "1");
+  list($module, $api) = func_get_args();
+  if ($module == "field_group" && $api == "field_group") {
+    return array("version" => "1");
+  }
 }
diff --git a/commerce_sp.features.user_permission.inc b/commerce_sp.features.user_permission.inc
new file mode 100644
index 0000000..234b9c1
--- /dev/null
+++ b/commerce_sp.features.user_permission.inc
@@ -0,0 +1,49 @@
+<?php
+/**
+ * @file
+ * commerce_sp.features.user_permission.inc
+ */
+
+/**
+ * Implements hook_user_default_permissions().
+ */
+function commerce_sp_user_default_permissions() {
+  $permissions = array();
+
+  // Exported permission: create field_commerce_sp_validity.
+  $permissions['create field_commerce_sp_validity'] = array(
+    'name' => 'create field_commerce_sp_validity',
+    'roles' => array(),
+    'module' => 'field_permissions',
+  );
+
+  // Exported permission: edit field_commerce_sp_validity.
+  $permissions['edit field_commerce_sp_validity'] = array(
+    'name' => 'edit field_commerce_sp_validity',
+    'roles' => array(),
+    'module' => 'field_permissions',
+  );
+
+  // Exported permission: edit own field_commerce_sp_validity.
+  $permissions['edit own field_commerce_sp_validity'] = array(
+    'name' => 'edit own field_commerce_sp_validity',
+    'roles' => array(),
+    'module' => 'field_permissions',
+  );
+
+  // Exported permission: view field_commerce_sp_validity.
+  $permissions['view field_commerce_sp_validity'] = array(
+    'name' => 'view field_commerce_sp_validity',
+    'roles' => array(),
+    'module' => 'field_permissions',
+  );
+
+  // Exported permission: view own field_commerce_sp_validity.
+  $permissions['view own field_commerce_sp_validity'] = array(
+    'name' => 'view own field_commerce_sp_validity',
+    'roles' => array(),
+    'module' => 'field_permissions',
+  );
+
+  return $permissions;
+}
diff --git a/commerce_sp.info b/commerce_sp.info
index b1cb46b..7b4b20c 100644
--- a/commerce_sp.info
+++ b/commerce_sp.info
@@ -1,33 +1,52 @@
-name = "Subscription Products"
-description = "Allows selling subscriptions using Drupal commerce products."
-core = "7.x"
-package = "Commerce"
-php = "5.2.4"
-dependencies[] = "commerce_checkout"
-dependencies[] = "commerce_features"
-dependencies[] = "commerce_product_ui"
-dependencies[] = "date"
-dependencies[] = "features"
-dependencies[] = "field_group"
-dependencies[] = "field_permissions"
-dependencies[] = "interval"
-dependencies[] = "rules_scheduler"
-features[commerce_product_type][] = "commerce_sp_subscription"
-features[ctools][] = "field_group:field_group:1"
-features[field][] = "commerce_product-commerce_sp_subscription-commerce_price"
-features[field][] = "commerce_product-commerce_sp_subscription-field_commerce_sp_time"
-features[field][] = "user-user-field_commerce_sp_validity"
-features[field_group][] = "group_commerce_sp|user|user|form"
-features[rules_config][] = "rules_commerce_sp_cancel_subscription_expiration"
-features[rules_config][] = "rules_commerce_sp_line_item_is_subscription_product"
-features[rules_config][] = "rules_commerce_sp_line_item_subscription_product_apply"
-features[rules_config][] = "rules_commerce_sp_schedule_subscription_expiration"
-features[rules_config][] = "rules_commerce_sp_subscription_aborted_as_account_is_del"
-features[rules_config][] = "rules_commerce_sp_subscription_bought"
-features[rules_config][] = "rules_commerce_sp_subscription_end"
-features[rules_config][] = "rules_commerce_sp_subscription_start"
-features[rules_config][] = "rules_commerce_sp_subscription_started_insert"
-features[rules_config][] = "rules_commerce_sp_subscription_started_update"
-features[rules_config][] = "rules_commerce_sp_subscription_time_to_validity"
-features[rules_config][] = "rules_commerce_sp_subscription_validity_is_unset"
-features[rules_config][] = "rules_commerce_sp_subscription_schedule_update"
+name = Subscription Products
+description = Allows selling subscriptions using Drupal commerce products.
+core = 7.x
+package = Commerce
+php = 5.2.4
+dependencies[] = commerce_checkout
+dependencies[] = commerce_features
+dependencies[] = commerce_price
+dependencies[] = commerce_product_ui
+dependencies[] = ctools
+dependencies[] = date
+dependencies[] = entity
+dependencies[] = features
+dependencies[] = field_group
+dependencies[] = field_permissions
+dependencies[] = interval
+dependencies[] = list
+dependencies[] = options
+dependencies[] = rules
+dependencies[] = rules_scheduler
+features[commerce_product_type][] = commerce_sp_subscription
+features[ctools][] = field_group:field_group:1
+features[features_api][] = api:1
+features[field_base][] = commerce_price
+features[field_base][] = field_commerce_sp_skip_expire
+features[field_base][] = field_commerce_sp_time
+features[field_base][] = field_commerce_sp_validity
+features[field_group][] = group_commerce_sp|user|user|form
+features[field_instance][] = commerce_product-commerce_sp_subscription-commerce_price
+features[field_instance][] = commerce_product-commerce_sp_subscription-field_commerce_sp_time
+features[field_instance][] = user-user-field_commerce_sp_skip_expire
+features[field_instance][] = user-user-field_commerce_sp_validity
+features[rules_config][] = rules_commerce_sp_cancel_subscription_expiration
+features[rules_config][] = rules_commerce_sp_line_item_is_subscription_product
+features[rules_config][] = rules_commerce_sp_line_item_subscription_product_apply
+features[rules_config][] = rules_commerce_sp_schedule_subscription_expiration
+features[rules_config][] = rules_commerce_sp_subscription_aborted_as_account_is_del
+features[rules_config][] = rules_commerce_sp_subscription_bought
+features[rules_config][] = rules_commerce_sp_subscription_end
+features[rules_config][] = rules_commerce_sp_subscription_schedule_update
+features[rules_config][] = rules_commerce_sp_subscription_start
+features[rules_config][] = rules_commerce_sp_subscription_started_insert
+features[rules_config][] = rules_commerce_sp_subscription_started_update
+features[rules_config][] = rules_commerce_sp_subscription_time_to_validity
+features[rules_config][] = rules_commerce_sp_subscription_validity_is_unset
+features[user_permission][] = create field_commerce_sp_validity
+features[user_permission][] = edit field_commerce_sp_validity
+features[user_permission][] = edit own field_commerce_sp_validity
+features[user_permission][] = view field_commerce_sp_validity
+features[user_permission][] = view own field_commerce_sp_validity
+features_exclude[field][commerce_product-commerce_sp_subscription-commerce_price] = commerce_product-commerce_sp_subscription-commerce_price
+features_exclude[field][commerce_product-commerce_sp_subscription-field_commerce_sp_time] = commerce_product-commerce_sp_subscription-field_commerce_sp_time
diff --git a/commerce_sp.rules_defaults.inc b/commerce_sp.rules_defaults.inc
index 48c23ab..460444f 100644
--- a/commerce_sp.rules_defaults.inc
+++ b/commerce_sp.rules_defaults.inc
@@ -194,6 +194,40 @@ function commerce_sp_default_rules_configuration() {
       ]
     }
   }');
+  $items['rules_commerce_sp_subscription_schedule_update'] = entity_import('rules_config', '{ "rules_commerce_sp_subscription_schedule_update" : {
+      "LABEL" : "Update subscription expiration schedule",
+      "PLUGIN" : "reaction rule",
+      "TAGS" : [ "commerce_sp" ],
+      "REQUIRES" : [ "rules" ],
+      "ON" : [ "user_update" ],
+      "IF" : [
+        { "OR" : [
+            { "AND" : [
+                { "NOT data_is" : {
+                    "data" : [ "account:field-commerce-sp-validity" ],
+                    "value" : [ "account-unchanged:field-commerce-sp-validity" ]
+                  }
+                },
+                { "NOT data_is_empty" : { "data" : [ "account:field-commerce-sp-validity" ] } }
+              ]
+            },
+            { "AND" : [
+                { "NOT data_is" : {
+                    "data" : [ "account:field-commerce-sp-skip-expire" ],
+                    "value" : [ "account-unchanged:field-commerce-sp-skip-expire" ]
+                  }
+                },
+                { "data_is_empty" : { "data" : [ "account:field-commerce-sp-skip-expire" ] } }
+              ]
+            }
+          ]
+        }
+      ],
+      "DO" : [
+        { "component_rules_commerce_sp_schedule_subscription_expiration" : { "account" : [ "account" ] } }
+      ]
+    }
+  }');
   $items['rules_commerce_sp_subscription_start'] = entity_import('rules_config', '{ "rules_commerce_sp_subscription_start" : {
       "LABEL" : "Subscription start",
       "PLUGIN" : "rule set",
@@ -278,40 +312,6 @@ function commerce_sp_default_rules_configuration() {
       ]
     }
   }');
-  $items['rules_commerce_sp_subscription_schedule_update'] = entity_import('rules_config', '{ "rules_commerce_sp_subscription_schedule_update" : {
-      "LABEL" : "Update subscription expiration schedule",
-      "PLUGIN" : "reaction rule",
-      "TAGS" : [ "commerce_sp" ],
-      "REQUIRES" : [ "rules" ],
-      "ON" : [ "user_update" ],
-      "IF" : [
-        { "OR" : [
-            { "AND" : [
-                { "NOT data_is" : {
-                    "data" : [ "account:field-commerce-sp-validity" ],
-                    "value" : [ "account-unchanged:field-commerce-sp-validity" ]
-                  }
-                },
-                { "NOT data_is_empty" : { "data" : [ "account:field-commerce-sp-validity" ] } }
-              ]
-            },
-            { "AND" : [
-                { "NOT data_is" : {
-                    "data" : [ "account:field-commerce-sp-skip-expire" ],
-                    "value" : [ "account-unchanged:field-commerce-sp-skip-expire" ]
-                  }
-                },
-                { "data_is_empty" : { "data" : [ "account:field-commerce-sp-skip-expire" ] } }
-              ]
-            }
-          ]
-        }
-      ],
-      "DO" : [
-        { "component_rules_commerce_sp_schedule_subscription_expiration" : { "account" : [ "account" ] } }
-      ]
-    }
-  }');
   $items['rules_commerce_sp_subscription_validity_is_unset'] = entity_import('rules_config', '{ "rules_commerce_sp_subscription_validity_is_unset" : {
       "LABEL" : "End subscription when validity is unset",
       "PLUGIN" : "reaction rule",

