------------------------------------------------------------------------------
diff --git skinr.module skinr.module
index d23282f..0baba4e 100644
--- skinr.module
+++ skinr.module
@@ -48,7 +48,7 @@ function skinr_preprocess(&$variables, $hook) {
       $preprocess_settings = $settings['preprocess'][$original_hook];
       $sids = skinr_handler('preprocess_index_handler', 'preprocess', $preprocess_settings['index_handler'], $variables);
 
-      if ($extracted = skinr_skin_extract($module, $sids, $settings, $current_theme)) {
+      if ($extracted = skinr_skin_extract($module, $sids, $current_theme)) {
         foreach ($extracted['css'] as $file) {
           if ($file['enabled']) {
             _skinr_add_file($file['path'], 'css', $file['media']);
@@ -76,7 +76,7 @@ function skinr_preprocess(&$variables, $hook) {
   }
 }
 
-function skinr_skin_extract($module, $sids, $settings, $theme = NULL) {
+function skinr_skin_extract($module, $sids, $theme = NULL) {
   if (empty($sids)) {
     return FALSE;
   }
@@ -103,10 +103,6 @@ function skinr_skin_extract($module, $sids, $settings, $theme = NULL) {
     }
   }
 
-  // Allow other modules to alter the skinr skins array.
-  // @todo Fix this to work with skinr ui.
-  drupal_alter('skinr_skins', $skins, $module, $sids, $settings);
-
   $extracted['css'] = skinr_skin_get_files($skins, 'css', $theme);
   $extracted['js'] = skinr_skin_get_files($skins, 'js', $theme);
 
@@ -747,47 +743,45 @@ function _skinr_add_path_to_files($files, $path, $type) {
  * @return
  *    An array of skinsets.
  */
-function skinr_skinsets() {
-  $skinsets = &drupal_static(__FUNCTION__, array());
-
-  if (!empty($skinsets)) {
-    $result = db_query("SELECT * FROM {skinr_skinsets}");
-    foreach ($result as $skinset) {
-      if (file_exists($skinset->filename)) {
-        $skinset->info = unserialize($skinset->info);
-        $skinsets[$skinset->name] = $skinset;
-      }
-    }
-
-    $themes = list_themes();
-    $default_status = array();
-    foreach ($themes as $theme) {
-      $default_status[$theme->name] = $theme->name;
-    }
-
-    foreach ($skinsets as $key => $skinset) {
-      if (isset($themes[$key])) {
-        $skinset->type = 'theme';
-        $skinset->status = !empty($theme->status) ? 1 : 0;
-      }
-      else {
-        $skinset->type = 'skinset';
-      }
-
-      // @todo Allow skins to inherit from other skins.
+function skinr_skins_load() {
+  $skins = &drupal_static(__FUNCTION__);
+
+  if (!isset($skinsets)) {
+    $skins = array();
+    
+    // Load skins from hook_skinr_skins().
+    
+    // Do any programatic additions to the skins array.
+    
+    // Allow modules to alter skins through hook_skinr_skins_alter().
+    
+    // Prepend module|theme paths for to included css, js, and screenshot
+    // file names.
+  }
+
+  return $skins;
+}
 
-      $additional = _skinr_skinset($skinset);
-      $skinset->options = $additional['options'];
-      $skinset->skins = $additional['skins'];
+/**
+ * Load all skinr groups.
+ *
+ * @return
+ *    An array of groups.
+ */
+function skinr_groups_load() {
+  $groups = &drupal_static(__FUNCTION__);
 
-      $statuses = skinr_skinset_statuses($skinset->name);
-      foreach ($skinset->skins as $skin_name => $skin) {
-        $skinset->skins[$skin_name]['status'] = !empty($statuses[$skin_name]) ? $statuses[$skin_name] : $default_status;
-      }
-    }
+  if (!isset($groups)) {
+    $groups = array();
+    
+    // Load skins from hook_skinr_skins().
+    
+    // Do any programatic additions to the groups array.
+    
+    // Allow modules to alter skins through hook_skinr_skins_alter().
   }
 
-  return $skinsets;
+  return $groups;
 }
 
 /**
@@ -826,7 +820,8 @@ function skinr_skin_data() {
   $cache = &drupal_static(__FUNCTION__);
 
   if (is_null($cache)) {
-    $skinsets = skinr_skinsets();
+    $skinsets = skinr_skins_load();
+    $groups = skinr_groups_load();
 
     // Need to merge all skins skinsets into a single list of skins.
     // Also merge in the groups information.
@@ -878,10 +873,7 @@ function skinr_fetch_config() {
 
   if (is_null($cache)) {
     $cache = module_invoke_all('skinr_config');
-    foreach (module_implements('skinr_config_alter') as $module) {
-      $function = $module . '_skinr_config_alter';
-      $function($cache);
-    }
+    drupal_alter('skinr_config', $cache);
   }
 
   return $cache;
diff --git skinr_ui.admin.inc skinr_ui.admin.inc
index 9d7b676..bf3853e 100644
--- skinr_ui.admin.inc
+++ skinr_ui.admin.inc
@@ -613,7 +613,7 @@ function skinr_ui_sort_by_info_name($a, $b) {
 function skinr_ui_admin_skinsets_submit($form, &$form_state) {
   // Store list of previously enabled themes and disable all themes.
   $old_skinset_list = $new_skinset_list = array();
-  foreach (skinr_skinsets() as $skinset) {
+  foreach (skinr_skins_load() as $skinset) {
     if ($skinset->status) {
       $old_skinset_list[] = $skinset->name;
     }
@@ -730,7 +730,7 @@ function theme_skinr_ui_admin_skinsets_incompatible($variables) {
 function skinr_ui_admin_skinsets_settings($form, $form_state, $skinset_name) {
   $form = array();
 
-  $skinsets = skinr_skinsets();
+  $skinsets = skinr_skins_load();
   if (!empty($skinsets[$skinset_name])) {
     $skinset = $skinsets[$skinset_name];
 
diff --git skinr_ui.module skinr_ui.module
index 1f1afb5..189b7e4 100644
--- skinr_ui.module
+++ skinr_ui.module
@@ -63,13 +63,13 @@ function skinr_ui_menu() {
   // drupal_uninstall_modules() invokes hook_menu() in disabled modules and does
   // not respect module dependencies. Therefore, uninstalling both Skinr UI and
   // Skinr at the same time is leading to a database error, since
-  // skinr_skinsets() tries to load data from tables that have been deleted
+  // skinr_skins_load() tries to load data from tables that have been deleted
   // already.
   // @see http://drupal.org/node/151452
   // @see http://drupal.org/node/320303
   $skinsets = array();
   if (in_array('skinr', module_list())) {
-    $skinsets = skinr_skinsets();
+    $skinsets = skinr_skins_load();
   }
   foreach ($skinsets as $skinset) {
     $items['admin/appearance/skinr/skins/settings/' . $skinset->name] = array(
