diff --git a/hide_vtabs.inc b/hide_vtabs.inc
new file mode 100644
index 0000000..c06192e
--- /dev/null
+++ b/hide_vtabs.inc
@@ -0,0 +1,43 @@
+<?php
+/**
+ * @file
+ * Helper functions to handle role information.
+ */
+
+/**
+ * Get which roles are selected to mark the default checkboxes on form load.
+ *
+ * @param string $node_type
+ *   Type of the current content type.
+ * @param array $roles
+ *   An array whose keys are the role names.
+ *
+ * @return array
+ *   Returns the array with the previously selected roles ID.
+ */
+function _hide_vtabs_default_roles_content_type($node_type, $roles) {
+  $default_roles = array();
+  foreach ($roles as $role_name) {
+    $role_value = variable_get('hide_vtab_node_' . $node_type . '_' . str_replace(' ', '_', $role_name));
+    if ((isset($role_value)) && ($role_value > 0)) {
+      $role = user_role_load_by_name($role_name);
+      $default_roles[] = $role->rid;
+    }
+  }
+  return $default_roles;
+}
+
+/**
+ * Retrieve role name from role ID (rid).
+ *
+ * @param string $rid
+ *   Role ID value.
+ *
+ * @return array
+ *   Returns the role name.
+ */
+function _hide_vtabs_retrieve_role_name($rid) {
+  $role = user_role_load($rid);
+  $role_name = str_replace(' ', '_', $role->name);
+  return $role_name;
+}
diff --git a/hide_vtabs.module b/hide_vtabs.module
index a0c478a..44876fb 100644
--- a/hide_vtabs.module
+++ b/hide_vtabs.module
@@ -4,6 +4,8 @@
  * Handle the display of vertical tabs on a per content type basis.
  */
 
+module_load_include('inc', 'hide_vtabs');
+
 define('HIDE_VTAB_STATUS_HIDDEN', 0);
 define('HIDE_VTAB_STATUS_ENABLED', 1);
 define('HIDE_VTAB_STATUS_REVISION_ONLY', 2);
@@ -25,6 +27,7 @@ function hide_vtabs_permission() {
 function hide_vtabs_form_node_type_form_alter(&$form, &$form_state) {
   $node_type = $form['#node_type']->type;
 
+  $user_options = user_roles();
   $options = array(
     HIDE_VTAB_STATUS_ENABLED => 'Show vertical tabs',
     HIDE_VTAB_STATUS_HIDDEN => 'Hide vertical tabs',
@@ -46,6 +49,20 @@ function hide_vtabs_form_node_type_form_alter(&$form, &$form_state) {
     '#options' => $options,
     '#description' => t('Options available for vertical tabs visibility. "Show revision only" option will become a fieldset.'),
   );
+  $form['hide_vtabs']['vtabs_roles'] = array(
+    '#type' => 'checkboxes',
+    '#title' => 'User roles',
+    '#default_value' => _hide_vtabs_default_roles_content_type($node_type, $user_options),
+    '#options' => $user_options,
+    '#states' => array(
+      'visible' => array(
+        ':input[name="vtabs_status"]' => array(
+          'value' => HIDE_VTAB_STATUS_HIDDEN,
+        ),
+      ),
+    ),
+    '#description' => t('Choose which roles will have the tabs hidden.'),
+  );
 
   $form['#submit'][] = 'hide_vtabs_node_type_submit';
 }
@@ -56,12 +73,18 @@ function hide_vtabs_form_node_type_form_alter(&$form, &$form_state) {
 function hide_vtabs_node_type_submit(&$form, &$form_state) {
   $node_type = $form['#node_type']->type;
   variable_set('hide_vtab_node_' . $node_type . '_status', $form_state['values']['vtabs_status']);
+  foreach ($form_state['values']['vtabs_roles'] as $rid => $selection) {
+    $role_name = _hide_vtabs_retrieve_role_name($rid);
+    variable_set('hide_vtab_node_' . $node_type . '_' . $role_name, $selection);
+  }
 }
 
 /**
  * Implements hook_form_BASE_FORM_ID_alter().
  */
 function hide_vtabs_form_node_form_alter(&$form, &$form_state) {
+  global $user;
+  $hide_tabs = FALSE;
   $node_type = $form['type']['#value'];
   $vtabs_status = variable_get('hide_vtab_node_' . $node_type . '_status', HIDE_VTAB_STATUS_ENABLED);
 
@@ -70,11 +93,15 @@ function hide_vtabs_form_node_form_alter(&$form, &$form_state) {
       unset($form['revision_information']['#group']);
       $form['revision_information']['#collapsible'] = FALSE;
       $form['revision_information']['#collapsed'] = TRUE;
+      $hide_tabs = TRUE;
     }
 
-    foreach ($form as $key => $value) {
-      if (is_array($form[$key]) && isset($form[$key]['#group'])) {
-        $form[$key]['#access'] = FALSE;
+    $vtabs_roles = _hide_vtabs_default_roles_content_type($node_type, $user->roles);
+    if ($hide_tabs || $vtabs_roles) {
+      foreach ($form as $key => $value) {
+        if (is_array($form[$key]) && isset($form[$key]['#group'])) {
+          $form[$key]['#access'] = FALSE;
+        }
       }
     }
   }
