diff --git a/features.drush.inc b/features.drush.inc
index c5e4bed..148f3bb 100644
--- a/features.drush.inc
+++ b/features.drush.inc
@@ -57,6 +57,10 @@ function features_drush_command() {
     ),
     'aliases' => array('fc'),
   );
+  $items['features-component-sources'] = array(
+    'description' => 'List features component sources.',
+    'aliases' => array('fcs'),
+  );
   $items['features-update'] = array(
     'description' => "Update a feature module on your site.",
     'arguments' => array(
@@ -127,6 +131,8 @@ Patterns uses * or % for matching multiple sources/components. Unlike shorthands
 
 Lastly, a pattern without a colon is interpreted as having \":%\" appended, for easy listing of all components of a source.
 ");
+    case 'drush:features-component-sources':
+      return dt("List the possible sources for components.");
     case 'drush:features-update':
       return dt("Update a feature module on your site.");
     case 'drush:features-update-all':
@@ -174,21 +180,30 @@ function drush_features_list() {
 }
 
 /**
+ * List component sources.
+ */
+function drush_features_component_sources() {
+  features_include();
+  $rows = array(array(dt('Component source'), dt('Source name'), dt('Handling module')));
+  foreach (module_implements('features_api') as $module) {
+    $components = module_invoke($module, 'features_api');
+    drupal_alter('features_api', $components);
+    foreach ($components as $source => $info) {
+      $rows[] = array($info['name'], $source, $module);
+    }
+  }
+  drush_print_table($rows);
+}
+
+/**
  * List components, with pattern matching.
  */
 function drush_features_components() {
   $args = func_get_args();
   $components = _drush_features_component_list();
-  // If no args supplied, prompt with a list.
+  // If no args supplied, list everything.
   if (empty($args)) {
-    $types = array_keys($components);
-    array_unshift($types, 'all');
-    $choice = drush_choice($types, 'Enter a number to choose which component type to list.');
-    if ($choice === FALSE) {
-      return;
-    }
-
-    $args = ($choice == 0) ? array('*') : array($types[$choice]);
+    $args = array('*');
   }
   $options = array(
     'provided by' => TRUE,
