diff --git a/lib/Drupal/configuration/Config/Configuration.php b/lib/Drupal/configuration/Config/Configuration.php
index ee8a43b..9735da4 100644
--- a/lib/Drupal/configuration/Config/Configuration.php
+++ b/lib/Drupal/configuration/Config/Configuration.php
@@ -578,12 +578,32 @@ class Configuration {
         ->setKeysToExport($this->getKeysToExport())
         ->setDependencies(drupal_map_assoc(array_keys($this->getDependencies())))
         ->setOptionalConfigurations(drupal_map_assoc(array_keys($this->getOptionalConfigurations())))
-        ->setModules(array_keys($this->getRequiredModules()))
-        ->save();
+        ->setModules(array_keys($this->getRequiredModules()));
     $this->storage->getDataToSave();
     $this->setHash($this->storage->getHash());
   }
 
+  public function getStatus($human_name = TRUE) {
+    $staging_hash = db_select('configuration_staging', 'cs')
+                      ->fields('cs', array('hash'))
+                      ->condition('component', static::$component)
+                      ->condition('identifier', $this->getIdentifier())
+                      ->execute()
+                      ->fetchField();
+    if (empty($staging_hash)) {
+      return $human_name ? t('ActiveStore only') : CONFIGURATION_ACTIVESTORE_ONLY;
+    }
+    else {
+      if ($this->getHash() == $staging_hash) {
+        return $human_name ? t('In Sync') : CONFIGURATION_IN_SYNC;
+      }
+      else {
+        return $human_name ? t('Overriden') : CONFIGURATION_ACTIVESTORE_OVERRIDEN;
+      }
+    }
+
+  }
+
   /**
    * Provides the differences between two configurations of the same component.
    */
diff --git a/ui/configuration_ui.info b/ui/configuration_ui.info
new file mode 100644
index 0000000..32a8182
--- /dev/null
+++ b/ui/configuration_ui.info
@@ -0,0 +1,7 @@
+name = "Configuration Management UI"
+description = "Provides an UI to manage the Configuration Management module."
+core = 7.x
+php = 5.3
+package = "Configuration"
+configure = admin/config/system/configuration
+dependencies[] = configuration
diff --git a/ui/configuration_ui.module b/ui/configuration_ui.module
new file mode 100644
index 0000000..db52405
--- /dev/null
+++ b/ui/configuration_ui.module
@@ -0,0 +1,120 @@
+<?php
+
+use Drupal\configuration\Config\Configuration;
+use Drupal\configuration\Utils\ConfigIteratorSettings;
+
+/**
+ * Implements hook_permission().
+ */
+function configuration_ui_permission() {
+  return array(
+    'administer configuration management' =>  array(
+      'title' => t('Administer Configuration Management'),
+      'description' => t('Allow to export, import, start and stop tracking configurations.'),
+    ),
+  );
+}
+
+/**
+ * Implements hook_menu().
+ */
+function configuration_ui_menu() {
+  $items['admin/config/configuration'] = array(
+    'title' => 'Configuration Management',
+    'description' => 'Allow to export, import, start and stop tracking configurations.',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('configuration_ui_tracking_form'),
+    'access arguments' => array('administer configuration management'),
+  );
+
+  $items['admin/config/configuration/stop_tracking/%'] = array(
+    'title' => 'Configuration Management',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('configuration_ui_config_info'),
+    'access arguments' => array('administer configuration management'),
+  );
+
+  $items['admin/config/configuration/view/%'] = array(
+    'title' => 'Configuration Management',
+    'page callback' => 'configuration_ui_config_info',
+    'page arguments' => array(4),
+    'access arguments' => array('administer configuration management'),
+  );
+
+  return $items;
+}
+
+
+function configuration_ui_tracking_form($form, &$form_state) {
+  $handlers = configuration_configuration_handlers();
+
+  $form['packages'] = array('#type' => 'vertical_tabs');
+  $form['#attached']['css'] = array(
+    drupal_get_path('module', 'configuration_ui') . '/theme/configuration.css'
+  );
+
+  foreach ($handlers as $component => $handler) {
+    $form[$component] = array(
+      '#type' => 'fieldset',
+      '#group' => 'packages',
+      '#title' => check_plain($handler['name']),
+      '#description' => t('Currenly tracked configurations for: @component', array('@component' => $handler['name'])),
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+      '#tree' => TRUE,
+      '#attached' => array(
+        'js' => array(
+          'vertical-tabs' => drupal_get_path('module', 'configuration_ui') . '/theme/vertical-tabs.js',
+        ),
+      ),
+    );
+
+    $tracked = db_query("SELECT identifier FROM {configuration_staging} WHERE component = :component", array(':component' => $component))->fetchAll();
+    $options = array();
+    foreach ($tracked as $identifier) {
+      $id = $component . '.' . $identifier->identifier;
+      $options[] = array(
+        $identifier->identifier,
+        l('Stop Tracking', 'admin/config/configuration/stop_tracking/' . $id) . ' | ' . l('View info', 'admin/config/configuration/view/' . $id)
+      );
+    }
+
+    if (!empty($options)) {
+      $form[$component]['tracked'] = array(
+        '#type' => 'tableselect',
+        '#header' => array('Configuration', 'Operations'),
+        '#options' => $options,
+      );
+    }
+    else {
+      $form[$component]['tracked'] = array(
+        '#markup' => t('You are not tracking configurations for this component.')
+      );
+    }
+  }
+  return $form;
+}
+
+function configuration_ui_config_info($config_id) {
+  list($component_name, $identifier) = explode('.', $config_id, 2);
+  $handler = Configuration::getConfigurationHandler($component_name);
+  $config = new $handler($identifier);
+
+  $config->loadFromActiveStore();
+
+  $page = '';
+
+  $page .= '<h2>' . t('Configuration for: @config', array('@config' => $config->getUniqueID())) . '</h2>';
+  $page .= '<p>' . t('Hash: @hash', array('@hash' => $config->getHash())) . '</p>';
+  $page .= '<p>' . t('Status: <strong>@status</strong>', array('@status' => $config->getStatus())) . '</p>';
+
+  $page .= '<p>' . t('Dependencies:') . '</p>';
+  $dependencies = array('items' => array_keys($config->getDependencies()));
+  $page .= theme('item_list', $dependencies);
+
+  $page .= '<p>' . t('Optional Configurations:') . '</p>';
+  $optionals = array('items' => array_keys($config->getOptionalConfigurations()));
+  $page .= theme('item_list', $optionals);
+
+  return $page;
+}
diff --git a/ui/theme/configuration.css b/ui/theme/configuration.css
new file mode 100644
index 0000000..686415a
--- /dev/null
+++ b/ui/theme/configuration.css
@@ -0,0 +1,20 @@
+form div.buttons {
+  text-align:center;
+}
+.fieldset-description {
+  font-size:16px;
+  padding:10px;
+}
+tr.config-delete {
+  background-color:#efefef !important;
+}
+tr.config-dependent {
+  background-color:#DCF5F1 !important;
+}
+tr.config-dependent.even {
+  background-color:#F2FAF9 !important;
+}
+tr.config-delete td {
+  color:#aaa;
+  font-style:italic;
+}
\ No newline at end of file
diff --git a/ui/theme/theme.inc b/ui/theme/theme.inc
new file mode 100644
index 0000000..4b685e6
--- /dev/null
+++ b/ui/theme/theme.inc
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * Theme function for displaying form buttons
+ */
+function theme_configuration_form_buttons(&$vars) {
+  $output = drupal_render_children($vars['element']);
+  return !empty($output) ? "<div class='buttons clear-block'>{$output}</div>" : '';
+}
\ No newline at end of file
diff --git a/ui/theme/vertical-tabs.js b/ui/theme/vertical-tabs.js
new file mode 100644
index 0000000..8f4ed60
--- /dev/null
+++ b/ui/theme/vertical-tabs.js
@@ -0,0 +1,40 @@
+(function ($) {
+  
+Drupal.behaviors.configurationTabs = {
+  attach: function (context) {
+    // Adding the summary to the vertical tabs
+    $('fieldset', context).each(function (context) {
+      var overridden = '';
+      
+      // Look for overrides in the fieldset
+      if ($(this).hasClass('overridden')) {
+        overridden = ' :: <em>NEEDS ATTENTION</em>';
+      }
+      
+      var summary = this.id;
+      $(this).drupalSetSummary(function (context) {
+        return summary.substr(5) + overridden;
+      });
+    });
+  }
+};
+
+Drupal.theme.verticalTab = function (settings) {
+  var overridden = '';
+  var tab = {};
+  
+  // If the original fieldset has overidden applied, use it here too.
+  if (settings.fieldset.hasClass('overridden')) {
+    var overridden = 'overridden';
+  }
+  
+  tab.item = $('<li class="vertical-tab-button '+ overridden +'" tabindex="-1"></li>')
+    .append(tab.link = $('<a href="#"></a>')
+      .append(tab.title = $('<strong></strong>').text(settings.title))
+      .append(tab.summary = $('<span class="summary"></span>')
+    )
+  );
+  return tab;
+};
+
+})(jQuery);
\ No newline at end of file
