diff --git a/subscriptions.admin.inc b/subscriptions.admin.inc
index 09c38b9..023c133 100644
--- a/subscriptions.admin.inc
+++ b/subscriptions.admin.inc
@@ -322,7 +322,7 @@ function subscriptions_page_form($form, &$form_state, $account, $stype) {
   }
   else {
     subscriptions_suspended(arg(1), TRUE);
-    //if (variable_get('subscriptions_hide_overview_page', 0)) {
+    //if (variable_get('subscriptions_overview_page', 'default') == 'hidden') {
     //  $dummy_form_state = NULL;
     //  $form = subscriptions_user_suspend_form($dummy_form_state, $account);
     //}
@@ -433,6 +433,66 @@ function subscriptions_page_user_overview(array $form, array &$form_state, $acco
   return $form;
 }
 
+
+/**
+ * Construct the combined user overview page, which displays user/UID/subscriptions.
+ *
+ * @param array $form
+ * @param array $form_state
+ * @param object $account
+ *   Must be a valid user account from user_load().
+ *
+ * @return array
+ */
+function subscriptions_page_user_combined(array $form, array &$form_state, $account) {
+  foreach (subscriptions_types() as $stype => $data) {
+    // Only add the subform if there was a settings page and if the user has
+    // access.
+    if (!empty($data['page']) && (empty($data['access']) || user_access($data['access']))) {
+      $sub_form = array();
+      $sub_form_state = array();
+      $sub_form = subscriptions_page_form($sub_form, $sub_form_state, $account, $stype);
+      $form[$stype] = $sub_form;
+      $form[$stype]['#type'] = 'fieldset';
+      $form[$stype]['#title'] = t($data['title']);
+      $form[$stype]['#weight'] = $data['weight'];
+      $form[$stype]['#collapsible'] = TRUE;
+      $form[$stype]['#collapsed'] = FALSE;
+      $form[$stype]['submit']['#access'] = FALSE;
+    }
+  }
+  $form['#submit'][] = 'subscriptions_page_user_combined_submit';
+
+  $form['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Save subscriptions'),
+  );
+
+  $form['separator'] = array(
+    '#markup' => '<h3>' . t('General settings') . '</h3>',
+  );
+
+  subscriptions_user_suspend_form($form, $form_state, $account);
+  $form = subscriptions_user_settings_form($form, $form_state, $account);
+
+  drupal_set_title(t('Subscriptions'));
+  return $form;
+}
+
+/**
+ * Submission callback.
+ */
+function subscriptions_page_user_combined_submit(array $form, array &$form_state) {
+  foreach ($form_state['values'] as $key => $value) {
+    if (is_array($value)) {
+      $temp_form_state = $form_state;
+      $temp_form_state['values'] = $form_state['values'][$key];
+      $temp_form_state['values']['op'] = $temp_form_state['values']['submit'];
+      subscriptions_page_form_submit($form[$key], $temp_form_state);
+    }
+  }
+}
+
 /**
  * Returns the form definition for the suspend part of the overview page.
  *
@@ -612,11 +672,17 @@ function subscriptions_user_settings_form(array $form, array &$form_state, $acco
         )
       ) . '</div>',
     );
-    $form['settings']['info']['hide_overview_page'] = array(
-      '#type'          => 'checkbox',
-      '#title'         => t('Hide the %Overview page from your users', array('%Overview' => t('Overview'))),
-      '#default_value' => variable_get('subscriptions_hide_overview_page', 0),
-      '#description'   => t("If you hide this page, your users won't be able to change any of these settings. The default is OFF.") . '<br />' . t('Also, you must give your users the %subscribe_to_content permission, so that they have access to the %Pages_Threads page!', array('%subscribe_to_content' => $tr('subscribe to content'), '%Pages_Threads' => $tr('Pages/Threads'))),
+    $options = array(
+      'default' => t('Show the overview page and individual settings pages (default).'),
+      'hidden' => t('Hide the %Overview page from your users but show individual pages.', array('%Overview' => t('Overview'))),
+      'combined' => t('Show a single page that combines all user settings in one.'),
+    );
+    $form['settings']['info']['subscriptions_overview_page'] = array(
+      '#type'          => 'radios',
+      '#title'         => t('User subscriptions page'),
+      '#default_value' => variable_get('subscriptions_overview_page', 'default'),
+      '#description'   => t('Control how the User Subscriptions pages (user/:user/subscriptions, etc) work. ') . '<br />' . t('Also, you must give your users the %subscribe_to_content permission, so that they have access to the %Pages_Threads page!', array('%subscribe_to_content' => $tr('subscribe to content'), '%Pages_Threads' => $tr('Pages/Threads'))),
+      '#options'       => $options,
     );
   }
   $form['settings']['autosub'] = array(
@@ -796,8 +862,8 @@ function _subscriptions_user_settings_form_submit(array $form, array &$form_stat
     }
     else {
       $uid = -DRUPAL_AUTHENTICATED_RID;
-      if (variable_get('subscriptions_hide_overview_page', 0) != $form_state['values']['hide_overview_page']) {
-        variable_set('subscriptions_hide_overview_page', $form_state['values']['hide_overview_page']);
+      if (variable_get('subscriptions_overview_page', 'default') != $form_state['values']['subscriptions_overview_page']) {
+        variable_set('subscriptions_overview_page', $form_state['values']['subscriptions_overview_page']);
         menu_rebuild();
       }
     }
diff --git a/subscriptions.install b/subscriptions.install
index d2b47e4..91abed2 100644
--- a/subscriptions.install
+++ b/subscriptions.install
@@ -153,7 +153,7 @@ function subscriptions_uninstall() {
   variable_del('subscriptions_form_in_block');
   variable_del('subscriptions_form_link_only');
   variable_del('subscriptions_generate_full_node');
-  variable_del('subscriptions_hide_overview_page');
+  variable_del('subscriptions_overview_page');
   variable_del('subscriptions_link_teaser');
   variable_del('subscriptions_omitted_taxa');
   variable_del('subscriptions_restricted_taxa');
@@ -329,3 +329,24 @@ function subscriptions_update_7002() {
   }
 }
 
+/**
+ * Upgrade to the new overview page setting.
+ */
+function subscriptions_update_7003() {
+  // If the existing settings were to hide the overview page, set the new
+  // variable accordingly.
+  $existing = variable_get('subscriptions_hide_overview_page', 0);
+  if ($existing) {
+    variable_set('subscriptions_overview_page', 'hidden');
+  }
+  // Otherwise just default to showing the normal overview page.
+  else {
+    variable_set('subscriptions_overview_page', 'default');
+  }
+
+  // Update the menus accordingly.
+  menu_rebuild();
+
+  // Delete the existing variable.
+  variable_del('subscriptions_hide_overview_page');
+}
diff --git a/subscriptions.module b/subscriptions.module
index 9dd1abc..694a158 100644
--- a/subscriptions.module
+++ b/subscriptions.module
@@ -102,9 +102,14 @@ function subscriptions_menu() {
     'access arguments' => array(1),
   );
 
-  $hide_overview_page = variable_get('subscriptions_hide_overview_page', 0);
-  $minimum_weight = 0;
-  if (!$hide_overview_page) {
+  $overview_page = variable_get('subscriptions_overview_page', 'default');
+
+  // Optionally replace the overview page with a combined settings page.
+  if ($overview_page == 'combined') {
+    $items['user/%user/subscriptions']['page arguments'] = array('subscriptions_page_user_combined', 1);
+  }
+  // Preparation for the individual settings pages.
+  elseif ($overview_page == 'default') {
     $items['user/%user/subscriptions/overview'] = array(
       'type' => MENU_DEFAULT_LOCAL_TASK,
       'title' => 'Overview',
@@ -137,8 +142,10 @@ function subscriptions_menu() {
       'access arguments' => array($data['access']),
     );
 
-    if (empty($data['page'])) {
-      continue;  // no page
+    // No separate settings page for this type, or the combined overview page
+    // is being used.
+    if (empty($data['page']) || $overview_page == 'combined') {
+      continue;
     }
     $items['user/%user/subscriptions/' . $stype] = array(
       'title' => $data['title'],
@@ -151,7 +158,7 @@ function subscriptions_menu() {
       'weight' => $weight,
     );
 
-    if ($hide_overview_page && $minimum_weight == $weight) {
+    if ($overview_page == 'hidden' && $minimum_weight == $weight) {
       // Install the first subscription type page as the default task.
       $items['user/%user/subscriptions/' . $stype]['type'] = MENU_DEFAULT_LOCAL_TASK;
       $default_item = $items['user/%user/subscriptions/' . $stype];
@@ -162,7 +169,7 @@ function subscriptions_menu() {
         'access callback' => $default_item['access callback'],
         'access arguments' => $default_item['access arguments'],
       ));
-      $hide_overview_page = FALSE;
+      $overview_page = 'default';
     }
 
     if ($stype == 'node') {
