diff --git a/fasttoggle.admin.inc b/fasttoggle.admin.inc
index 97b96df..7696021 100644
--- a/fasttoggle.admin.inc
+++ b/fasttoggle.admin.inc
@@ -83,12 +83,17 @@ function fasttoggle_settings_form() {
     '#access' => user_access('administer fasttoggle'),
   );
 
+  $options = array('status' => t('Status <small>(unblocked/blocked)</small>'));
+  foreach (module_invoke_all('fasttoggle_labels', FASTTOGGLE_LABEL_STATUS) as $key => $labels) {
+    if (substr($key, 0, 11) == 'user_field:') {
+      $options[substr($key, 5)] = substr($key, 11) . ' <small>('. check_plain(implode('/', $labels)) . ')</small>';
+    }
+  }
+
   $form['users']['fasttoggle_user_settings'] = array(
     '#type' => 'checkboxes',
     '#title' => t('Available settings'),
-    '#options' => array(
-      'status' => t('Status <small>(unblocked/blocked)</small>'),
-    ),
+    '#options' => $options,
     '#default_value' => array_keys(array_filter(variable_get('fasttoggle_user_settings', array('status' => TRUE)))),
   );
 
diff --git a/fasttoggle.module b/fasttoggle.module
index 6d489fc..b8d3866 100644
--- a/fasttoggle.module
+++ b/fasttoggle.module
@@ -41,7 +41,7 @@ define('FASTTOGGLE_FORMAT_FORM', 0x0002);
 function fasttoggle_menu() {
   $items = array();
 
-  $items['admin/settings/fasttoggle'] = array(
+  $items['admin/config/fasttoggle'] = array(
     'title' => 'Fasttoggle',
     'description' => 'Configure what fast toggling options are available.',
     'page callback' => 'drupal_get_form',
@@ -110,15 +110,13 @@ function fasttoggle_permission() {
  * Add togglable links to user pages.
  */
 function fasttoggle_user_view($account, $view_mode, $langcode) {
-  $settings = variable_get('fasttoggle_user_settings', array('status' => TRUE));
-
-  if ($settings['status'] && (user_access('administer users') || user_access('moderate users'))) {
-    $link = array_shift(fasttoggle_link('user', $account, TRUE));
-    if ($link) {
-      $account->content['fasttoggle'] = array(
-        '#markup' => t('Status') . ': ' . l($link['title'], $link['href'], $link),
-      );
-    }
+  $links = fasttoggle_link('user', $account, TRUE);
+  if ($links) {
+    $account->content['fasttoggle'] = array(
+     '#theme' => 'links',
+     '#links' => $links,
+     '#attributes' => array('class' => array('links', 'inline')),
+    );
   }
 }
 
@@ -253,6 +251,11 @@ function fasttoggle_fasttoggle_options($type, $obj = NULL) {
       if (($obj->uid != 1 || $allow_u1) && $settings['status'] && (user_access('administer users') || user_access('moderate users'))) {
         $return['status'] = _fasttoggle_get_label('user_status');
       }
+      foreach (module_invoke_all('fasttoggle_labels', FASTTOGGLE_LABEL_ACTION) as $key => $labels) {
+        if (substr($key, 0, 11) == 'user_field:') {
+          $return[substr($key, 5)] = $labels;
+        }
+      }
       break;
     case 'comment': // $obj = comment
       // Get an array with all enabled fast toggle links
@@ -351,7 +354,15 @@ function fasttoggle_link($type, $obj = NULL, $teaser = FALSE) {
       // use enables adding of user links to a user profile.
       case 'user':
         foreach (array_keys($options) as $key) {
-          $links['fasttoggle_' . $key] = fasttoggle($options[$key][intval($obj->$key)], 'user/' . $obj->uid . '/toggle/' . $key, FASTTOGGLE_FORMAT_LINK_ARRAY, $key . '_' . $obj->uid, 'fasttoggle-status-user-' . $obj->uid . '-' . $key . '-' . $obj->$key);
+          if (substr($key, 0, 6) == 'field:') {
+            $items = field_get_items('user', $obj, substr($key, 6));
+            $keys = array_keys($options[$key]);
+            $value = $items && isset($items[0]['value']) ? $items[0]['value'] : $keys[0];
+          }
+          else {
+            $value = intval($obj->$key);
+          }
+          $links['fasttoggle_' . $key] = fasttoggle($options[$key][$value], 'user/' . $obj->uid . '/toggle/' . $key, FASTTOGGLE_FORMAT_LINK_ARRAY, $key . '_' . $obj->uid, 'fasttoggle-status-user-' . $obj->uid . '-' . $key . '-' . $value);
         }
         break;
     }
@@ -386,6 +397,22 @@ function fasttoggle_fasttoggle_labels($style) {
       );
       break;
   }
+  foreach (field_info_instances('user', 'user') as $instance) {
+    $field = field_info_field($instance['field_name']);
+    if ($field['module'] == 'list' && count($field['settings']['allowed_values']) == 2) {
+      $index = 'user_field:'. $field['field_name'];
+      if ($style == FASTTOGGLE_LABEL_ACTION) {
+        $keys = array_keys($field['settings']['allowed_values']);
+        $labels[$index] = array(
+          $keys[0] => t('Switch to @label', array('@label' => $field['settings']['allowed_values'][1])),
+          $keys[1] => t('Switch to @label', array('@label' => $field['settings']['allowed_values'][0])),
+        );
+      }
+      else {
+        $labels[$index] = $field['settings']['allowed_values'];
+      }
+    }
+  }
 
   return $labels;
 }
diff --git a/fasttoggle.toggle.inc b/fasttoggle.toggle.inc
index 2c2d7e6..d21d5ff 100644
--- a/fasttoggle.toggle.inc
+++ b/fasttoggle.toggle.inc
@@ -70,7 +70,6 @@ function fasttoggle_node_option_confirm($form, $form_state, $node, $option) {
   );
 }
 
-
 /**
  * Menu callback. Toggle the status of a user if the action is confirmed via
  * POST. Otherwise, display a confirmation form.
@@ -81,10 +80,22 @@ function fasttoggle_user_option($user, $option) {
   // Check if the action is valid. This is essential to ensure the user has
   // access to the action.
   if (isset($options[$option]) && isset($_GET['token']) && drupal_valid_token($_GET['token'], $option . '_' . $user->uid, TRUE)) {
+    if (substr($option, 0, 6) == 'field:') {
+      $field_name = substr($option, 6);
+      $field = field_info_field($field_name);
+      $keys = array_keys($field['settings']['allowed_values']);
+      $items = field_get_items('user', $user, $field_name);
+      $old_value = $items && isset($items[0]['value']) ? $items[0]['value'] : $keys[0];
+      $new_value = $old_value == $keys[0] ? $keys[1] : $keys[0];
+      $array[$field_name][LANGUAGE_NONE][0]['value'] = $new_value;
+    }
+    else {
+      $old_value = $user->$option;
+      $new_value = intval(1 - $user->$option);
+      $array = array($option => $new_value);
+    }
     if ((isset($_POST['confirm']) && $_POST['confirm']) || (isset($_POST['js']) && $_POST['js'])) {
-      $oldClass = 'fasttoggle-status-user-' . $user->uid . '-' . $option . '-' . $user->$option;
-      $array = array($option => !$user->$option);
-      $newClass = 'fasttoggle-status-user-' . $user->uid . '-' . $option . '-' . (1 - $user->$option);
+      $oldClass = 'fasttoggle-status-user-' . $user->uid . '-' . $option . '-' . $old_value;
       $user = user_save($user, $array);
 
       // Let other modules respond.
@@ -93,9 +104,10 @@ function fasttoggle_user_option($user, $option) {
       // Output the new option for the updated link text on AJAX changes
       if (isset($_POST['js']) && $_POST['js']) {
         drupal_add_http_header('Content-Type', 'text/javascript; charset=utf-8');
-        $path = check_plain($_SERVER['SCRIPT_URL']);
+        $path = base_url() . $_GET['q'];
+        $newClass = 'fasttoggle-status-user-' . $user->uid . '-' . $option . '-' . $new_value;
         echo ajax_render(array(
-          ajax_command_replace('.' . $oldClass, fasttoggle($options[$option][intval($user->$option)], substr($path, 1), FASTTOGGLE_FORMAT_HTML, $option . '_' . $user->uid, $newClass)),
+          ajax_command_replace('.' . $oldClass, fasttoggle($options[$option][$new_value], $path, FASTTOGGLE_FORMAT_HTML, $option . '_' . $user->uid, $newClass)),
         ));
         exit;
       }
@@ -108,7 +120,7 @@ function fasttoggle_user_option($user, $option) {
       // no AJAX was involved. That means, we need a confirmation form so that
       // we get a POST form.
       $labels = _fasttoggle_get_label('user_' . $option, FASTTOGGLE_LABEL_STATUS);
-      return drupal_get_form('fasttoggle_user_option_confirm', $user, $labels[intval(!$user->$option)]);
+      return drupal_get_form('fasttoggle_user_option_confirm', $user, $labels[$new_value]);
     }
   }
   else {
