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..cc37b97 100644
--- a/modules/overlay/overlay.module
+++ b/modules/overlay/overlay.module
@@ -89,8 +89,8 @@ 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',
       );
 
       $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.module b/modules/user/user.module
index 821602d..314d39a 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,18 @@ 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'),
+    '#group' => (!$register ? 'user_settings' : ''),
   );
   // Only show name field on registration form or user can change own username.
   $form['account']['name'] = array(
@@ -1062,7 +1096,15 @@ 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' : ''),
+  );
+
+  $form['account_roles_status']['status'] = array(
     '#type' => 'radios',
     '#title' => t('Status'),
     '#default_value' => $status,
@@ -1083,7 +1125,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 +1146,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 +1163,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',
