diff --git a/ui/configuration_ui.admin.inc b/ui/configuration_ui.admin.inc
index 5e9faf9..b7b881f 100644
--- a/ui/configuration_ui.admin.inc
+++ b/ui/configuration_ui.admin.inc
@@ -8,127 +8,117 @@
 use Drupal\configuration\Config\ConfigurationManagement;
 use Drupal\configuration\Utils\ConfigIteratorSettings;
 
-/**
- * Menu Callback Form.
- */
 function configuration_ui_tracking_form($form, &$form_state) {
-  $component_exists = FALSE;
-  $handlers = configuration_configuration_handlers();
+  $configurations = ConfigurationManagement::trackedConfigurations();
 
-  $form['packages'] = array('#type' => 'vertical_tabs');
-  $form['#attached']['css'] = array(
-    drupal_get_path('module', 'configuration_ui') . '/theme/configuration.css'
-  );
-  $form['#attached']['js'] = array(
-    drupal_get_path('module', 'configuration_ui') . '/js/configuration_ui.js'
+  $form_state['table_header'] = array(
+    'names' => t('Configuration'),
+    'status' => t('Status'),
+    'operations' => t('Operations'),
   );
 
-  $tracked = ConfigurationManagement::trackedConfigurations();
-
-  foreach ($tracked as $component => $list) {
-
-    $options = array();
-    foreach ($list as $identifier => $info) {
-      $id = $component . '.' . $identifier;
-      $status = '<span class ="config-status" rel="' . $id . '">' . t('Processing...') . '</span>';
+  configuration_ui_configuration_list('tracking', $configurations, $form, $form_state);
 
-      $options[$id] = array(
-        check_plain($info['name']),
-        $status,
-        l(t('Stop Tracking'), 'admin/config/system/configuration/stop_tracking/' . $id) . ' | ' . l(t('View info'), 'admin/config/system/configuration/view/' . $id)
+  if (!empty($form_state['component_exists'])) {
+    $form['buttons'] = array('#theme' => 'configuration_ui_form_buttons', '#tree' => FALSE);
+    // Do not allow writing to datastore if on remote server.
+    if (variable_get('configuration_remote_server', 0) < 1) {
+      $form['buttons']['submit'] = array(
+        '#type' => 'submit',
+        '#value' => t('Write Activestore to Datastore'),
+        '#submit' => array('configuration_ui_export_to_datastore_form_submit'),
       );
     }
-
-    if (!empty($options)) {
-      $handler = ConfigurationManagement::getConfigurationHandler($component);
-      if (empty($handler)) {
-        continue;
-      }
-      $component_exists = TRUE;
-      $form[$component] = array(
-        '#type' => 'fieldset',
-        '#group' => 'packages',
-        '#title' => check_plain($handler::getComponentHumanName($component)),
-        '#description' => '<span class= "component" rel="' . check_plain($component) . '">' .  t('Currently tracked configurations for: @component', array('@component' => $handler::getComponentHumanName($component, TRUE))) . '</span>',
-        '#collapsible' => TRUE,
-        '#collapsed' => TRUE,
-        '#tree' => TRUE,
-        '#attached' => array(
-          'js' => array(
-            'vertical-tabs' => drupal_get_path('module', 'configuration_ui') . '/theme/vertical-tabs.js',
-          ),
-        ),
-        '#attributes' => array('class' => array('configuration')),
-      );
-      asort($options);
-      $form[$component]['tracked'] = array(
-        '#type' => 'tableselect',
-        '#header' => array('Configuration', 'Status', 'Operations'),
-        '#options' => $options,
-      );
-      $form['dependencies_option'] = array(
-        '#type' => 'fieldset',
-        '#title' => t('Dependencies and Optionals'),
-        '#description' => t('Choose if you want to process dependent and optional components.'),
-        '#collapsible' => TRUE,
-        '#collapsed' => FALSE,
-      );
-      $form['dependencies_option']['include_dependencies'] = array(
-        '#type' => 'checkbox',
-        '#title' => t('Process component dependencies.'),
-        '#default_value' => TRUE,
-      );
-      $form['dependencies_option']['include_optionals'] = array(
-        '#type' => 'checkbox',
-        '#title' => t('Process component optionals.'),
-        '#default_value' => TRUE,
+    else {
+      $form['buttons']['export'] = array(
+        '#type' => 'submit',
+        '#value' => t('Export All Tracked Configurations'),
+        '#submit' => array('configuration_ui_export_traked_to_tar_file_form_submit'),
       );
     }
-  }
-  $form['buttons'] = array('#theme' => 'configuration_ui_form_buttons', '#tree' => FALSE);
-
-  // Do not allow writing to datastore if on remote server.
-  if (variable_get('configuration_remote_server', 0) < 1) {
-    $form['buttons']['submit'] = array(
+    $form['buttons']['stop_tracking'] = array(
       '#type' => 'submit',
-      '#value' => t('Write Activestore to Datastore'),
-      '#submit' => array('configuration_ui_export_to_datastore_form_submit'),
+      '#value' => t('Stop Tracking'),
+      '#submit' => array('configuration_ui_stop_tracking_form_submit'),
     );
-  }
-  else {
-    $form['buttons']['submit'] = array(
+    $form['buttons']['import'] = array(
       '#type' => 'submit',
-      '#value' => t('Export All Tracked Configurations'),
-      '#submit' => array('configuration_ui_export_traked_to_tar_file_form_submit'),
+      '#value' => t('Import Datastore to Activestore'),
+      '#submit' => array('configuration_ui_activate_form_submit'),
     );
   }
-  $form['buttons']['stop_tracking'] = array(
-    '#type' => 'submit',
-    '#value' => t('Stop Tracking'),
-    '#submit' => array('configuration_ui_stop_tracking_form_submit'),
-  );
-  $form['buttons']['revert'] = array(
-    '#type' => 'submit',
-    '#value' => t('Import Datastore to Activestore'),
-    '#submit' => array('configuration_ui_activate_form_submit'),
-  );
-  if (!$component_exists) {
+  else {
     $form['no_configs'] = array(
       '#markup' => t('No Configurations were found. Please use the
       !export_link page to begin tracking new Configurations.',
           array('!export_link' => l(t('Not Tracking'), 'admin/config/system/configuration/notracking'))),
     );
-    unset($form['buttons']);
   }
-  $form['#validate'][] = 'configuration_ui_tracking_form_validate';
   return $form;
 }
 
+function configurations_ui_operations_helper($ui, $id) {
+  switch ($ui) {
+    case 'tracking':
+      return l(t('Stop Tracking'), 'admin/config/system/configuration/stop_tracking/' . $id) . ' | ' . l(t('View info'), 'admin/config/system/configuration/view/' . $id);
+      break;
+
+    case 'no_tracking':
+      return l(t('Start Tracking'), 'admin/config/system/configuration/start_tracking/' . $id) . ' | ' . l(t('View info'), 'admin/config/system/configuration/view/' . $id);
+
+      break;
+
+    case 'export':
+      return l(t('View info'), 'admin/config/system/configuration/view/' . $id);
+      break;
+  }
+}
+
 /**
  * Menu Callback Form.
  */
 function configuration_ui_notracking_form($form, &$form_state) {
+  $configurations = ConfigurationManagement::nonTrackedConfigurations();
+
+  $form_state['table_header'] = array(
+    'names' => t('Configuration'),
+    'operations' => t('Operations'),
+  );
+  configuration_ui_configuration_list('no_tracking', $configurations, $form, $form_state);
+
+  $form['buttons'] = array('#theme' => 'configuration_ui_form_buttons', '#tree' => FALSE);
+  $form['buttons']['start_tracking'] = array(
+    '#type' => 'submit',
+    '#value' => t('Start Tracking'),
+    '#submit' => array('configuration_ui_start_tracking_form_submit'),
+  );
+  return $form;
+}
+
+function configuration_ui_export_form($form, &$form_state) {
+  $configurations = ConfigurationManagement::allConfigurations();
+
+  $form_state['table_header'] = array(
+    'names' => t('Configuration'),
+    'status' => t('Tracked'),
+    'operations' => t('Operations'),
+  );
+  configuration_ui_configuration_list('export', $configurations, $form, $form_state);
+
+  $form['buttons'] = array('#theme' => 'configuration_ui_form_buttons', '#tree' => FALSE);
+  $form['buttons']['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Export to Tar File'),
+    '#submit' => array('configuration_ui_export_to_tar_file_form_submit'),
+  );
+  return $form;
+}
+/**
+ * Helper function for configuration lists.
+ */
+function configuration_ui_configuration_list($ui, $configurations, &$form, &$form_state) {
   $component_exists = FALSE;
+  $handlers = configuration_configuration_handlers();
 
   $form['packages'] = array('#type' => 'vertical_tabs');
   $form['#attached']['css'] = array(
@@ -137,76 +127,101 @@ function configuration_ui_notracking_form($form, &$form_state) {
   $form['#attached']['js'] = array(
     drupal_get_path('module', 'configuration_ui') . '/js/configuration_ui.js'
   );
-  $non_tracked = ConfigurationManagement::nonTrackedConfigurations();
 
-  foreach ($non_tracked as $component => $list) {
-    $options = array();
-    foreach ($list as $identifier => $info) {
-      $id = $info['id'];
-      $options[$id] = array(
-        check_plain($info['name']),
-        l(t('Start Tracking'), 'admin/config/system/configuration/start_tracking/' . $id) . ' | ' . l(t('View info'), 'admin/config/system/configuration/view/' . $id)
-      );
+  $form_state['component_exists'] = FALSE;
+  foreach ($configurations as $component => $list) {
+    $handler = ConfigurationManagement::getConfigurationHandler($component);
+    if (empty($handler) || count($list) < 1) {
+      continue;
     }
+    $form[$component] = array(
+      '#type' => 'fieldset',
+      '#group' => 'packages',
+      '#title' => check_plain($handler::getComponentHumanName($component)),
+      '#description' => '<span class= "component" rel="' . check_plain($component) . '">' .  t('Configurations for: @component', array('@component' => $handler::getComponentHumanName($component, TRUE))) . '</span>',
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+      '#tree' => TRUE,
+      '#attached' => array(
+        'js' => array(
+          'vertical-tabs' => drupal_get_path('module', 'configuration_ui') . '/theme/vertical-tabs.js',
+        ),
+      ),
+      '#attributes' => array('class' => array('configuration')),
+    );
 
-    if (!empty($options)) {
-      $handler = ConfigurationManagement::getConfigurationHandler($component);
-      $component_exists = TRUE;
-      $form[$component] = array(
-        '#type' => 'fieldset',
-        '#group' => 'packages',
-        '#title' => check_plain($handler::getComponentHumanName($component)),
-        '#description' => t('Available configurations for: @component', array('@component' => $handler::getComponentHumanName($component, TRUE))),
-        '#collapsible' => TRUE,
-        '#collapsed' => TRUE,
+    $form[$component]['configurations'] = array(
+      '#tree' => FALSE,
+      '#theme' => 'configuration_table',
+      'items' => array(
         '#tree' => TRUE,
-        '#attached' => array(
-          'js' => array(
-            'vertical-tabs' => drupal_get_path('module', 'configuration_ui') . '/theme/vertical-tabs.js',
-          ),
-        ),
-        '#attributes' => array('class' => array('configuration')),
-      );
-      $form[$component]['tracked'] = array(
-        '#type' => 'tableselect',
-        '#header' => array('Configuration', 'Operations'),
-        '#options' => $options,
-      );
-      $form['dependencies_option'] = array(
-        '#type' => 'fieldset',
-        '#title' => t('Dependencies and Optionals'),
-        '#description' => t('Choose if you want to process dependent and optional components.'),
-        '#collapsible' => TRUE,
-        '#collapsed' => FALSE,
-      );
-      $form['dependencies_option']['include_dependencies'] = array(
+      ),
+      'name' => array(
+        '#tree' => TRUE,
+      ),
+      'status' => array(
+        '#tree' => TRUE,
+      ),
+      'operations' => array(
+        '#tree' => TRUE,
+      ),
+    );
+
+    $form[$component]['configurations']['#header'] = $form_state['table_header'];
+
+    foreach ($list as $identifier => $info) {
+      $form_state['component_exists'] = TRUE;
+      $id = $component . '.' . $identifier;
+
+      $form[$component]['configurations']['items'][$id] = array(
         '#type' => 'checkbox',
-        '#title' => t('Process component dependencies.'),
-        '#default_value' => TRUE,
+        '#title' => check_plain($info['name']),
+        '#title_display' => 'invisible',
+        '#return_value' => $id,
       );
-      $form['dependencies_option']['include_optionals'] = array(
-        '#type' => 'checkbox',
-        '#title' => t('Process component optionals.'),
-        '#default_value' => TRUE,
+
+      $form[$component]['configurations']['names'][$id] = array(
+        '#markup' => check_plain($info['name']),
+      );
+
+      if ($ui == 'tracking') {
+        $form[$component]['configurations']['status'][$id] = array(
+          '#markup' => '<span class ="config-status" rel="' . $id . '">' . t('Processing...') . '</span>',
+        );
+      }
+      elseif ($ui == 'export') {
+        $form[$component]['configurations']['status'][$id] = array(
+          '#markup' => $info['hash'] ? t('Tracked') : t('Not tracked'),
+        );
+      }
+
+      $form[$component]['configurations']['operations'][$id] = array(
+        '#markup' => configurations_ui_operations_helper($ui, $id),
       );
     }
+    asort($form[$component]['configurations']['items']);
   }
-  $form['buttons'] = array('#theme' => 'configuration_ui_form_buttons', '#tree' => FALSE);
-  $form['buttons']['start_tracking'] = array(
-    '#type' => 'submit',
-    '#value' => t('Start Tracking'),
-    '#submit' => array('configuration_ui_start_tracking_form_submit'),
-  );
-  if (!$component_exists) {
-    $form['no_configs'] = array(
-      '#markup' => t('No Configurations were found. Please use the
-      !export_link page to check Configurations you are tracking right now.',
-          array('!export_link' => l(t('Tracking'), 'admin/config/system/configuration/tracking'))),
+
+  if (!empty($form_state['component_exists'])) {
+    $form['dependencies_option'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Dependencies and Optionals'),
+      '#description' => t('Choose if you want to process dependent and optional components.'),
+      '#collapsible' => TRUE,
+      '#collapsed' => FALSE,
+    );
+    $form['dependencies_option']['include_dependencies'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Process component dependencies.'),
+      '#default_value' => TRUE,
+    );
+    $form['dependencies_option']['include_optionals'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Process component optionals.'),
+      '#default_value' => TRUE,
     );
-    unset($form['buttons']);
   }
-  $form['#validate'][] = 'configuration_ui_tracking_form_validate';
-  return $form;
+
 }
 
 /**
@@ -485,10 +500,6 @@ function configuration_ui_start_tracking_form_submit($form, &$form_state) {
   }
 }
 
-function configuration_ui_tracking_form_validate() {
-  return TRUE;
-}
-
 /**
  * Implements hook_theme().
  */
@@ -500,12 +511,15 @@ function configuration_ui_theme($existing, $type, $theme, $path) {
   $items = array();
   $items['configuration_ui_form_buttons'] = array(
     'render element' => 'element',
-      ) + $base;
+  ) + $base;
+
+  $items['configuration_table'] = array(
+    'render element' => 'form',
+  ) + $base;
 
   return $items;
 }
 
-
 /**
  * Menu Callback Form.
  */
@@ -532,92 +546,6 @@ function configuration_ui_import_form($form, &$form_state) {
 }
 
 /**
- * Menu Callback Form.
- */
-function configuration_ui_export_form($form, &$form_state) {
-  $component_exists = FALSE;
-
-  $form['packages'] = array('#type' => 'vertical_tabs');
-  $form['#attached']['css'] = array(
-    drupal_get_path('module', 'configuration_ui') . '/theme/configuration.css'
-  );
-  $form['#attached']['js'] = array(
-    drupal_get_path('module', 'configuration_ui') . '/js/configuration_ui.js'
-  );
-  $all = ConfigurationManagement::allConfigurations();
-
-  foreach ($all as $component => $list) {
-    $options = array();
-    foreach ($list as $identifier => $info) {
-      $id = $component . '.' . $identifier;
-      $options[$id] = array(
-        check_plain($info['name']),
-        ($info['hash']) ? t('Tracked') : t('Not tracked'),
-        l(t('View info'), 'admin/config/system/configuration/view/' . $id)
-      );
-    }
-
-    if (!empty($options)) {
-      $component_exists = TRUE;
-      $handler = ConfigurationManagement::getConfigurationHandler($component);
-      $form[$component] = array(
-        '#type' => 'fieldset',
-        '#group' => 'packages',
-        '#title' => check_plain($handler::getComponentHumanName($component)),
-        '#description' => t('Available configurations for: @component', array('@component' => $handler::getComponentHumanName($component, TRUE))),
-        '#collapsible' => TRUE,
-        '#collapsed' => TRUE,
-        '#tree' => TRUE,
-        '#attached' => array(
-          'js' => array(
-            'vertical-tabs' => drupal_get_path('module', 'configuration_ui') . '/theme/vertical-tabs.js',
-          ),
-        ),
-        '#attributes' => array('class' => array('configuration')),
-      );
-      $form[$component]['tracked'] = array(
-        '#type' => 'tableselect',
-        '#header' => array(t('Configuration'), t('Tracking') , t('Operations')),
-        '#options' => $options,
-      );
-      $form['dependencies_option'] = array(
-        '#type' => 'fieldset',
-        '#title' => t('Dependencies and Optionals'),
-        '#description' => t('Choose if you want to process dependent and optional components.'),
-        '#collapsible' => TRUE,
-        '#collapsed' => FALSE,
-      );
-      $form['dependencies_option']['include_dependencies'] = array(
-        '#type' => 'checkbox',
-        '#title' => t('Process component dependencies.'),
-        '#default_value' => TRUE,
-      );
-      $form['dependencies_option']['include_optionals'] = array(
-        '#type' => 'checkbox',
-        '#title' => t('Process component optionals.'),
-        '#default_value' => TRUE,
-      );
-    }
-  }
-  $form['buttons'] = array('#theme' => 'configuration_ui_form_buttons', '#tree' => FALSE);
-  $form['buttons']['submit'] = array(
-    '#type' => 'submit',
-    '#value' => t('Export to Tar File'),
-    '#submit' => array('configuration_ui_export_to_tar_file_form_submit'),
-  );
-  if (!$component_exists) {
-    $form['no_configs'] = array(
-      '#markup' => t('No Configurations were found. Please use the
-      !export_link page to begin tracking new Configurations.',
-          array('!export_link' => l(t('Not Tracking'), 'admin/config/system/configuration/notracking'))),
-    );
-    unset($form['buttons']);
-  }
-  $form['#validate'][] = 'configuration_ui_tracking_form_validate';
-  return $form;
-}
-
-/**
  * Submit handler for export to a tar file.
  */
 function configuration_ui_export_to_tar_file_form_submit($form, &$form_state) {
@@ -719,6 +647,22 @@ function configuration_ui_settings_form($form, &$form_state) {
     '#default_value' => variable_get('configuration_remote_server', -1),
   );
 
+  $form['configuration_sets'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Configuration Sets'),
+    '#collapsible' => TRUE,
+    '#collapsed' => FALSE,
+    '#description' => t('You can use configurations sets to organize your tracked configurations into folders.'),
+  );
+
+  $form['configuration_sets']['configuration_sets'] = array(
+    '#type' => 'textarea',
+    '#title' => t('List of sets'),
+    '#description' => t('One set per line, no spaces allowed. Only alpha-numeric and underscores allowed.'),
+    '#size' => 6,
+    '#default_value' => variable_get('configuration_sets', ''),
+  );
+
   $form['#validate'][] = 'configuration_ui_validate_settings';
   return system_settings_form($form);
 }
@@ -739,6 +683,18 @@ function configuration_ui_validate_settings($form, &$form_state) {
   }
 }
 
+/**
+ * Get a list of components to be processed.
+ */
+function configuration_ui_get_form_components($form, &$form_state) {
+  $component_list = array();
+  foreach (array_filter($form_state['values']['items']) as $component) {
+    $component_list[] = $component;
+  }
+  return $component_list;
+}
+
+
 function configuration_sync_configurations_submit($form, &$form_state) {
   $tracking_file = ConfigurationManagement::readTrackingFile();
   $to_track = array_keys($tracking_file['tracked']);
diff --git a/ui/configuration_ui.module b/ui/configuration_ui.module
index 7cd8807..5a73e0c 100644
--- a/ui/configuration_ui.module
+++ b/ui/configuration_ui.module
@@ -139,20 +139,3 @@ function configuration_ui_menu() {
 
   return $items;
 }
-
-/**
- * Get a list of components to be processed.
- */
-function configuration_ui_get_form_components($form, &$form_state) {
-  $component_list = array();
-  foreach ($form_state['values'] as $component) {
-    if (is_array($component) && isset($component['tracked'])) {
-      foreach ($component['tracked'] as $key => $value) {
-        if ($key === $value) {
-          $component_list[] = $key;
-        }
-      }
-    }
-  }
-  return $component_list;
-}
diff --git a/ui/theme/theme.inc b/ui/theme/theme.inc
index 8d2cc27..6df091b 100644
--- a/ui/theme/theme.inc
+++ b/ui/theme/theme.inc
@@ -12,3 +12,32 @@ function theme_configuration_ui_form_buttons(&$vars) {
   $output = drupal_render_children($vars['element']);
   return !empty($output) ? "<div class='buttons clear-block'>{$output}</div>" : '';
 }
+
+
+function theme_configuration_table($form) {
+  $element = $form['form'];
+  $rows = array();
+  $header = $element['#header'];
+
+  // Generate a table row for each selectable item in #options.
+  foreach (element_children($element['items']) as $key) {
+
+    $row = array();
+
+    $row['items'] = drupal_render($element['items'][$key]);
+    foreach (array_keys($header) as $item) {
+      $row[$item] = drupal_render($element[$item][$key]);
+    }
+
+    $rows[] = $row;
+  }
+
+  // Add an empty header or a "Select all" checkbox to provide room for the
+  // checkboxes/radios in the first table column.
+
+  // Add a "Select all" checkbox.
+  drupal_add_js('misc/tableselect.js');
+  array_unshift($header, array('class' => array('select-all')));
+
+  return theme('table', array('header' => $header, 'rows' => $rows));
+}
