diff --git a/skinr.handlers.inc b/skinr.handlers.inc
index 2cc6474..0a865cf 100644
--- a/skinr.handlers.inc
+++ b/skinr.handlers.inc
@@ -120,9 +120,10 @@ function skinr_submit_handler(&$form, $form_state, $module, $form_settings) {
 
   if (isset($form_state['values']['skinr_settings'][$module . '_group'])) {
     foreach ($form_state['values']['skinr_settings'][$module . '_group'] as $theme_name => $theme) {
+
       // Process widgets.
-      if (!empty($theme) && is_array($theme)) {
-        foreach ($theme as $skin_name => $options) {
+      if (!empty($theme['groups']) && is_array($theme['groups'])) {
+        foreach ($theme['groups'] as $skin_name => $options) {
           if ($skin_name == '_additional' && !user_access('edit advanced skin settings')) {
             // This user doesn't have access to alter these options.
             continue;
diff --git a/skinr_ui.module b/skinr_ui.module
index 4016c48..e6eaf9f 100644
--- a/skinr_ui.module
+++ b/skinr_ui.module
@@ -457,6 +457,11 @@ function skinr_ui_form_alter(&$form, $form_state, $form_id) {
           $form['skinr_settings'][$module . '_group'][$theme->name]['#attributes'] = array('class' => array('skinr-ui-current-theme'));
           $form['skinr_settings'][$module . '_group'][$theme->name]['#weight'] = -10;
         }
+        
+        // Add vertical_tabs inside of each theme's fieldset.
+        $form['skinr_settings'][$module . '_group'][$theme->name]['groups'] = array(
+          '#type' => 'vertical_tabs',
+        );
 
         // Create individual widgets for each skin.
         foreach ($skin_infos as $skin_name => $skin_info) {
@@ -511,26 +516,26 @@ function skinr_ui_form_alter(&$form, $form_state, $form_id) {
             }
           }
           if (empty($skin_info['group']) || empty($groups[$skin_info['group']])) {
-            $form['skinr_settings'][$module . '_group'][$theme->name][$skin_name] = $field;
+            $form['skinr_settings'][$module . '_group'][$theme->name]['groups'][$skin_name] = $field;
           }
           else {
-            if (!isset($form['skinr_settings'][$module . '_group'][$theme->name][$skin_info['group']])) {
+            if (!isset($form['skinr_settings'][$module . '_group'][$theme->name]['groups'][$skin_info['group']])) {
               $group = $groups[$skin_info['group']];
-              $form['skinr_settings'][$module . '_group'][$theme->name][$skin_info['group']] = array(
+              $form['skinr_settings'][$module . '_group'][$theme->name]['groups'][$skin_info['group']] = array(
                 '#type' => 'fieldset',
                 '#title' => t($group['title']),
                 '#description' => t($group['description']),
                 '#weight' => isset($group['weight']) ? $group['weight'] : NULL,
               );
             }
-            $form['skinr_settings'][$module . '_group'][$theme->name][$skin_info['group']][$skin_name] = $field;
+            $form['skinr_settings'][$module . '_group'][$theme->name]['groups'][$skin_info['group']][$skin_name] = $field;
           }
         }
 
         // Check for access.
         if (skinr_handler('access_handler', 'edit advanced skin settings', $form_settings['access_handler'], $form, $form_state)) {
           $skin_name = '_additional';
-          $form['skinr_settings'][$module . '_group'][$theme->name]['_additional'] = array(
+          $form['skinr_settings'][$module . '_group'][$theme->name]['groups']['_additional'] = array(
             '#type' => 'textfield',
             '#title' => t('CSS classes'),
             '#size' => 40,
@@ -579,12 +584,12 @@ function skinr_ui_form_validate($form, &$form_state) {
   foreach ($config as $module => $module_settings) {
     if (isset($module_settings['form'][$form_id]) && isset($form_state['values']['skinr_settings'][$module . '_group'])) {
       foreach ($form_state['values']['skinr_settings'][$module . '_group'] as $theme_name => $theme) {
-        if (isset($theme['_additional'])) {
+        if (isset($theme['groups']['_additional'])) {
           $form_settings = array_merge(skinr_config_info_default(), $module_settings['form'][$form_id]);
 
           // Validate additional classes field.
-          if (preg_match('/[^a-zA-Z0-9\-\_\s]/', $theme['_additional'])) {
-            form_set_error('skinr_settings][' . $module . '_group][' . $theme_name . '][_additional', t('Additional classes for Skinr may only contain alphanumeric characters, spaces, - and _.'));
+          if (preg_match('/[^a-zA-Z0-9\-\_\s]/', $theme['groups']['_additional'])) {
+            form_set_error('skinr_settings][' . $module . '_group][' . $theme_name . '][groups][_additional', t('Additional classes for Skinr may only contain alphanumeric characters, spaces, - and _.'));
             $error = TRUE;
           }
 
@@ -601,10 +606,10 @@ function skinr_ui_form_validate($form, &$form_state) {
       if (isset($module_settings['form'][$form_id]) && isset($form_state['values']['skinr_settings'][$module . '_group'])) {
         foreach ($form_state['values']['skinr_settings'][$module . '_group'] as $theme_name => $theme) {
           foreach ($groups as $group_name => $group) {
-            if (!empty($theme[$group_name]) && is_array($theme[$group_name])) {
-              $group_values = $theme[$group_name];
-              unset($form_state['values']['skinr_settings'][$module . '_group'][$theme_name][$group_name]);
-              $form_state['values']['skinr_settings'][$module . '_group'][$theme_name] = array_merge($form_state['values']['skinr_settings'][$module . '_group'][$theme_name], $group_values);
+            if (!empty($theme['groups'][$group_name]) && is_array($theme['groups'][$group_name])) {
+              $group_values = $theme['groups'][$group_name];
+              unset($form_state['values']['skinr_settings'][$module . '_group'][$theme_name]['groups'][$group_name]);
+              $form_state['values']['skinr_settings'][$module . '_group'][$theme_name]['groups'] = array_merge($form_state['values']['skinr_settings'][$module . '_group'][$theme_name]['groups'], $group_values);
             }
           }
         }
diff --git a/tests/skinr_ui.test b/tests/skinr_ui.test
index 5e012d6..467b122 100644
--- a/tests/skinr_ui.test
+++ b/tests/skinr_ui.test
@@ -139,7 +139,7 @@ class SkinrUIBasicTestCase extends SkinrUITestCase {
     // available.
     // Verify that we can apply the skinr_test_font skin to the block.
     $edit = array(
-      'skinr_settings[block_group][bartik][typography][skinr_test_font]' => 'font_1',
+      'skinr_settings[block_group][bartik][groups][typography][skinr_test_font]' => 'font_1',
     );
     // NULL means that we want to post to the page that is still contained in
     // SimpleTest's internal browser; i.e., the page of the path above. Instead
@@ -164,7 +164,7 @@ class SkinrUIBasicTestCase extends SkinrUITestCase {
   function testSkinAdditionalEdit() {
     // Verify that we can apply additional CSS classes.
     $edit = array(
-      'skinr_settings[block_group][bartik][_additional]' => 'additional',
+      'skinr_settings[block_group][bartik][groups][_additional]' => 'additional',
     );
     $this->drupalPost('admin/appearance/skinr/edit/nojs/block/system__user-menu/configure', $edit, t('Save'));
 
@@ -178,7 +178,7 @@ class SkinrUIBasicTestCase extends SkinrUITestCase {
 
     // Verify that the additional CSS classes field is not enabled.
     $this->drupalGet('admin/appearance/skinr/edit/nojs/block/system__user-menu/configure');
-    $this->assertNoFieldByName('skinr_settings[block_group][bartik][_additional]', NULL, 'Additional CSS classes field is not enabled for this user.');
+    $this->assertNoFieldByName('skinr_settings[block_group][bartik][groups][_additional]', NULL, 'Additional CSS classes field is not enabled for this user.');
 
     // Save form when additional CSS classes is not set.
     $edit = array();
