diff --git a/skinr_panels/skinr_panels.module b/skinr_panels/skinr_panels.module
index 72eb3bc7b4c7ad639c728bb194498b97fbf3f171..8b70a72a2cd5288b3d8d13164707c0427c1cdfc0 100644
--- a/skinr_panels/skinr_panels.module
+++ b/skinr_panels/skinr_panels.module
@@ -62,7 +62,7 @@ function skinr_panels_preprocess(&$variables, $hook) {
 
     foreach ($elements as $element) {
       $contextual_links['skinr-' .  $module . '-' . $counter++] = array(
-        'admin/appearance/skinr/edit/nojs', array($module, $element),
+        'admin/structure/skinr/edit/nojs', array($module, $element),
       );
     }
     if (!empty($contextual_links)) {
@@ -79,7 +79,12 @@ function skinr_panels_preprocess(&$variables, $hook) {
       $element = contextual_pre_render_links($element);
 
       // Add in the Skinr links.
-      $variables['content']->admin_links += $element['#links'];
+      if (isset($variables['content']->admin_links) && is_array($variables['content']->admin_links)) {
+        $variables['content']->admin_links += $element['#links'];
+      }
+      else {
+        $variables['content']->admin_links = $element['#links'];
+      }
     }
   }
 }
diff --git a/skinr_panels/tests/skinr_panels.test b/skinr_panels/tests/skinr_panels.test
index fc213aea9202d2dfdbff143bb1d2c51b99ab94c7..7923cbb5f780d1809fbd8434054cc91c2ae2d824 100644
--- a/skinr_panels/tests/skinr_panels.test
+++ b/skinr_panels/tests/skinr_panels.test
@@ -52,7 +52,7 @@ class SkinrPanelsTestCase extends DrupalWebTestCase {
     $this->drupalGet('skinr-panels-test-panel');
 
     // Make sure our contextual link appears on the page.
-    $this->assertLinkByHref('admin/appearance/skinr/edit/nojs/panels/pane__1__1/configure', 0, "Contexual link to edit pane's skin configuration on panel page (stored in code) was found.");
+    $this->assertLinkByHref('admin/structure/skinr/edit/nojs/panels/pane__1__1/configure', 0, "Contexual link to edit pane's skin configuration on panel page (stored in code) was found.");
 
 
     $this->drupalGet('admin/structure/mini-panels');
@@ -78,7 +78,7 @@ class SkinrPanelsTestCase extends DrupalWebTestCase {
 
     // Make sure our contextual link appears on the page.
     // @todo Is there a better way to determine did and pid used for this panel?
-    $this->assertLinkByHref('admin/appearance/skinr/edit/nojs/panels/pane__2__2/configure', 0, 'Contexual link to edit pane\'s skin configuration on mini panel (stored in code) was found.');
+    $this->assertLinkByHref('admin/structure/skinr/edit/nojs/panels/pane__2__2/configure', 0, 'Contexual link to edit pane\'s skin configuration on mini panel (stored in code) was found.');
   }
 
   /**
@@ -107,7 +107,7 @@ class SkinrPanelsTestCase extends DrupalWebTestCase {
 
     // Make sure our contextual link appears on the page.
     // @todo Is there a better way to determine did and pid used for this panel?
-    $this->assertLinkByHref('admin/appearance/skinr/edit/nojs/panels/pane__1__1/configure', 0, 'Contexual link to edit pane\'s skin configuration on panel node was found.');
+    $this->assertLinkByHref('admin/structure/skinr/edit/nojs/panels/pane__1__1/configure', 0, 'Contexual link to edit pane\'s skin configuration on panel node was found.');
 
 
     // Test panels pages.
@@ -120,7 +120,7 @@ class SkinrPanelsTestCase extends DrupalWebTestCase {
     $this->drupalGet('skinr-panels-test-panel');
 
     // Make sure our contextual link appears on the page.
-    $this->assertLinkByHref('admin/appearance/skinr/edit/nojs/panels/pane__2__2/configure', 0, "Contexual link to edit pane's skin configuration on panel page (stored in DB) was found.");
+    $this->assertLinkByHref('admin/structure/skinr/edit/nojs/panels/pane__2__2/configure', 0, "Contexual link to edit pane's skin configuration on panel page (stored in DB) was found.");
 
 
     // Test mini panels.
@@ -148,6 +148,6 @@ class SkinrPanelsTestCase extends DrupalWebTestCase {
 
     // Make sure our contextual link appears on the page.
     // @todo Is there a better way to determine did and pid used for this panel?
-    $this->assertLinkByHref('admin/appearance/skinr/edit/nojs/panels/pane__3__3/configure', 0, 'Contexual link to edit pane\'s skin configuration on mini panel (stored in DB) was found.');
+    $this->assertLinkByHref('admin/structure/skinr/edit/nojs/panels/pane__3__3/configure', 0, 'Contexual link to edit pane\'s skin configuration on mini panel (stored in DB) was found.');
   }
 }
diff --git a/skinr_ui.admin.inc b/skinr_ui.admin.inc
index 3b9595dd84daff42e5fc8c29ec35e97a59522fbe..5fbe937683b54471566b198d7468c03044e02390 100644
--- a/skinr_ui.admin.inc
+++ b/skinr_ui.admin.inc
@@ -10,7 +10,7 @@
  */
 function skinr_ui_skin_status_set($skin, $status) {
   // We require a token in the query string to prevent CSFR attacks.
-  if (!isset($_GET['token']) || !drupal_valid_token($_GET['token'], 'admin/appearance/skinr/' . ($status ? 'enable' : 'disable') . '/' . $skin->sid)) {
+  if (!isset($_GET['token']) || !drupal_valid_token($_GET['token'], 'admin/structure/skinr/skin/' . $skin->sid . '/' . ($status ? 'enable' : 'disable'))) {
     return MENU_ACCESS_DENIED;
   }
 
@@ -30,7 +30,7 @@ function skinr_ui_skin_status_set($skin, $status) {
   }
 
   // Return to the skin configuration overview page.
-  drupal_goto('admin/appearance/skinr');
+  drupal_goto('admin/structure/skinr');
 }
 
 /**
@@ -414,19 +414,19 @@ function skinr_ui_admin_skins() {
     $operations = array(
       'edit' => array(
         'title' => t('edit'),
-        'href' => 'admin/appearance/skinr/edit/nojs/' . $skin->module . '/' . $skin->element,
+        'href' => 'admin/structure/skinr/edit/nojs/' . $skin->module . '/' . $skin->element,
         'query' => $destination,
       ),
       'status' => array(
         'title' => $skin->status ? t('disable') : t('enable'),
-        'href' => 'admin/appearance/skinr/' . ($skin->status ? 'disable' : 'enable') . '/' . $skin->sid,
+        'href' => 'admin/structure/skinr/skin/' . $skin->sid . '/' . ($skin->status ? 'disable' : 'enable'),
         'query' => $destination + array(
-          'token' => drupal_get_token('admin/appearance/skinr/' . ($skin->status ? 'disable' : 'enable') . '/' . $skin->sid),
+          'token' => drupal_get_token('admin/structure/skinr/skin/' . $skin->sid . '/' . ($skin->status ? 'disable' : 'enable')),
         ),
       ),
       'delete' => array(
         'title' => t('delete'),
-        'href' => 'admin/appearance/skinr/delete/'. $skin->sid,
+        'href' => 'admin/structure/skinr/skin/' . $skin->sid . '/delete',
         'query' => $destination,
       ),
     );
@@ -528,7 +528,7 @@ function skinr_ui_multiple_delete_confirm($form, &$form_state, $skins) {
                                   'Are you sure you want to delete these items?');
   return confirm_form($form,
                     $confirm_question,
-                    'admin/appearance/skinr', t('This action cannot be undone.'),
+                    'admin/structure/skinr', t('This action cannot be undone.'),
                     t('Delete'), t('Cancel'));
 }
 
@@ -547,41 +547,83 @@ function skinr_ui_multiple_delete_confirm_submit($form, &$form_state) {
     }
     drupal_set_message(format_plural($count, 'Deleted 1 skin configuration.', 'Deleted @count skin configurations.'));
   }
-  $form_state['redirect'] = 'admin/appearance/skinr';
+  $form_state['redirect'] = 'admin/structure/skinr';
+}
+
+/**
+ * Menu callback for admin/structure/block.
+ *
+ * @param $theme
+ *   The theme to display the administration page for. If not provided, defaults
+ *   to the currently used theme.
+ */
+function skinr_ui_admin_library($theme = NULL) {
+  global $theme_key;
+
+  drupal_theme_initialize();
+
+  if (!isset($theme)) {
+    // If theme is not specifically set, rehash for the current theme.
+    $theme = $theme_key;
+  }
+
+  return drupal_get_form('skinr_ui_admin_library_form', $theme);
 }
 
 /**
  * Menu callback: skins administration.
  */
-function skinr_ui_admin_skin_infos($form, $form_state) {
+function skinr_ui_admin_library_form($form, $form_state, $theme) {
+  $form['edited_theme'] = array(
+    '#type' => 'value',
+    '#value' => $theme,
+  );
+
   $skins = skinr_get_skin_info();
   if (empty($skins)) {
     $form['skins_empty'] = array(
-      '#markup' => t('You do not currently have any skin sets to manage.'),
+      '#markup' => t("You don't have any skins to manage."),
     );
     return $form;
   }
 
+  if (isset($form_state['storage']['sids'])) {
+    // Ask for confirmation for disabling skin configurations.
+    foreach ($form_state['storage']['skins'] as $skin) {
+      $items[] = $skins[$skin]['title'];
+    }
+    $message = t('Would you like to disable all skin configurations for the selected skins?') . theme('item_list', array('items' => $items));
+    // Insert a confirmation form.
+    return confirm_form(
+      $form,
+      t('Disable all skin configurations for selected skins?'),
+      'admin/structure/skinr/library',
+      $message,
+      t('Yes'),
+      t('No')
+    );
+  }
+
+  // Apply overridden status.
+  foreach ($skins as $name => $skin_info) {
+    $skins[$name]['status'] = skinr_skin_info_status_get($skins[$name]);
+  }
+
   $groups = skinr_get_group_info();
 
   uasort($skins, 'skinr_ui_sort_by_title');
   $form['skins'] = array('#tree' => TRUE);
 
   // Iterate through each of the skins.
-  foreach ($skins as $name => $skin) {
+  foreach ($skins as $name => $skin_info) {
     $extra = array();
 
-    // Generate link for skin's configuration page
-    $extra['links']['configure'] = array(
-      '#type' => 'link',
-      '#title' => t('Configure'),
-      '#href' => 'admin/appearance/skinr/skins/settings/' . $name,
-      '#options' => array('attributes' => array('class' => array('skin-link', 'skin-link-configure'))),
-    );
+    // Set status.
+    $extra['enabled'] = $skin_info['status'][$theme];
 
     // Create a row entry for this skin.
-    $group = $groups[$skin['group']]['title'];
-    $form['skins'][$group][$name] = _skinr_ui_admin_skin_infos_build_row($skin, $extra);
+    $group = $groups[$skin_info['group']]['title'];
+    $form['skins'][$group][$name] = _skinr_ui_admin_library_form_build_row($skin_info, $extra, $theme);
   }
 
   // Add basic information to the fieldsets.
@@ -590,16 +632,13 @@ function skinr_ui_admin_skin_infos($form, $form_state) {
       '#type' => 'fieldset',
       '#title' => $package,
       '#collapsible' => TRUE,
-      '#theme' => 'skinr_ui_admin_skin_infos_fieldset',
+      '#theme' => 'skinr_ui_admin_library_fieldset',
       '#header' => array(
+        array('data' => t('Enabled'), 'class' => array('checkbox')),
         t('Name'),
-        t('Source type'),
-        t('Source name'),
-        t('Source version'),
-        t('Source plug-in'),
+        t('Source'),
+        t('Version'),
         t('Theme hooks'),
-        array('data' => t('Enabled'), 'class' => array('checkbox')),
-        array('data' => t('Operations'), 'colspan' => 3),
       ),
     );
   }
@@ -609,7 +648,11 @@ function skinr_ui_admin_skin_infos($form, $form_state) {
     '#type' => 'submit',
     '#value' => t('Save configuration'),
   );
-  $form['#action'] = url('admin/appearance/skinr/skins');
+  $form['actions']['reset'] = array(
+    '#type' => 'submit',
+    '#value' => t('Reset to defaults'),
+  );
+  $form['#action'] = url('admin/structure/skinr/library');
 
   return $form;
 }
@@ -617,7 +660,7 @@ function skinr_ui_admin_skin_infos($form, $form_state) {
 /**
  * Build a table row for the skin info listing page.
  */
-function _skinr_ui_admin_skin_infos_build_row($skin, $extra) {
+function _skinr_ui_admin_library_form_build_row($skin_info, $extra, $theme) {
   // Add in the defaults.
   $extra += array(
     'enabled' => FALSE,
@@ -629,31 +672,25 @@ function _skinr_ui_admin_skin_infos_build_row($skin, $extra) {
   );
 
   $form['name'] = array(
-    '#markup' => $skin['title'],
+    '#markup' => $skin_info['title'],
   );
   $form['description'] = array(
-    '#markup' => t($skin['description']),
+    '#markup' => t($skin_info['description']),
   );
 
-
   // Grab source info.
-  $info = system_get_info($skin['source']['type'], $skin['source']['name']);
+  $info = system_get_info($skin_info['source']['type'], $skin_info['source']['name']);
+  $source = !empty($info['name']) ? $info['name'] : $skin_info['source']['name'];
 
-  $form['source type'] = array(
-    '#markup' => $skin['source']['type'],
-  );
-  $form['source name'] = array(
-    '#markup' => $skin['source']['name'],
+  $form['source'] = array(
+    '#markup' => t('%source !type', array('%source' => $source, '!type' => $skin_info['source']['type'] == 'module' ? t('module') : t('theme'))),
   );
-  $form['source version'] = array(
-    '#markup' => $skin['source']['version'],
-  );
-  $form['source plugin'] = array(
-    '#markup' => '', //$skin['source']['plugin'],
+  $form['version'] = array(
+    '#markup' => $skin_info['source']['version'],
   );
 
   $theme_hooks = array();
-  foreach ($skin['theme hooks'] as $theme_hook) {
+  foreach ($skin_info['theme hooks'] as $theme_hook) {
     $theme_hooks[] = $theme_hook == '*' ? t('all hooks') : $theme_hook;
   }
   $form['theme hooks'] = array(
@@ -669,9 +706,6 @@ function _skinr_ui_admin_skin_infos_build_row($skin, $extra) {
     $form['enable']['#disabled'] = TRUE;
   }
 
-  // Build operation links.
-  $form['links']['configure'] = (isset($extra['links']['configure']) ? $extra['links']['configure'] : array());
-
   return $form;
 }
 
@@ -692,40 +726,106 @@ function skinr_ui_sort_by_title($a, $b) {
 }
 
 /**
- * Form submission handler for skinr_ui_admin_skin_infos().
- *
- * @todo Nix this; status update only happen through hitting the 'configure'
- *   link for a skin.
+ * Form submission handler for skinr_ui_admin_library_form().
  */
-function skinr_ui_admin_skin_infos_submit($form, &$form_state) {
-  // Store list of previously enabled themes and disable all themes.
-  $old_skin_infos = $new_skin_infos = array();
-  foreach (skinr_get_skin_info() as $skin_info) {
-    if ($skin_info->status) {
-      $old_skin_infos[] = $skin_info->name;
+function skinr_ui_admin_library_form_submit($form, &$form_state) {
+  $skins = skinr_get_skin_info();
+  $theme = $form_state['values']['edited_theme'];
+  $theme_info = system_get_info('theme', $theme);
+  $reset = $form_state['clicked_button']['#id'] == 'edit-reset' ? TRUE : FALSE;
+
+  if ($reset) {
+    // Reset all values to their default.
+    foreach ($form_state['values']['skins'] as $category => $data) {
+      foreach ($data as $skin => $enabled) {
+        $default_status = isset($skins[$skin]['status'][$theme]) ? $skins[$skin]['status'][$theme] : $skins[$skin]['default status'];
+        $form_state['values']['skins'][$category][$skin]['enable'] = $default_status;
+      }
     }
   }
-  db_query("UPDATE {skinr_skinsets} SET status = 0");
-
-  // Set status for all
-  foreach ($form_state['values']['skinsets'] as $category) {
-    foreach ($category as $name => $choice) {
-      if ($choice['enable']) {
-        $new_theme_list[] = $name;
-        db_update('skinr_skinsets')
-          ->fields(array('status' => 1))
-          ->condition('name', $name)
-          ->execute();
+
+  if ($form_state['clicked_button']['#id'] == 'edit-submit' || $reset) {
+    // Make sure we don't disable skins for which configuration exists. Ask to
+    // disable all related skin configurations so we can disable the skin.
+
+    $affected_skins = array();
+    $disable_sids = array();
+    $rebuild = FALSE;
+
+    foreach ($form_state['values']['skins'] as $category => $data) {
+      foreach ($data as $skin => $enabled) {
+        $enabled = $enabled['enable'];
+        $status = skinr_skin_info_status_get($skins[$skin]);
+
+        if (!empty($status[$theme]) && !$enabled) {
+          // This skin is being disabled.
+          $affected_skins[] = $skin;
+
+          // Find all enabled configurations for this skin.
+          $params = array(
+            'theme' => $theme,
+            'skin' => $skin,
+            'status' => 1,
+          );
+          $sids = skinr_skin_get_sids($params);
+          if (count($sids)) {
+            $disable_sids += $sids;
+            $rebuild = TRUE;
+          }
+        }
       }
     }
+
+    if ($rebuild) {
+      $form_state['storage']['status'] = $form_state['values']['skins'];
+      $form_state['storage']['skins'] = $affected_skins;
+      $form_state['storage']['sids'] = $disable_sids;
+      $form_state['storage']['reset'] = $reset;
+      $form_state['rebuild'] = TRUE;
+      return;
+    }
   }
 
-  // Refresh skinsets from DB.
-  drupal_static_reset('skinr_get_skin_info');
+  if (!empty($form_state['storage']['sids'])) {
+    // Disable any configurations for skins that are being disabled.
+    db_update('skinr_skins')
+      ->fields(array('status' => 0))
+      ->condition('sid', $form_state['storage']['sids'])
+      ->execute();
+
+    // Clear skinr_skin_load_multiple cache.
+    drupal_static_reset('skinr_skin_load_multiple');
+
+    foreach ($form_state['storage']['skins'] as $skin) {
+      drupal_set_message(t('Disabled all skin configurations for skin %skin and theme %theme.', array('%skin' => $skin, '%theme' => $theme_info['name'])));
+    }
+    $changed_status = $form_state['storage']['status'];
+    $reset = $form_state['storage']['reset'];
+  }
+  else {
+    $changed_status = $form_state['values']['skins'];
+  }
 
-  drupal_set_message(t('The configuration options have been saved.'));
+  // Save new status.
+  foreach ($changed_status as $category => $data) {
+    foreach ($data as $skin => $enabled) {
+      $enabled = $enabled['enable'];
+      $status = skinr_skin_info_status_get($skins[$skin]);
+      if (!isset($status[$theme]) || $status[$theme] != $enabled) {
+        // Update status.
+        $status[$theme] = $enabled;
+        skinr_skin_info_status_set($skins[$skin], $status);
+      }
+    }
+  }
 
-  return;
+  if ($reset) {
+    drupal_set_message(t("Statuses for %theme's skins have been reset to their defaults.", array('%theme' => $theme_info['name'])));
+  }
+  else {
+    drupal_set_message(t("Statuses for %theme's skins have been updated.", array('%theme' => $theme_info['name'])));
+  }
+  $form_state['redirect'] = 'admin/structure/skinr/library';
 }
 
 /**
@@ -737,7 +837,7 @@ function skinr_ui_admin_skin_infos_submit($form, &$form_state) {
  *
  * @ingroup themeable
  */
-function theme_skinr_ui_admin_skin_infos_fieldset($variables) {
+function theme_skinr_ui_admin_library_fieldset($variables) {
   $form = $variables['form'];
 
   // Individual table headers.
@@ -750,29 +850,23 @@ function theme_skinr_ui_admin_skin_infos_fieldset($variables) {
 
     $row = array();
 
+    // Enabled.
+    unset($skin_info['enable']['#title']);
+    $row[] = array('class' => array('checkbox'), 'data' => drupal_render($skin_info['enable']));
+
     // Name.
-    $row[] = theme('skinr_ui_admin_skin_infos_summary', array(
+    $row[] = theme('skinr_ui_admin_library_summary', array(
       'name' => drupal_render($skin_info['name']),
       'description' => drupal_render($skin_info['description']),
     ));
 
     // Source.
-    $row[] = drupal_render($skin_info['source type']);
-    $row[] = drupal_render($skin_info['source name']);
-    $row[] = drupal_render($skin_info['source version']);
-    $row[] = drupal_render($skin_info['source plugin']);
+    $row[] = drupal_render($skin_info['source']);
+    $row[] = drupal_render($skin_info['version']);
 
     // Theme hooks.
     $row[] = drupal_render($skin_info['theme hooks']);
 
-    // Enabled.
-    unset($skin_info['enable']['#title']);
-    $row[] = array('class' => array('checkbox'), 'data' => drupal_render($skin_info['enable']));
-
-    // Display links (such as help or permissions) in their own columns.
-    foreach (array('help', 'permissions', 'configure') as $key) {
-      $row[] = array('data' => drupal_render($skin_info['links'][$key]), 'class' => array($key));
-    }
     $rows[] = $row;
   }
 
@@ -788,237 +882,11 @@ function theme_skinr_ui_admin_skin_infos_fieldset($variables) {
  *
  * @ingroup themeable
  */
-function theme_skinr_ui_admin_skin_infos_summary($variables) {
+function theme_skinr_ui_admin_library_summary($variables) {
   return '<div class="skin-infos-summary"><h2>'. $variables['name'] .'</h2><div class="description">'. $variables['description'] .'</div></div>';
 }
 
 /**
- * Returns HTML for a definition list.
- *
- * @param $variables
- *   An associative array containing:
- *   - definitions: An array of definition descriptions, keyed by definition terms.
- *   - attribute: An array of HTML attributes to apply to the dl tag.
- *
- * @ingroup themeable
- */
-function theme_skinr_ui_admin_dl($variables) {
-  $definitions = $variables['definitions'];
-  $attributes = $variables['attributes'];
-
-  $output = '<dl' . drupal_attributes($attributes) . ">\n";
-  foreach ($definitions as $term => $description) {
-    $output .= '<dt>' . $term . "</dt>\n";
-    $output .= '<dd>' . $description . "</dd>\n";
-  }
-  $output .= "</dl>\n";
-
-  return $output;
-}
-
-/**
- * Menu callback; displays a listing of all skins in a skinset, allowing you
- * to enable or disable them individually for each theme.
- *
- * @ingroup forms
- * @see skinr_ui_admin_skin_info_settings_validate()
- * @see skinr_ui_admin_skin_info_settings_submit()
- * @see skinr_ui_admin_skin_info_settings_reset()
- */
-function skinr_ui_admin_skin_info_settings($form, &$form_state, $skin_info) {
-  $themes = list_themes();
-  if (isset($form_state['storage']['disable_sids'])) {
-    foreach ($form_state['storage']['themes'] as $theme) {
-      $items[] = $themes[$theme]->info['name'];
-    }
-    $message = t('Would you like to disable the skin configurations for the selected themes?') . theme('item_list', array('items' => $items));
-    // Insert a confirmation form.
-    return confirm_form(
-      $form,
-      t('Disable all skin configurations for selected themes?'),
-      'admin/appearance/skinr/skins',
-      $message,
-      t('Yes'),
-      t('No')
-    );
-  }
-
-  // Output skin details.
-  $form['title'] = array(
-    '#markup' => '<h2>' . $skin_info['title'] . '</h2>',
-  );
-  $form['description'] = array(
-    '#markup' => '<div class="description">' . $skin_info['description'] . '</div>',
-  );
-
-  $theme_hooks = array();
-  foreach ($skin_info['theme hooks'] as $theme_hook) {
-    $theme_hooks[] = $theme_hook == '*' ? t('all hooks') : $theme_hook;
-  }
-
-  $modules = system_rebuild_module_data();
-  $source = !empty($modules[$skin_info['source']['name']]->info['name']) ? $modules[$skin_info['source']['name']]->info['name'] : $skin_info['source']['name'];
-
-  $groups = skinr_get_group_info();
-  $group = !empty($groups[$skin_info['group']]['title']) ? $groups[$skin_info['group']]['title'] : $skin_info['group'];
-
-  $details = array(
-    t('Source') => t('%source !type', array('%source' => $source, '!type' => $skin_info['source']['type'] == 'module' ? t('module') : t('theme'))),
-    t('Theme hooks') => implode(', ', $theme_hooks),
-    t('Group') => $group,
-  );
-
-  $form['details'] = array(
-    '#markup' => theme('skinr_ui_admin_dl', array('definitions' => $details, 'attributes' => array('class' => 'details'))),
-  );
-
-  $form['status'] = array(
-    '#type' => 'checkboxes',
-    '#title' => t('Themes'),
-    '#description' => t('This skin will be availble as an option for the selected themes.'),
-  );
-
-  $options = array();
-  $default_value = array();
-  $status = skinr_skin_info_status_get($skin_info);
-  ksort($status);
-  foreach ($status as $theme => $enabled) {
-    if (isset($themes[$theme]) && $themes[$theme]->status) {
-      $options[$theme] = $themes[$theme]->info['name'];
-    }
-    else {
-      // Hidden field to keep contents of themes that aren't enabled, or that
-      // don't exist on this site but are set by the skin plugin.
-      $form['status'][$theme] = array(
-        '#type' => 'value',
-        '#value' => $theme,
-      );
-    }
-    if ($enabled) {
-      $default_value[] = $theme;
-    }
-  }
-  $form['status']['#options'] = $options;
-  $form['status']['#default_value'] = $default_value;
-
-  $form['skin'] = array(
-    '#type' => 'hidden',
-    '#value' => $skin_info['name'],
-  );
-
-  $form['actions'] = array('#type' => 'actions');
-  $form['actions']['save'] = array(
-    '#type' => 'submit',
-    '#value' => t('Save configuration'),
-  );
-  $form['actions']['reset'] = array(
-    '#type' => 'submit',
-    '#value' => t('Reset to defaults'),
-    '#submit' => array('skinr_ui_admin_skin_info_settings_reset'),
-  );
-
-  // Store $skin_info for use in submit function.
-  $form_state['#skin_info'] = $skin_info;
-
-  return $form;
-}
-
-/**
- * Process skinr_ui_admin_skin_info_settings() form submissions.
- *
- * Reset status for this skin to default.
- */
-function skinr_ui_admin_skin_info_settings_reset($form, &$form_state) {
-  variable_del('skinr_skin_' . $form_state['values']['skin'] . '_status');
-
-  drupal_set_message(t("%skin's statuses have been reset to their defaults.", array('%skin' => $form_state['values']['skin'])));
-  $form_state['redirect'] = 'admin/appearance/skinr/skins';
-}
-
-/**
- * Helper function for skinr_ui_admin_skin_info_settings_submit().
- *
- * Replace all values with 1 if content exists, or 0 otherwise.
- */
-function _skinr_ui_admin_bool($val) {
-  return $val ? 1 : 0;
-}
-
-/**
- * Process skinr_ui_admin_skin_info_settings() form submissions.
- */
-function skinr_ui_admin_skin_info_settings_submit($form, &$form_state) {
-  if ($form_state['clicked_button']['#id'] == 'edit-save') {
-    // Make sure we don't disable skins for which configuration exists. Ask to
-    // disable all related skin configurations so we can disable the skin.
-
-    $themes = array();
-    $status = skinr_skin_info_status_get($form_state['#skin_info']);
-    foreach ($form_state['values']['status'] as $theme => $enabled) {
-      $default_enabled = isset($status[$theme]) ? $status[$theme] : 0;
-      if ($default_enabled && !$enabled) {
-        $themes[] = $theme;
-      }
-    }
-
-    if (count($themes)) {
-      $theme_info = list_themes();
-      $disable_sids = array();
-      $rebuild = FALSE;
-
-      foreach ($themes as $theme)  {
-        $params = array(
-          'theme' => $theme,
-          'skin' => $form_state['values']['skin'],
-          'status' => 1,
-        );
-        $sids = skinr_skin_get_sids($params);
-        if (count($sids)) {
-          $form_state['storage']['themes'][] = $theme;
-          $disable_sids += $sids;
-          $rebuild = TRUE;
-        }
-      }
-      if ($rebuild) {
-        $form_state['storage']['skin'] = $form_state['values']['skin'];
-        $form_state['storage']['status'] = $form_state['values']['status'];
-        $form_state['storage']['disable_sids'] = $disable_sids;
-        $form_state['rebuild'] = TRUE;
-        return;
-      }
-    }
-  }
-
-  if (isset($form_state['storage']['disable_sids']) && count($form_state['storage']['disable_sids'])) {
-    $skin = $form_state['storage']['skin'];
-    $status = array_map('_skinr_ui_admin_bool', $form_state['storage']['status']);
-
-    // Disable any skin configurations for skins that are being disabled.
-    db_update('skinr_skins')
-      ->fields(array('status' => 0))
-      ->condition('sid', $form_state['storage']['disable_sids'])
-      ->execute();
-    // Clear the skinr_skin_load_multiple cache.
-    drupal_static_reset('skinr_skin_load_multiple');
-
-    $theme_info = list_themes();
-    foreach ($form_state['storage']['themes'] as $theme) {
-      drupal_set_message(t('All enabled skin configurations for skin %skin and theme %theme have been disabled.', array('%skin' => $skin, '%theme' => isset($theme_info[$theme]->info['name']) ? $theme_info[$theme]->info['name'] : $theme)));
-    }
-  }
-  else {
-    $skin = $form_state['values']['skin'];
-    $status = array_map('_skinr_ui_admin_bool', $form_state['values']['status']);
-  }
-
-  // Save the new status.
-  skinr_skin_info_status_set($form_state['#skin_info'], $status);
-
-  drupal_set_message(t("Statuses for skin %skin have been updated.", array('%skin' => $skin)));
-  $form_state['redirect'] = 'admin/appearance/skinr/skins';
-}
-
-/**
  * Form builder for the Skinr settings export form.
  *
  * @param $theme
@@ -1118,7 +986,7 @@ function skinr_ui_export_form_validate(&$form, &$form_state) {
  * Form submission handler for skinr_ui_export_form().
  */
 function skinr_ui_export_form_submit(&$form, &$form_state) {
-  drupal_goto('admin/appearance/skinr/export/' . str_replace('_', '-', $form_state['values']['theme']));
+  drupal_goto('admin/structure/skinr/export/' . str_replace('_', '-', $form_state['values']['theme']));
 }
 
 /**
@@ -1194,7 +1062,7 @@ function skinr_ui_import_form_submit(&$form, &$form_state) {
   }
 
   drupal_set_message(t('The skin configurations have been saved.'));
-  drupal_goto('admin/appearance/skinr');
+  drupal_goto('admin/structure/skinr');
 }
 
 /**
@@ -1221,7 +1089,7 @@ function skinr_ui_delete_confirm($form, &$form_state, $skin) {
   $themes = list_themes();
   return confirm_form($form,
     t('Are you sure you want to delete this skin configuration?'),
-    isset($_GET['destination']) ? $_GET['destination'] : 'admin/appearance/skinr',
+    isset($_GET['destination']) ? $_GET['destination'] : 'admin/structure/skinr',
     t('This action cannot be undone.<br />Theme: %theme<br />Module: %module<br />Element: %element<br />Skin: %skin', array('%theme' => $themes[$skin->theme]->info['name'], '%module' => $skin->module, '%element' => $skin->element, '%skin' => $skin->skin)),
     t('Delete'),
     t('Cancel')
@@ -1238,5 +1106,5 @@ function skinr_ui_delete_confirm_submit($form, &$form_state) {
     drupal_set_message(t('A skin configuration has been deleted.'));
   }
 
-  $form_state['redirect'] = 'admin/appearance/skinr';
+  $form_state['redirect'] = 'admin/structure/skinr';
 }
diff --git a/skinr_ui.info b/skinr_ui.info
index a01d78cf334f34a185b9de76a8b831fa36b6f9f7..fddd9479e303a2d533bf9f27629d32ddb4c5d95d 100644
--- a/skinr_ui.info
+++ b/skinr_ui.info
@@ -2,6 +2,6 @@ name = Skinr UI
 description = Administrative interface to skinr. Without this module, you cannot edit your skins.
 package = Skinr
 core = 7.x
-configure = admin/appearance/skinr
+configure = admin/structure/skinr
 dependencies[] = skinr
 files[] = tests/skinr_ui.test
diff --git a/skinr_ui.module b/skinr_ui.module
index 79161093e29a7c43a1902fb23024b155dd5d8be8..b46ba883a12aec130878d96011251225ae805a83 100644
--- a/skinr_ui.module
+++ b/skinr_ui.module
@@ -44,16 +44,15 @@ function skinr_ui_access($string, $account = NULL) {
  * Implements hook_menu().
  */
 function skinr_ui_menu() {
-  $items['admin/appearance/skinr'] = array(
+  $items['admin/structure/skinr'] = array(
     'title' => 'Skinr',
     'description' => 'Manage your skin configurations and rules, import and export skin configurations.',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('skinr_ui_list'),
     'access arguments' => array('administer skinr'),
     'file' => 'skinr_ui.admin.inc',
-    'type' => MENU_LOCAL_TASK,
   );
-  $items['admin/appearance/skinr/list'] = array(
+  $items['admin/structure/skinr/list'] = array(
     'title' => 'List',
     'description' => t('Manage skinr configurations.'),
     'type' => MENU_DEFAULT_LOCAL_TASK,
@@ -61,35 +60,30 @@ function skinr_ui_menu() {
   );
 
   // Themes.
-  $items['admin/appearance/skinr/skins'] = array(
-    'title' => 'Skins',
-    'description' => 'Manage which skins are available when applying a skin configuration.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('skinr_ui_admin_skin_infos'),
-    'access arguments' => array('administer skinr'),
-    'file' => 'skinr_ui.admin.inc',
-    'type' => MENU_LOCAL_TASK,
-  );
-  $items['admin/appearance/skinr/skins/select'] = array(
-    'title' => 'List',
-    'description' => 'Manage your skins.',
-    'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -1,
-  );
-  $items['admin/appearance/skinr/skins/settings/%skinr_ui_skin_info'] = array(
-    'title' => 'Skin settings',
-    'title callback' => 'skinr_ui_skin_info_title',
-    'title arguments' => array(5),
-    'description' => 'Manage which options are available for each skin when applying a skin configuration.',
-    'page callback' => 'drupal_get_form',
-    'page arguments' => array('skinr_ui_admin_skin_info_settings', 5),
+  $default_theme = variable_get('theme_default', 'bartik');
+  $items['admin/structure/skinr/library'] = array(
+    'title' => 'Library',
+    'description' => 'Manage what skins are available when configuring the way your site looks.',
+    'page callback' => 'skinr_ui_admin_library',
+    'page arguments' => array($default_theme),
     'access arguments' => array('administer skinr'),
     'file' => 'skinr_ui.admin.inc',
     'type' => MENU_LOCAL_TASK,
   );
+  foreach (list_themes() as $key => $theme) {
+    $items['admin/structure/skinr/library/list/' . $key] = array(
+      'title' => check_plain($theme->info['name']),
+      'page arguments' => array($key),
+      'type' => $key == $default_theme ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK,
+      'weight' => $key == $default_theme ? -10 : 0,
+      'access callback' => '_skinr_ui_themes_access',
+      'access arguments' => array($theme),
+      'file' => 'skinr_ui.admin.inc',
+    );
+  }
 
   // Rules.
-  $items['admin/appearance/skinr/rules'] = array(
+  $items['admin/structure/skinr/rules'] = array(
     'title' => 'Rules',
     'page callback' => 'skinr_rules',
     'type' => MENU_LOCAL_TASK,
@@ -98,7 +92,7 @@ function skinr_ui_menu() {
     'description' => t('Configure region and page level Skinr rules.'),
     'file' => 'skinr_ui.rules.inc',
   );
-  $items['admin/appearance/skinr/rules/add'] = array(
+  $items['admin/structure/skinr/rules/add'] = array(
     'title' => 'Create a new rule',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('skinr_rule_add'),
@@ -106,25 +100,25 @@ function skinr_ui_menu() {
     'access arguments' => array('administer skinr'),
     'file' => 'skinr_ui.rules.inc',
   );
-  $items['admin/appearance/skinr/rules/edit/%skinr_rule'] = array(
+  $items['admin/structure/skinr/rules/%skinr_rule/edit'] = array(
     'title' => 'Edit rule',
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('skinr_rule_edit', 5),
+    'page arguments' => array('skinr_rule_edit', 4),
     'type' => MENU_CALLBACK,
     'access arguments' => array('administer skinr'),
     'file' => 'skinr_ui.rules.inc',
   );
-  $items['admin/appearance/skinr/rules/delete/%skinr_rule'] = array(
+  $items['admin/structure/skinr/rules/%skinr_rule/delete'] = array(
     'title' => 'Delete rule',
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('skinr_rule_delete_confirm', 5),
+    'page arguments' => array('skinr_rule_delete_confirm', 4),
     'type' => MENU_CALLBACK,
     'access arguments' => array('administer skinr'),
     'file' => 'skinr_ui.rules.inc',
   );
 
   // Import & Export.
-  $items['admin/appearance/skinr/import'] = array(
+  $items['admin/structure/skinr/import'] = array(
     'title' => 'Import',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('skinr_ui_import_form'),
@@ -134,7 +128,7 @@ function skinr_ui_menu() {
     'description' => t('Import skin configurations.'),
     'file' => 'skinr_ui.admin.inc',
   );
-  $items['admin/appearance/skinr/export'] = array(
+  $items['admin/structure/skinr/export'] = array(
     'title' => 'Export',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('skinr_ui_export_form'),
@@ -146,7 +140,7 @@ function skinr_ui_menu() {
   );
 
   // Configure skin settings for an element.
-  $items['admin/appearance/skinr/edit/%skinr_js/%/%'] = array(
+  $items['admin/structure/skinr/edit/%skinr_js/%/%'] = array(
     'title' => 'Edit skin',
     'title callback' => 'skinr_ui_edit_title',
     'title arguments' => array(5, 6),
@@ -156,7 +150,7 @@ function skinr_ui_menu() {
     'context' => MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE,
     'access arguments' => array('edit skin settings'),
   );
-  $items['admin/appearance/skinr/edit/%skinr_js/%/%/configure'] = array(
+  $items['admin/structure/skinr/edit/%skinr_js/%/%/configure'] = array(
     'title' => 'Edit skin',
     'title callback' => 'skinr_ui_edit_contextual_title',
     'title arguments' => array(5, 6),
@@ -165,7 +159,7 @@ function skinr_ui_menu() {
   );
 
   // Enable a skin configuration.
-  $items['admin/appearance/skinr/enable/%skinr_skin'] = array(
+  $items['admin/structure/skinr/skin/%skinr_skin/enable'] = array(
     'title' => 'Enable skin',
     'page callback' => 'skinr_ui_skin_status_set',
     'page arguments' => array(4, TRUE),
@@ -175,7 +169,7 @@ function skinr_ui_menu() {
   );
 
   // Disable a skin configuration.
-  $items['admin/appearance/skinr/disable/%skinr_skin'] = array(
+  $items['admin/structure/skinr/skin/%skinr_skin/disable'] = array(
     'title' => 'Disable skin',
     'page callback' => 'skinr_ui_skin_status_set',
     'page arguments' => array(4, FALSE),
@@ -185,7 +179,7 @@ function skinr_ui_menu() {
   );
 
   // Delete a skin configuration.
-  $items['admin/appearance/skinr/delete/%skinr_skin'] = array(
+  $items['admin/structure/skinr/skin/%skinr_skin/delete'] = array(
     'title' => 'Delete skin',
     'page callback' => 'drupal_get_form',
     'page arguments' => array('skinr_ui_delete_confirm', 4),
@@ -194,37 +188,10 @@ function skinr_ui_menu() {
     'file' => 'skinr_ui.admin.inc',
   );
 
-  // Fetch skin file info through AJAX.
-  $items['admin/appearance/skinr/info/%'] = array(
-    'title' => 'Skinr file information',
-    'page callback' => 'skinr_ui_skin_get_files',
-    'page arguments' => array(4),
-    'type' => MENU_CALLBACK,
-    'access arguments' => array('administer skinr'),
-  );
-
   return $items;
 }
 
 /**
- * Menu argument loader; Retrieves skin information for a single skin.
- */
-function skinr_ui_skin_info_load($name) {
-  $skin_info = skinr_get_skin_info();
-  if (isset($skin_info[$name])) {
-    return $skin_info[$name];
-  }
-  return FALSE;
-}
-
-/**
- * Menu title callback; Returns the title of a skin.
- */
-function skinr_ui_skin_info_title($skin_info) {
-  return check_plain($skin_info['title']);
-}
-
-/**
  * Helper function to determine if ajax is used to call a function.
  */
 function skinr_js_load($js = 'nojs') {
@@ -235,22 +202,26 @@ function skinr_js_load($js = 'nojs') {
 }
 
 /**
+ * Menu item access callback - only admin or enabled themes can be accessed.
+ */
+function _skinr_ui_themes_access($theme) {
+  return user_access('administer skinr') && drupal_theme_access($theme);
+}
+
+
+/**
  * Implements hook_theme().
  */
 function skinr_ui_theme() {
   return array(
-    'skinr_ui_admin_skin_infos_fieldset' => array(
+    'skinr_ui_admin_library_fieldset' => array(
       'render element' => 'form',
       'file' => 'skinr_ui.admin.inc',
     ),
-    'skinr_ui_admin_skin_infos_summary' => array(
+    'skinr_ui_admin_library_summary' => array(
       'variables' => array('name' => NULL, 'description' => NULL),
       'file' => 'skinr_ui.admin.inc',
     ),
-    'skinr_ui_admin_dl' => array(
-      'variables' => array('definitions' => NULL, 'attributes' => array()),
-      'file' => 'skinr_ui.admin.inc',
-    ),
   );
 }
 
@@ -265,23 +236,23 @@ function skinr_ui_help($path, $arg) {
     $advanced_help = '<p>' . t('Please download and enable the <a href="http://drupal.org/project/advanced_help">Advanced Help</a> module for full Skinr documentation.') . '</p>';
   }
   switch ($path) {
-    case 'admin/appearance/skinr':
+    case 'admin/structure/skinr':
       return  '<p>' . t('Below is a list of all skin configurations in use on this site.') . '</p>' . $advanced_help;
-    case 'admin/appearance/skinr/rule':
+    case 'admin/structure/skinr/rule':
       return  '<p>' . t('Below is a list of Skinr rules. Rules can be created for <em>region</em> and <em>page</em> elements.  Start by creating a new rule.') . '</p>';
-    case 'admin/appearance/skinr/rule/add':
+    case 'admin/structure/skinr/rule/add':
       return  '<p>' . t('Choose the type of rule you wish to create. Page rules apply classes to the &lt;body&gt; tag. Region rules apply to the region wrapper &lt;div&gt; tag.') . '</p>';
-    case 'admin/appearance/skinr/import':
+    case 'admin/structure/skinr/import':
       return  '<p>' . t('To import skin configurations, paste exported code and click the "Import" button.') . '</p>';
-    case 'admin/appearance/skinr/export':
+    case 'admin/structure/skinr/export':
       return  '<p>' . t('To export skin configurations, ensure the correct theme is selected and click the "Export" button.') . '</p>';
-    case 'admin/appearance/skinr/edit/%/%/%':
+    case 'admin/structure/skinr/edit/%/%/%':
       // @todo Make this help text more relevant.
       $theme_hooks = skinr_theme_hooks($arg[5], $arg[6]);
       return  '<p>' . t('Manage which skins you want to apply to the hooks <strong>!hooks</strong>.', array('!hooks' => implode(', ', $theme_hooks))) . '</p>';
-    case 'admin/appearance/skinr/rules/edit/%':
+    case 'admin/structure/skinr/rules/%/edit':
       // @todo Make this help text more relevant.
-      $theme_hooks = skinr_theme_hooks('rules', $arg[5]);
+      $theme_hooks = skinr_theme_hooks('rules', $arg[4]);
       return  '<p>' . t('Manage which skins you want to apply to the hooks <strong>!hooks</strong>.', array('!hooks' => implode(', ', $theme_hooks))) . '</p>';
   }
 }
@@ -735,7 +706,7 @@ function skinr_ui_preprocess(&$variables, $hook) {
   foreach ($array_elements as $module => $elements) {
     foreach ($elements as $element) {
       $contextual_links['skinr-' .  $module . '-' . $counter++] = array(
-        'admin/appearance/skinr/edit/nojs', array($module, $element),
+        'admin/structure/skinr/edit/nojs', array($module, $element),
       );
     }
   }
diff --git a/skinr_ui.rules.inc b/skinr_ui.rules.inc
index 911199bc23cd636f423d617425aa100238f6dd1e..b741be8ab6facd32acc99f2b1cd42c90d9f78998 100644
--- a/skinr_ui.rules.inc
+++ b/skinr_ui.rules.inc
@@ -23,13 +23,13 @@ function skinr_rules() {
     $row = array(
       check_plain($rule->title),
       check_plain($rule->rule_type),
-      l(t('edit'), 'admin/appearance/skinr/rules/edit/'. $rule->rid),
-      l(t('delete'), 'admin/appearance/skinr/rules/delete/'. $rule->rid),
+      l(t('edit'), 'admin/structure/skinr/rules/'. $rule->rid . '/edit'),
+      l(t('delete'), 'admin/structure/skinr/rules/'. $rule->rid . '/delete'),
     );
     $rows[] = $row;
   }
 
-  $link = l(t('Create a new rule'), 'admin/appearance/skinr/rules/add');
+  $link = l(t('Create a new rule'), 'admin/structure/skinr/rules/add');
   $row = array();
   if (empty($rows)) {
     $row[] = array(
@@ -115,7 +115,7 @@ function skinr_rule_add_submit($form, &$form_state) {
   // Set rule id, if we inserted a new rule to allow others to know what rule they're working with.
   $form_state['values']['rule']['rid'] = $rule->rid;
 
-  $form_state['redirect'] = 'admin/appearance/skinr/rules/edit/' . $rule->rid;
+  $form_state['redirect'] = 'admin/structure/skinr/rules/'. $rule->rid . '/edit';
 }
 
 /**
@@ -295,7 +295,7 @@ function skinr_rule_edit_submit($form, &$form_state) {
   // Set rule id, if we inserted a new rule to allow others to know what rule they're working with.
   $form_state['values']['rid'] = $rule->rid;
 
-  $form_state['redirect'] = 'admin/appearance/skinr/rules';
+  $form_state['redirect'] = 'admin/structure/skinr/rules';
 }
 
 /**
@@ -309,7 +309,7 @@ function skinr_rule_delete_submit($form, &$form_state) {
     $destination = drupal_get_destination();
     unset($_REQUEST['destination']);
   }
-  $form_state['redirect'] = array('admin/appearance/skinr/rules/delete/'. $form_state['values']['rid'], $destination);
+  $form_state['redirect'] = array('admin/structure/skinr/rules/' . $form_state['values']['rid'] . 'delete', $destination);
 }
 
 /**
@@ -328,7 +328,7 @@ function skinr_rule_delete_confirm($form, &$form_state, $rule) {
 
   return confirm_form($form,
     t('Are you sure you want to delete %title?', array('%title' => $rule->title)),
-    isset($_GET['destination']) ? $_GET['destination'] : 'admin/appearance/skinr/rules',
+    isset($_GET['destination']) ? $_GET['destination'] : 'admin/structure/skinr/rules',
     t('This action cannot be undone.'),
     t('Delete'),
     t('Cancel')
@@ -343,5 +343,5 @@ function skinr_rule_delete_confirm_submit($form, &$form_state) {
     skinr_rule_delete($form_state['values']['rid']);
   }
 
-  $form_state['redirect'] = 'admin/appearance/skinr/rules';
+  $form_state['redirect'] = 'admin/structure/skinr/rules';
 }
diff --git a/tests/skinr.test b/tests/skinr.test
index c22e59151456b73df475a1a849d557ddce5c6520..bb54a8107721dd982cd907bf59efe0484cb161d6 100644
--- a/tests/skinr.test
+++ b/tests/skinr.test
@@ -90,7 +90,7 @@ class SkinrInstallationTestCase extends DrupalWebTestCase {
     $this->drupalPost('admin/people/permissions', $edit, t('Save permissions'));
 
     // Verify that we are able to access Skinr's administration pages.
-    $this->drupalGet('admin/appearance/skinr');
+    $this->drupalGet('admin/structure/skinr');
     $this->assertResponse(200);
 
     // Uninstall the modules.
diff --git a/tests/skinr_ui.test b/tests/skinr_ui.test
index 6dff96ae8001037ba36fd401aa036ea3cc1beb24..49521ebc82cb5c7f39dd2f67e8b503c7e1a81790 100644
--- a/tests/skinr_ui.test
+++ b/tests/skinr_ui.test
@@ -143,7 +143,7 @@ class SkinrUIBasicTestCase extends SkinrUITestCase {
     // Verify that we end up on the expected URL to configure skins for the
     // user menu block.
     $front = variable_get('site_frontpage', 'node');
-    $this->assertUrl('admin/appearance/skinr/edit/nojs/block/system__user-menu/configure', array(
+    $this->assertUrl('admin/structure/skinr/edit/nojs/block/system__user-menu/configure', array(
       'query' => array('destination' => $front),
     ));
 
@@ -178,7 +178,7 @@ class SkinrUIBasicTestCase extends SkinrUITestCase {
     $edit = array(
       'skinr_settings[block_type][bartik][groups][_additional][_additional]' => 'additional',
     );
-    $this->drupalPost('admin/appearance/skinr/edit/nojs/block/system__user-menu/configure', $edit, t('Save'));
+    $this->drupalPost('admin/structure/skinr/edit/nojs/block/system__user-menu/configure', $edit, t('Save'));
 
     // Verify that the skin has been applied.
     $this->drupalGet('');
@@ -189,7 +189,7 @@ class SkinrUIBasicTestCase extends SkinrUITestCase {
     $this->drupalLogin($user);
 
     // Verify that the additional CSS classes field is not enabled.
-    $this->drupalGet('admin/appearance/skinr/edit/nojs/block/system__user-menu/configure');
+    $this->drupalGet('admin/structure/skinr/edit/nojs/block/system__user-menu/configure');
     $this->assertNoFieldByName('skinr_settings[block_type][bartik][groups][_additional][_additional]', NULL, 'Additional CSS classes field is not enabled for this user.');
 
     // Save form when additional CSS classes is not set.
@@ -206,8 +206,8 @@ class SkinrUIBasicTestCase extends SkinrUITestCase {
    */
   function testSkinEditWidgets() {
     // Go to the edit page for system__user_menu block.
-    $this->drupalGet('admin/appearance/skinr/skins');
-    $this->drupalGet('admin/appearance/skinr/edit/nojs/block/system__user-menu/configure');
+    $this->drupalGet('admin/structure/skinr/library');
+    $this->drupalGet('admin/structure/skinr/edit/nojs/block/system__user-menu/configure');
 
     // Check the widgets.
     $this->assertFieldByName('skinr_settings[block_type][bartik][groups][general][skinr_ui_test_bgcolor]', NULL, 'Widget with valid type is displayed.');
@@ -222,29 +222,29 @@ class SkinrUIBasicTestCase extends SkinrUITestCase {
    */
   function testSkinEditThemeHooks() {
     // Widget should appear for system blocks.
-    $this->drupalGet('admin/appearance/skinr/edit/nojs/block/system__user-menu/configure');
+    $this->drupalGet('admin/structure/skinr/edit/nojs/block/system__user-menu/configure');
     $this->assertField('edit-skinr-settings-block-type-bartik-groups-general-skinr-ui-test-color-color-white', 'The widget, which is limited to system blocks, appeared on the configuration form for system\'s user-menu block.');
 
     // Widget should not appear search blocks.
-    $this->drupalGet('admin/appearance/skinr/edit/nojs/block/search__form/configure');
+    $this->drupalGet('admin/structure/skinr/edit/nojs/block/search__form/configure');
     $this->assertNoField('edit-skinr-settings-block-type-bartik-groups-general-skinr-ui-test-color-color-white', 'The widget, which is limited to system blocks, did not appear on the configuration form for search\'s form block.');
 
 
     // Widget should appear for page node comments.
-    $this->drupalGet('admin/appearance/skinr/edit/nojs/comment/page/configure');
+    $this->drupalGet('admin/structure/skinr/edit/nojs/comment/page/configure');
     $this->assertField('edit-skinr-settings-comment-type-bartik-groups-general-skinr-ui-test-color-color-white', 'The widget, which is limited to page node comments, appeared on the configuration form for page node comments.');
 
     // Widget should not appear for article node comments.
-    $this->drupalGet('admin/appearance/skinr/edit/nojs/comment/article/configure');
+    $this->drupalGet('admin/structure/skinr/edit/nojs/comment/article/configure');
     $this->assertNoField('edit-skinr-settings-comment-type-bartik-groups-general-skinr-ui-test-color-color-white', 'The widget, which is limited to page node comments, did not appear on the configuration form for article node comments.');
 
 
     // Widget should appear for page nodes.
-    $this->drupalGet('admin/appearance/skinr/edit/nojs/node/page/configure');
+    $this->drupalGet('admin/structure/skinr/edit/nojs/node/page/configure');
     $this->assertField('edit-skinr-settings-node-type-bartik-groups-general-skinr-ui-test-color-color-white', 'The widget, which is limited to page node types, appeared on the configuration form for page node types.');
 
     // Widget should not appear for article nodes.
-    $this->drupalGet('admin/appearance/skinr/edit/nojs/node/article/configure');
+    $this->drupalGet('admin/structure/skinr/edit/nojs/node/article/configure');
     $this->assertNoField('edit-skinr-settings-node-type-bartik-groups-general-skinr-ui-test-color-color-white', 'The widget, which is limited to page node types, did not appear on the configuration form for article node types.');
   }
 }
@@ -286,16 +286,17 @@ class SkinrUIAdminTestCase extends SkinrUITestCase {
    * @todo Add assertions for 'default status' itself.
    */
   function testSkinDefaultStatus() {
-    // Verify that the skin appears on the skin overview page.
-    $this->drupalGet('admin/appearance/skinr/skins');
-    $this->assertLinkByHref('admin/appearance/skinr/skins/settings/skinr_test_basetheme');
-    $this->drupalGet('admin/appearance/skinr/skins/settings/skinr_test_basetheme');
+    // Verify that it is enabled for the skinr_test_subtheme.
+    $this->drupalGet('admin/structure/skinr/library/list/skinr_test_subtheme');
+    $this->assertFieldChecked('edit-skins-general-skinr-test-basetheme-enable', 'skinr_test_basetheme skin is enabled for skinr_test_subtheme.');
 
-    // Verify that it is enabled for the skinr_test_subtheme, and disabled for
-    // Bartik and Garland by default.
-    $this->assertFieldChecked('edit-status-skinr-test-subtheme', 'skinr_test_basetheme skin is enabled for skinr_test_subtheme.');
-    $this->assertNoFieldChecked('edit-status-bartik', 'skinr_test_basetheme skin is disabled for Bartik.');
-    $this->assertNoFieldChecked('edit-status-garland', 'skinr_test_basetheme skin is disabled for Garland.');
+    // Verify that it is disabled for Bartik by default.
+    $this->drupalGet('admin/structure/skinr/library/list/bartik');
+    $this->assertNoFieldChecked('edit-skins-general-skinr-test-basetheme-enable', 'skinr_test_basetheme skin is disabled for Bartik.');
+
+    // Verify that it is disabled for Garland by default.
+    $this->drupalGet('admin/structure/skinr/library/list/garland');
+    $this->assertNoFieldChecked('edit-skins-general-skinr-test-basetheme-enable', 'skinr_test_basetheme skin is disabled for Garland.');
 
     // Override the status for skinr_test_subtheme and Bartik, then verify them.
     $skin = (object) array(
@@ -311,7 +312,7 @@ class SkinrUIAdminTestCase extends SkinrUITestCase {
 
     // Override the default skin.
     $skin->element = 'system-main';
-    $this->drupalGet('admin/appearance/skinr');
+    $this->drupalGet('admin/structure/skinr');
     $this->clickLink(t('disable'), 0);
     // Unaltered skin configuration object should have been saved with only the status updated.
     // Load an uncached version of the skin configuration object.
@@ -320,7 +321,7 @@ class SkinrUIAdminTestCase extends SkinrUITestCase {
     $this->assertEqual($skin->element, 'system-user-menu', 'Only status was updated, even though the object was modified before updating status.');
 
     // Enable the skin configuration.
-    $this->drupalGet('admin/appearance/skinr');
+    $this->drupalGet('admin/structure/skinr');
     $this->clickLink(t('enable'), 0);
     // Load an uncached version of the skin configuration object.
     $skin = skinr_skin_load_unchanged($skin->sid);
@@ -331,7 +332,7 @@ class SkinrUIAdminTestCase extends SkinrUITestCase {
    * Tests skin group functionality.
    */
   function testSkinGroups() {
-    $this->drupalGet('admin/appearance/skinr/skins');
+    $this->drupalGet('admin/structure/skinr/library');
 
     // Verify that the 'General' (default) group appears.
     $this->assertText(t('General'));
@@ -356,8 +357,8 @@ class SkinrUIAdminTestCase extends SkinrUITestCase {
     skinr_skin_save($skin);
 
     // Verify that the skin configuration appears on the skin configurations overview page.
-    $this->drupalGet('admin/appearance/skinr');
-    $this->assertLinkByHref('admin/appearance/skinr/delete/' . $skin->sid . '?destination=admin/appearance/skinr', 0, 'Skin configuration was found on overview page.');
+    $this->drupalGet('admin/structure/skinr');
+    $this->assertLinkByHref('admin/structure/skinr/skin/' . $skin->sid . '/delete?destination=admin/structure/skinr', 0, 'Skin configuration was found on overview page.');
 
     // @todo Should we check the filtering and update options functionality?
   }
@@ -380,15 +381,15 @@ class SkinrUIRulesTestCase extends SkinrUITestCase {
    */
   function testRules() {
     // Test that there is a rules page.
-    $this->drupalGet('admin/appearance/skinr');
-    $this->assertLinkByHref('admin/appearance/skinr/rules');
+    $this->drupalGet('admin/structure/skinr');
+    $this->assertLinkByHref('admin/structure/skinr/rules');
 
     // Test that there is a way to add rules.
-    $this->drupalGet('admin/appearance/skinr/rules');
+    $this->drupalGet('admin/structure/skinr/rules');
     $this->clickLink(t('Create a new rule'), 0);
 
     // Verify that we end up on the expected URL.
-    $this->assertUrl('admin/appearance/skinr/rules/add');
+    $this->assertUrl('admin/structure/skinr/rules/add');
 
     // Verify that we can create the rule.
     $edit = array(
@@ -398,7 +399,7 @@ class SkinrUIRulesTestCase extends SkinrUITestCase {
     $this->drupalPost(NULL, $edit, t('Add'));
 
     // After posting, we expect to be redirected to the rule edit page.
-    $this->assertUrl('admin/appearance/skinr/rules/edit/1');
+    $this->assertUrl('admin/structure/skinr/rules/1/edit');
 
     // Save rule.
     // @todo Add a skin and test whether it applies properly or not.
@@ -407,10 +408,10 @@ class SkinrUIRulesTestCase extends SkinrUITestCase {
     $this->drupalPost(NULL, $edit, t('Save rule'));
 
     // We should be returned back to the rules page.
-    $this->assertUrl('admin/appearance/skinr/rules');
+    $this->assertUrl('admin/structure/skinr/rules');
 
     // Make sure the new rule appears listed on this page.
-    $this->assertLinkByHref('admin/appearance/skinr/rules/edit/1');
+    $this->assertLinkByHref('admin/structure/skinr/rules/1/edit');
   }
 }
 
@@ -469,7 +470,7 @@ class SkinrUIPluginTestCase extends DrupalWebTestCase {
     $this->drupalGet('');
 
     // Make sure our contextual link appears on the page.
-    $this->assertLinkByHref('admin/appearance/skinr/edit/nojs/block/system__user-menu/configure', 0, 'Contexual link to edit block\'s skin configuration was found.');
+    $this->assertLinkByHref('admin/structure/skinr/edit/nojs/block/system__user-menu/configure', 0, 'Contexual link to edit block\'s skin configuration was found.');
   }
 
   /**
@@ -491,7 +492,7 @@ class SkinrUIPluginTestCase extends DrupalWebTestCase {
     $this->drupalPost(NULL, $edit, t('Save'));
 
     // Make sure our contextual link appears on the page.
-    $this->assertLinkByHref('admin/appearance/skinr/edit/nojs/comment/article/configure', 0, 'Contexual link to edit comment\'s skin configuration was found.');
+    $this->assertLinkByHref('admin/structure/skinr/edit/nojs/comment/article/configure', 0, 'Contexual link to edit comment\'s skin configuration was found.');
   }
 
   /**
@@ -506,7 +507,7 @@ class SkinrUIPluginTestCase extends DrupalWebTestCase {
     $this->drupalGet($uri['path']);
 
     // Make sure our contextual link appears on the page.
-    $this->assertLinkByHref('admin/appearance/skinr/edit/nojs/node/article/configure', 0, 'Contexual link to edit node\'s skin configuration was found.');
+    $this->assertLinkByHref('admin/structure/skinr/edit/nojs/node/article/configure', 0, 'Contexual link to edit node\'s skin configuration was found.');
   }
 }
 
@@ -549,6 +550,6 @@ class SkinrUIPluginViewsTestCase extends DrupalWebTestCase {
     $this->drupalGet('skinr-ui-test-view');
 
     // Make sure our contextual link appears on the page.
-    $this->assertLinkByHref('admin/appearance/skinr/edit/nojs/views/skinr_ui_test__page/configure', 0, "Contexual link to edit view's skin configuration was found.");
+    $this->assertLinkByHref('admin/structure/skinr/edit/nojs/views/skinr_ui_test__page/configure', 0, "Contexual link to edit view's skin configuration was found.");
   }
 }
