diff --git a/modules/block/block.module b/modules/block/block.module
index ae4889e..6b4329a 100644
--- a/modules/block/block.module
+++ b/modules/block/block.module
@@ -571,8 +571,8 @@ function block_form_user_profile_form_alter(&$form, &$form_state) {
         '#title' => t('Personalize blocks'),
         '#description' => t('Blocks consist of content or information that complements the main content of the page. Enable or disable optional blocks using the checkboxes below.'),
         '#weight' => 3,
-        '#collapsible' => TRUE,
         '#tree' => TRUE,
+        '#group' => 'user_settings',
       );
       $form['block'] += $blocks;
     }
diff --git a/modules/contact/contact.module b/modules/contact/contact.module
index 601321b..a1afa46 100644
--- a/modules/contact/contact.module
+++ b/modules/contact/contact.module
@@ -220,7 +220,7 @@ function contact_form_user_profile_form_alter(&$form, &$form_state) {
       '#type' => 'fieldset',
       '#title' => t('Contact settings'),
       '#weight' => 5,
-      '#collapsible' => TRUE,
+      '#group' => 'user_settings',
     );
     $form['contact']['contact'] = array(
       '#type' => 'checkbox',
@@ -256,3 +256,4 @@ function contact_form_user_admin_settings_alter(&$form, &$form_state) {
     '#default_value' => variable_get('contact_default_status', 1),
   );
 }
+
diff --git a/modules/overlay/overlay.module b/modules/overlay/overlay.module
index 6d62c54..b58ed85 100644
--- a/modules/overlay/overlay.module
+++ b/modules/overlay/overlay.module
@@ -89,8 +89,14 @@ function overlay_form_user_profile_form_alter(&$form, &$form_state) {
       $form['overlay_control'] = array(
         '#type' => 'fieldset',
         '#title' => t('Administrative overlay'),
-        '#weight' => 4,
-        '#collapsible' => TRUE,
+        '#weight' => 50,
+        '#group' => 'user_settings',
+        '#attributes' => array(
+          'class' => array('user-form-administrative-overlay'),
+        ),
+        '#attached' => array(
+          'js' => array(drupal_get_path('module', 'user') . '/user.js'),
+        ),
       );
 
       $form['overlay_control']['overlay'] = array(
diff --git a/modules/system/system.module b/modules/system/system.module
index e134788..12f4113 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -1938,6 +1938,9 @@ function system_form_user_profile_form_alter(&$form, &$form_state) {
   if ($form['#user_category'] == 'account') {
     if (variable_get('configurable_timezones', 1)) {
       system_user_timezone($form, $form_state);
+      // Add the form to vertical tabs display on user account form
+      $form['timezone']['#collapsible'] = FALSE;
+      $form['timezone']['#group'] = 'user_settings';
     }
     return $form;
   }
diff --git a/modules/user/user.js b/modules/user/user.js
index 7549a30..f35c647 100644
--- a/modules/user/user.js
+++ b/modules/user/user.js
@@ -194,4 +194,23 @@ Drupal.behaviors.fieldUserRegistration = {
   }
 };
 
+Drupal.behaviors.userFieldsetSummaries = {
+  attach: function (context) {
+    $('fieldset.user-form-account-roles-status', context).drupalSetSummary(function (context) {
+      var vals = [];
+
+      $('input:checked', context).parent().each(function () {
+        vals.push(Drupal.checkPlain($.trim($(this).text())));
+      });
+
+      return vals.join(', ');
+    });
+    $('fieldset.user-form-administrative-overlay', context).drupalSetSummary(function (context) {
+      return $('.form-item-overlay input', context).is(':checked') ?
+        Drupal.t('Enabled') :
+        Drupal.t('Disabled');
+    }); 
+  }
+};
+
 })(jQuery);
diff --git a/modules/user/user.module b/modules/user/user.module
index 821602d..3cb84e1 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -196,7 +196,12 @@ function user_field_extra_fields() {
     'form' => array(
       'account' => array(
         'label' => 'User name and password',
-        'description' => t('User module account form elements'),
+        'description' => t('User module account form elements.'),
+        'weight' => -10,
+      ),
+      'account_roles_status' => array(
+        'label' => 'User role and status',
+        'description' => t('User module role and status form elements.'),
         'weight' => -10,
       ),
       'timezone' => array(
@@ -214,6 +219,26 @@ function user_field_extra_fields() {
     ),
   );
 
+  if (variable_get('user_pictures', 1) == 1) { 
+    $return['user']['user']['form'] += array(
+      'picture' => array(
+        'label' => 'User picture',
+        'description' => t('User module picture form element.'),
+        'weight' => 1,
+      ),   
+    );   
+  }
+ 
+  if (variable_get('user_signatures', 1) == 1) { 
+    $return['user']['user']['form'] += array(
+      'signature' => array(
+        'label' => 'User signature',
+        'description' => t('User module signature form element.'),
+        'weight' => 2,
+      ),   
+    );   
+  }
+
   return $return;
 }
 
@@ -983,9 +1008,17 @@ function user_account_form(&$form, &$form_state) {
 
   $form['#validate'][] = 'user_account_form_validate';
 
+  $form['user_settings'] = array(
+    '#title' => t('User settings'),
+    '#type' => 'vertical_tabs',
+    '#weight' => 50,
+  );
+
   // Account information.
   $form['account'] = array(
     '#weight' => -10,
+    '#type' => 'fieldset',
+    '#title' => t('Username and password'),
   );
   // Only show name field on registration form or user can change own username.
   $form['account']['name'] = array(
@@ -1062,7 +1095,21 @@ function user_account_form(&$form, &$form_state) {
   else {
     $status = $register ? variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL) == USER_REGISTER_VISITORS : $account->status;
   }
-  $form['account']['status'] = array(
+
+  $form['account_roles_status'] = array(
+    '#type' => 'fieldset',
+    '#title' => t('Roles and status'),
+    '#access' => $admin,
+    '#group' => (!$register ? 'user_settings' : ''),
+    '#attributes' => array(
+      'class' => array('user-form-account-roles-status'),
+    ),
+    '#attached' => array(
+      'js' => array(drupal_get_path('module', 'user') . '/user.js'),
+    ),
+  );
+
+  $form['account_roles_status']['status'] = array(
     '#type' => 'radios',
     '#title' => t('Status'),
     '#default_value' => $status,
@@ -1083,7 +1130,7 @@ function user_account_form(&$form, &$form_state) {
     '#disabled' => TRUE,
   );
   unset($roles[DRUPAL_AUTHENTICATED_RID]);
-  $form['account']['roles'] = array(
+  $form['account_roles_status']['roles'] = array(
     '#type' => 'checkboxes',
     '#title' => t('Roles'),
     '#default_value' => (!$register && isset($account->roles) ? array_keys($account->roles) : array()),
@@ -1104,6 +1151,7 @@ function user_account_form(&$form, &$form_state) {
     '#title' => t('Signature settings'),
     '#weight' => 1,
     '#access' => (!$register && variable_get('user_signatures', 0)),
+    '#group' => 'user_settings',
   );
 
   $form['signature_settings']['signature'] = array(
@@ -1120,6 +1168,7 @@ function user_account_form(&$form, &$form_state) {
     '#title' => t('Picture'),
     '#weight' => 1,
     '#access' => (!$register && variable_get('user_pictures', 0)),
+    '#group' => 'user_settings',
   );
   $form['picture']['picture'] = array(
     '#type' => 'value',
