diff --git a/ds.module b/ds.module
index 8202e15..4ab473b 100644
--- a/ds.module
+++ b/ds.module
@@ -147,6 +147,14 @@ function ds_module_implements_alter(&$implementations, $hook) {
 }
 
 /**
+ * Implements hook_features_api().
+ */
+function ds_features_api() {
+  module_load_include('inc', 'ds', 'ds.registry');
+  return _ds_features_api();
+}
+
+/**
  * Implements hook_filter_info().
  */
 function ds_filter_info() {
diff --git a/ds.registry.inc b/ds.registry.inc
index b437900..4bc1886 100644
--- a/ds.registry.inc
+++ b/ds.registry.inc
@@ -201,6 +201,36 @@ function _ds_theme() {
 }
 
 /**
+ * Implements hook_features_api().
+ */
+function _ds_features_api() {
+  static $api = FALSE;
+
+  if (!$api) {
+    module_load_include('inc', 'features', 'includes/features.ctools');
+    $api = ctools_component_features_api('ds');
+    foreach ($api as $key => $value) {
+      switch($key) {
+        case 'ds_field_settings':
+          $api[$key]['name'] = 'Display suite field settings';
+          break;
+        case 'ds_layout_settings':
+          $api[$key]['name'] = 'Display suite layout settings';
+          break;
+        case 'ds_view_modes':
+          $api[$key]['name'] = 'Display suite view modes';
+          break;
+        case 'ds_fields':
+          $api[$key]['name'] = 'Display suite fields';
+          break;
+      }
+    }
+  }
+
+  return $api;
+}
+
+/**
  * Implements hook_theme_registry_alter().
  */
 function _ds_theme_registry_alter(&$theme_registry) {
