------------------------------------------------------------------------------
diff --git skinr.module skinr.module
index d23282f..536eca0 100644
--- skinr.module
+++ skinr.module
@@ -27,6 +27,8 @@ function skinr_init() {
 
 /**
  * Implementation of hook_preprocess().
+ *
+ * @todo Account for drupal's caching being enabled and make it work.
  */
 function skinr_preprocess(&$variables, $hook) {
   // Fix for update script.
@@ -36,27 +38,27 @@ function skinr_preprocess(&$variables, $hook) {
 
   $skinr_config = skinr_fetch_config();
   $current_theme = skinr_current_theme();
-  $theme_registry = theme_get_registry();
 
   $original_hook = $hook;
+  $theme_registry = theme_get_registry();
   if (isset($theme_registry[$hook]['original hook'])) {
     $original_hook = $theme_registry[$hook]['original hook'];
   }
 
-  foreach ($skinr_config as $module => $settings) {
-    if (!empty($settings['preprocess'][$original_hook])) {
-      $preprocess_settings = $settings['preprocess'][$original_hook];
+  foreach ($skinr_config as $module => $module_settings) {
+    if (!empty($module_settings['preprocess'][$original_hook])) {
+      $preprocess_settings = $module_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']);
+            drupal_add_css($file['path'], $file['file_options']);
           }
         }
         foreach ($extracted['js'] as $file) {
           if ($file['enabled']) {
-            _skinr_add_file($file['path'], 'js');
+            drupal_add_js($file['path'], $file['file_options']);
           }
         }
         if (!empty($extracted['template'])) {
@@ -76,7 +78,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 +105,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);
 
@@ -122,10 +120,10 @@ function skinr_skin_extract($module, $sids, $settings, $theme = NULL) {
 }
 
 /**
- * Helper function to fetch all css or js files from an array of skins.
+ * Helper function to fetch all css or js files for an array of skins.
  *
- * @param $skins
- *   A an array of available skins.
+ * @param $settings
+ *   A an array of skinr settings.
  * @param $type
  *   Either 'css' or 'js', depending on which files you wish to retrieve from
  *   these skins.
@@ -135,103 +133,80 @@ function skinr_skin_extract($module, $sids, $settings, $theme = NULL) {
  * @return
  *   An array of file data.
  */
-function skinr_skin_get_files($skins, $type, $theme = NULL) {
+function skinr_skin_get_files($settings, $type, $theme = NULL) {
   if (empty($theme)) {
     $theme = skinr_current_theme();
   }
+  if ($type == 'css') {
+    $element = '#stylesheets';
+  }
+  elseif ($type == 'js') {
+    $element = '#scripts';
+  }
+  else {
+    return FALSE;
+  }
 
-  $info = skinr_skin_data();
+  $skins = skinr_skins_load();
   $files = array();
-
-  if ($type == 'css') {
-    foreach ($skins as $skin => $classes) {
-      // Add custom CSS files.
-      if (isset($info[$theme]->skins[$skin])) {
-        if (!empty($info[$theme]->skins[$skin]['stylesheets'])) {
-          foreach ($info[$theme]->skins[$skin]['stylesheets'] as $media => $stylesheets) {
-            foreach ($stylesheets as $file => $path) {
-              $files[] = array(
-                'file' => $file,
-                'path' => $path,
-                'media' => $media,
-                'enabled' => TRUE,
-                'skin' => $skin,
-                'options' => 0,
-              );
-            }
+  foreach ($settings as $skin_name => $classes) {
+    $skin_name = 'skinr_provided_skin_background_color';
+    // Check if the $skin_name is enabled for this theme.
+    if (!empty($skins[$skin_name]['#status'][$theme])) {
+      // Check if this skin has any stylesheets attached to it.
+      if (!empty($skins[$skin_name][$element])) {
+        foreach ($skins[$skin_name][$element] as $file) {
+          if (is_array($file)) {
+            $data = $file[0];
+            $options = count($file) > 1 ? $file[1] : NULL;
           }
-        }
-        foreach ($info[$theme]->skins[$skin]['options'] as $option_id => $option) {
-          if (!empty($option['stylesheets'])) {
-            foreach ($option['stylesheets'] as $media => $stylesheets) {
-              foreach ($stylesheets as $file => $path) {
-                $enabled = FALSE;
-                if (is_array($classes)) {
-                  if (in_array($option['class'], $classes)) {
-                    $enabled = TRUE;
-                  }
-                }
-                else {
-                  if ($option['class'] == $classes) {
-                    $enabled = TRUE;
-                  }
-                }
-
-                $files[] = array(
-                  'file' => $file,
-                  'path' => $path,
-                  'media' => $media,
-                  'enabled' => $enabled,
-                  'skin' => $skin,
-                  'options' => $option_id,
-                );
-              }
-            }
+          else {
+            $data = $file;
+            $options = NULL;
           }
+          $files[] = array(
+            'file' => basename($data),
+            'path' => $data,
+            'file_options' => $options,
+            'enabled' => TRUE,
+            'skin' => $skin_name,
+            'options' => NULL,
+          );
         }
       }
-    }
-  }
-  elseif ($type == 'js') {
-    foreach ($skins as $skin => $classes) {
-      // Add custom JS files.
-      if (isset($info[$theme]->skins[$skin])) {
-        if (isset($info[$theme]->skins[$skin]['scripts'])) {
-          foreach ($info[$theme]->skins[$skin]['scripts'] as $file => $path) {
+
+      foreach ($skins[$skin_name]['#options'] as $oid => $option) {
+        if (!empty($option[$element])) {
+          foreach ($option[$element] as $file) {
+            $enabled = FALSE;
+            if (is_array($classes)) {
+              if (in_array($option['#class'], $classes)) {
+                $enabled = TRUE;
+              }
+            }
+            elseif ($option['#class'] == $classes) {
+              $enabled = TRUE;
+            }
+
+            if (is_array($file)) {
+              $data = $file[0];
+              $options = count($file) > 1 ? $file[1] : NULL;
+            }
+            else {
+              $data = $file;
+              $options = NULL;
+            }
+
             $files[] = array(
-              'file' => $file,
-              'path' => $path,
-              'enabled' => TRUE,
-              'skin' => $skin,
-              'options' => 0,
+              'file' => basename($data),
+              'path' => $data,
+              'file_options' => $options,
+              'enabled' => $enabled,
+              'skin' => $skin_name,
+              'options' => $oid,
             );
           }
         }
-        foreach ($info[$theme]->skins[$skin]['options'] as $option_id => $option) {
-          if (isset($option['scripts'])) {
-            foreach ($option['scripts'] as $file => $path) {
-              $enabled = FALSE;
-                if (is_array($classes)) {
-                  if (in_array($option['class'], $classes)) {
-                    $enabled = TRUE;
-                  }
-                }
-                else {
-                  if ($option['class'] == $classes) {
-                    $enabled = TRUE;
-                  }
-                }
-
-              $files[] = array(
-                'file' => $file,
-                'path' => $path,
-                'enabled' => $enabled,
-                'skin' => $skin,
-                'options' => $option_id,
-              );
-            }
-          }
-        }
       }
     }
   }
@@ -240,20 +215,6 @@ function skinr_skin_get_files($skins, $type, $theme = NULL) {
 }
 
 /**
- * Helper fuction to add CSS and JS files.
- *
- * The function checks an array of paths for the existence of the file to account for base themes.
- */
-function _skinr_add_file($filename, $type, $media = NULL) {
-  if ($type == 'css') {
-    drupal_add_css($filename, array('weight' => CSS_THEME, 'media' => $media));
-  }
-  else {
-    drupal_add_js($filename, array('weight' => JS_THEME));
-  }
-}
-
-/**
  * Helper function to flatten an array of classes settings.
  */
 function skinr_flatten_skins_array($skins) {
@@ -581,21 +542,6 @@ function skinr_current_theme($exclude_admin_theme = FALSE) {
 }
 
 /**
- * Prepare defaults for skins.
- *
- * @return
- *   An array of default skinset settings.
- */
-function skinr_skins_default() {
-  return array(
-    'description' => '',
-    'screenshot' => 'screenshot.png',
-    'php' => DRUPAL_MINIMUM_PHP,
-    'skinr' => array(),
-  );
-}
-
-/**
  * Prepare defaults for skinr options.
  *
  * @return
@@ -603,107 +549,55 @@ function skinr_skins_default() {
  */
 function skinr_group_default() {
   return array(
-    'title' => '',
-    'description' => '',
-    'collapsible' => TRUE,
-    'collapsed' => FALSE,
-    'weight' => NULL,
+    '#title' => '',
+    '#description' => '',
+    '#admin_title' => '',
+    '#admin_description' => '',
+    '#weight' => NULL,
   );
 }
 
 /**
- * Prepare defaults for skins.
+ * Prepare defaults for a skin.
  *
  * @return
  *   An array of default skins settings.
  */
 function skinr_skin_default() {
   return array(
-    'title' => '',
-    'type' => 'checkboxes',
-    'description' => '',
-    'features' => array('*'),
-    'templates' => array(),
-    'group' => '',
-    'options' => array(),
-    'stylesheets' => array(),
-    'scripts' => array(),
-    'weight' => NULL,
+    '#title' => '',
+    '#description' => '',
+    '#group' => '',
+    '#type' => 'checkboxes',
+    '#weight' => NULL,
+    '#screenshot' => 'screenshot.png',
+    '#features' => array('*'),
+    '#stylesheets' => array(),
+    '#scripts' => array(),
+    '#templates' => array(),
+    '#options' => array(),
+    '#default_status' => 0,
   );
 }
 
 /**
- * Helper function to process a skin or theme .info file.
+ * Prepare the default status for a skin.
+ *
+ * @param $default_status
+ *   The default status for all themes for a skin.
  *
  * @return
- *    A skinset.
+ *   An array of default statuses for every theme.
  */
-function _skinr_skinset($info) {
-  $skinset = array(
-    'options' => array('groups' => array()),
-    'skins' => array(),
-  );
-
-  if (!empty($info->info['skinr'])) {
-    $path_root = dirname($info->filename);
-
-    $skinr_info = (array)$info->info['skinr'];
-
-    // Store skinr options.
-    if (!empty($skinr_info['options'])) {
-      $skinset['options'] = $skinr_info['options'];
-      unset($skinr_info['options']);
-
-      if (!isset($skinset['options']['groups'])) {
-        $skinset['options']['groups'] = array();
-      }
-
-      $defaults = skinr_group_default();
-      foreach ($skinset['options']['groups'] as $id => $group) {
-        $skinset['options']['groups'][$id] = array_merge($defaults, $skinset['options']['groups'][$id]);
-        $skinset['options']['groups'][$id]['collapsible'] = (bool)$skinset['options']['groups'][$id]['collapsible'];
-        $skinset['options']['groups'][$id]['collapsed'] = (bool)$skinset['options']['groups'][$id]['collapsed'];
-        $skinset['options']['groups'][$id]['weight'] = $skinset['options']['groups'][$id]['weight'];
-      }
-    }
-
-    $defaults = skinr_skin_default();
-
-    foreach ($skinr_info as $id => $skin) {
-      if (!is_array($skin)) {
-        continue;
-      }
-      $skinset['skins'][$id] = array(
-        'title' => isset($skin['title']) ? $skin['title'] : $defaults['title'],
-        'type' => isset($skin['type']) ? $skin['type'] : $defaults['type'],
-        'description' => isset($skin['description']) ? $skin['description'] : $defaults['description'],
-        'features' => isset($skin['features']) ? $skin['features'] : $defaults['features'],
-        'templates' => isset($skin['templates']) ? $skin['templates'] : $defaults['templates'],
-        'group' => !empty($skin['group']) && !empty($skinset['options']['groups'][$skin['group']]) ? $skin['group'] : $defaults['group'],
-        'options' => isset($skin['options']) ? $skin['options'] : $defaults['options'],
-        'stylesheets' => isset($skin['stylesheets']) ? $skin['stylesheets'] : $defaults['stylesheets'],
-        'scripts' => isset($skin['scripts']) ? $skin['scripts'] : $defaults['scripts'],
-        'weight' => isset($skin['weight']) ? $skin['weight'] : $defaults['weight'],
-      );
-
-      // Give the stylesheets proper path information.
-      $skinset['skins'][$id]['stylesheets'] = _skinr_add_path_to_files($skinset['skins'][$id]['stylesheets'], $path_root, 'css');
-
-      // Give the scripts proper path information.
-      $skinset['skins'][$id]['scripts'] = _skinr_add_path_to_files($skinset['skins'][$id]['scripts'], $path_root, 'js');
-
-      foreach ($skinset['skins'][$id]['options'] as $oid => $option) {
-        if (isset($option['stylesheets'])) {
-          $skinset['skins'][$id]['options'][$oid]['stylesheets'] = _skinr_add_path_to_files($option['stylesheets'], $path_root, 'css');
-        }
-        if (isset($option['scripts'])) {
-          $skinset['skins'][$id]['options'][$oid]['scripts'] = _skinr_add_path_to_files($option['scripts'], $path_root, 'js');
-        }
-      }
+function skinr_status_default($default_status = 0) {
+  $status = array();
+  foreach (list_themes() as $name => $theme) {
+    if (!$theme->status) {
+      continue;
     }
+    $status[$name] = $default_status;
   }
-
-  return $skinset;
+  return $status;
 }
 
 /**
@@ -711,163 +605,179 @@ function _skinr_skinset($info) {
  *
  * @param $files
  *   A an array of filenames that need the path prepended.
+ *   @todo Adjust docs to account for arrays instead of filenames.
  * @param $path
  *   The path to prepend.
- * @param $type
- *   Either 'css' or 'js', depending on which files you wish to retrieve from
- *   these skins.
  *
  * @return
  *    An array of files with the root path added.
  */
-function _skinr_add_path_to_files($files, $path, $type) {
-  if ($type == 'css') {
-    $pathed_stylesheets = array();
-    foreach ($files as $media => $stylesheets) {
-      foreach ($stylesheets as $stylesheet) {
-        $pathed_stylesheets[$media][$stylesheet] = $path . '/' . $stylesheet;
-      }
+function _skinr_add_path_to_files(&$files, $path) {
+  foreach ($files as $key => $file) {
+    if (is_array($file)) {
+      $files[$key][0] = $path . '/' . $file[0];
     }
-    return $pathed_stylesheets;
-  }
-  elseif ($type == 'js') {
-    $pathed_scripts = array();
-    foreach ($files as $script) {
-      $pathed_scripts[$script] = $path . '/' . $script;
+    else {
+      $files[$key] = $path . '/' . $file;
     }
-    return $pathed_scripts;
   }
-
-  return FALSE;
 }
 
 /**
- * Helper function to process an array of skins.
+ * Parse a skins array as returned from a skins plugin. This function inserts
+ * any missing defaults and updates the screenshot, stylsheet, and script
+ * paths to be relative to drupal's root.
  *
- * @return
- *    An array of skinsets.
+ * @param $skins
+ *   A skins array as returned from a skins plugin.
+ * @param $source
+ *   An array with the following keys:
+ *   - 'type': Available options are 'module' or 'theme'.
+ *   - 'name': The name of the owner module or theme of this plugin.
+ *   - 'plugin': The name of the skins plugin.
+ *   - 'path': This plugin's path.
  */
-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;
+function skinr_parse_skins(&$skins, $source) {
+  foreach ($skins as $name => $skin) {
+    // Merge in defaults.
+    $skins[$name] = array_merge(skinr_skin_default(), $skins[$name]);
+
+    // Merge in default statuses for all themes.
+    $skins[$name]['#status'] = array_merge(skinr_status_default($skin['#default_status']), $skin['#status']);
+
+    // @todo Apply overridden statuses.
+
+    // Merge in source information.
+    $skins[$name]['#source'] = array(
+      '#type' => $source['type'],
+      '#name' => $source['name'],
+      '#plugin' => $source['plugin'],
+    );
+
+    // Prepend module|theme paths for to included css, js, and screenshot
+    // file names.{
+    $skins[$name]['#screenshot'] = $source['path'] . '/' . $skins[$name]['#screenshot'];
+
+    // Process stylesheets and scripts.
+    _skinr_add_path_to_files($skins[$name]['#stylesheets'], $source['path']);
+    _skinr_add_path_to_files($skins[$name]['#scripts'], $source['path']);
+    foreach ($skins[$name]['#options'] as $oid => $option) {
+      if (isset($option['#stylesheets'])) {
+        _skinr_add_path_to_files($skins[$name]['#options'][$oid]['#stylesheets'], $source['path']);
       }
-    }
-
-    $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.
-
-      $additional = _skinr_skinset($skinset);
-      $skinset->options = $additional['options'];
-      $skinset->skins = $additional['skins'];
-
-      $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($option['scripts'])) {
+        _skinr_add_path_to_files($skins[$name]['#options'][$oid]['#scripts'], $source['path']);
       }
     }
+    
+    // @todo Should we add 'group' => CSS_THEME and 'group' => JS_THEME to
+    //       stylesheet and script options?
   }
-
-  return $skinsets;
 }
 
 /**
- * Return an array of statuses of each skin in a skinset for each theme.
- *
- * @param $skinset_name
- *   The name of the skinset of which to load the statuses.
+ * Helper function to process an array of skins.
  *
  * @return
- *   Array of statuses for individual skins in a skinset.
+ *    An array of skinsets.
  */
-function skinr_skinset_statuses($skinset_name) {
-  $statuses = &drupal_static(__FUNCTION__, array());
+function skinr_skins_load() {
+  $skins = &drupal_static(__FUNCTION__);
+
+  if (!isset($skinsets)) {
+    // Set skins to an array to avoid errors down the line if no skins
+    // are found.
+    $skins = array();
+
+    // @todo Load the include files and get an array of hooks; we need to
+    //       know which module and which plugin comprises the hook.
+    include_once(drupal_get_path('module', 'skinr') .'/plugins/skins/provided_skin/provided_skin.inc');
+    $hooks = array(
+      'skinr_provided_skin' => array(
+        'type' => 'module',
+        'name' => 'skinr',
+        'plugin' => 'provided_skin',
+        'path' => drupal_get_path('module', 'skinr') .'/plugins/skins/provided_skin',
+      ),
+    );
+
+    // Load skins from hook_skinr_skins().
+    foreach ($hooks as $hook => $source) {
+      $function = $hook . '_skinr_skins';
+      $result = $function();
+      if (isset($result)) {
+        if (!is_array($result)) {
+          $result = array($result);
+        }
 
-  if (empty($statuses[$skinset_name])) {
-    $statuses[$skinset_name] = array();
+        // Make any programatic additions to the skins array.
+        skinr_parse_skins($result, $source);
 
-    $result = db_query("SELECT * FROM {skinr_skins} WHERE name = :name", array(':name' => $skinset_name));
-    foreach ($result as $skinr_skin) {
-      $statuses[$skinset_name][$skinr_skin->skin] = unserialize($skinr_skin->status);
+        $skins = array_merge_recursive($skins, $result);
+      }
     }
+
+    // Allow modules to alter skins through hook_skinr_skins_alter().
+    drupal_alter('skinr_skins', $skins);
   }
 
-  return $statuses[$skinset_name];
+  return $skins;
 }
 
 /**
- * Themes are allowed to set Skinr skins in their .info files.
+ * Load all skinr groups.
  *
  * @return
- *    An array of skinsets keyed by themename.
- *
- * @todo Use DB caching. No need to keep processing things every page load.
+ *    An array of groups.
  */
-function skinr_skin_data() {
-  $cache = &drupal_static(__FUNCTION__);
+function skinr_groups_load() {
+  $groups = &drupal_static(__FUNCTION__);
 
-  if (is_null($cache)) {
-    $skinsets = skinr_skinsets();
-
-    // Need to merge all skins skinsets into a single list of skins.
-    // Also merge in the groups information.
-    $additional_skins = array();
+  if (!isset($groups)) {
+    // Set groups to an array to avoid errors down the line if no groups
+    // are found.
     $groups = array();
-    foreach ($skinsets as $key => $skinset) {
-      if ($skinset->type == 'skinset') {
-        if (!empty($skinset->skins) && $skinset->status == 1) {
-          $additional_skins += $skinset->skins;
-        }
-        if (!empty($skinset->options['groups'])) {
-          $groups += $skinset->options['groups'];
-        }
-      }
-    }
-
-    // Merge the additional skins into each theme, even if that theme has no
-    // skinr data.
-    $themes = list_themes();
-    foreach ($themes as $theme) {
-      if ($theme->status != 1) {
-        continue;
-      }
 
-      if (!empty($skinsets[$theme->name])) {
-        $cache[$theme->name] = $skinsets[$theme->name];
-        $cache[$theme->name]->skins += $additional_skins;
-        $cache[$theme->name]->options['groups'] += $groups;
+    // @todo Load the include files and get an array of hooks; we need to
+    //       know which module and which plugin comprises the hook.
+    $hooks = array(
+      'skinr_provided_skin' => array(
+        'type' => 'module',
+        'name' => 'skinr',
+        'plugin' => 'provided_skin',
+      ),
+    );
+
+    // Load skins from hook_skinr_groups().
+    foreach ($hooks as $hook => $source) {
+      $function = $hook . '_skinr_groups';
+      $result = $function();
+      if (isset($result) && is_array($result)) {
+        $groups = array_merge_recursive($groups, $result);
       }
-      else {
-        $cache[$theme->name] = new stdClass();
-        $cache[$theme->name]->name = $theme->name;
-        $cache[$theme->name]->status = 1;
-        $cache[$theme->name]->type = 'theme';
-        $cache[$theme->name]->skins = $additional_skins;
-        $cache[$theme->name]->options = array('groups' => $groups);
+      else if (isset($result)) {
+        $groups[] = $result;
       }
     }
+
+    // Make any programatic additions to the groups array.
+    foreach ($groups as $name => $group) {
+      // Merge in defaults.
+      $groups[$name] = array_merge(skinr_group_default(), $groups[$name]);
+    }
+
+    // Allow modules to alter groups through hook_skinr_groups_alter().
+    drupal_alter('skinr_groups', $skins);
   }
 
-  return $cache;
+  return $groups;
+}
+
+/**
+ * @todo Remove references to this skin from skinr_ui. Use skinr_skins_load() and skinr_groups_load() instead.
+ */
+function skinr_skin_data() {
+  return array();
 }
 
 /**
@@ -878,10 +788,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(
