diff --git a/token.module b/token.module
index faf1db2..8042703 100644
--- a/token.module
+++ b/token.module
@@ -92,16 +92,10 @@ function token_theme() {
  * Implements hook_token_values().
  */
 function token_token_values($type, $object = NULL) {
-  global $user;
   $values = array();
 
   switch ($type) {
     case 'global':
-      // Current user tokens.
-      $values['user-name']    = $user->uid ? $user->name : variable_get('anonymous', t('Anonymous'));
-      $values['user-id']      = $user->uid ? $user->uid : 0;
-      $values['user-mail']    = $user->uid ? $user->mail : '';
-
       // Site information tokens.
       $values['site-url']     = url('<front>', array('absolute' => TRUE));
       $values['site-name']    = check_plain(variable_get('site_name', t('Drupal')));
@@ -138,11 +132,6 @@ function token_token_list($type = 'all') {
   $tokens = array();
 
   if ($type == 'global' || $type == 'all') {
-    // Current user tokens.
-    $tokens['global']['user-name']    = t('The name of the currently logged in user.');
-    $tokens['global']['user-id']      = t('The user ID of the currently logged in user.');
-    $tokens['global']['user-mail']    = t('The email address of the currently logged in user.');
-
     // Site information tokens.
     $tokens['global']['site-url']     = t("The URL of the site's front page.");
     $tokens['global']['site-name']    = t('The name of the site.');
diff --git a/token_user.inc b/token_user.inc
index 9aba610..0247e54 100644
--- a/token_user.inc
+++ b/token_user.inc
@@ -14,16 +14,17 @@
  */
 
 /**
- * Implementation of hook_token_list().
+ * Implements hook_token_list() on behalf of user.module.
  */
 function user_token_list($type = 'all') {
   $tokens = array();
 
+  // User account tokens.
   if ($type == 'user' || $type == 'all') {
     $tokens['user']['user']     = t("The login name of the user account.");
     $tokens['user']['user-raw'] = t("The login name of the user account.");
     $tokens['user']['uid']      = t("The unique ID of the user account.");
-    $tokens['user']['mail']     = t("The email address of the user account.");
+    $tokens['user']['mail']     = t("The e-mail address of the user account.");
 
     $tokens['user'] += token_get_date_token_info(t("User's registration"), 'user-created-');
     $tokens['user'] += token_get_date_token_info(t("User's last login"), 'user-last-login-');
@@ -33,29 +34,29 @@ function user_token_list($type = 'all') {
     $tokens['user']['account-edit-url'] = t("The URL of the account edit page.");
   }
 
+  // Current user tokens.
+  if ($type == 'global' || $type == 'all') {
+    $tokens['global']['user-name'] = t('The name of the currently logged in user.');
+    $tokens['global']['user-id']   = t('The user ID of the currently logged in user.');
+    $tokens['global']['user-mail'] = t('The e-mail address of the currently logged in user.');
+  }
+
   return $tokens;
 }
 
 /**
- * Implementation of hook_token_values().
+ * Implemens hook_token_values() on behalf of user.module.
  */
 function user_token_values($type, $object = NULL, $options = array()) {
+  global $user;
   $values = array();
 
-  if ($type == 'user') {
-    // @todo Why do we all the current user object to be loaded?
-    $account = !empty($object) ? $object : user_load(array('uid' => $GLOBALS['user']->uid));
+  // User account tokens.
+  if ($type == 'user' && !empty($object)) {
+    $account = $object;
 
-    // Adjust for the anonymous user name.
-    if (!$account->uid && empty($account->name)) {
-      $account_name = variable_get('anonymous', 'Anonymous');
-    }
-    else {
-      $account_name = $account->name;
-    }
-
-    $values['user']     = check_plain($account_name);
-    $values['user-raw'] = $account_name;
+    $values['user-raw'] = !$account->uid && !$account->name ? variable_get('anonymous', 'Anonymous') : $account->name;
+    $values['user']     = check_plain($values['user-raw']);
     $values['uid']      = $account->uid;
     $values['mail']     = $account->uid ? $account->mail : '';
 
@@ -66,13 +67,19 @@ function user_token_values($type, $object = NULL, $options = array()) {
       $values['reg-since'] = $values['user-created-since'];
       $values['log-date'] = $values['user-last-login-small'];
       $values['log-since'] = $values['user-last-login-since'];
-      $values['date-in-tz'] = $account->uid ? format_date(time(), 'small', '', $account->timezone) : '';
+      $values['date-in-tz'] = format_date(time(), 'small', '', $account->timezone);
+      $values['account-url'] = url("user/$account->uid", array('absolute' => TRUE));
+      $values['account-edit-url'] = url("user/$account->uid/edit", array('absolute' => TRUE));
+      $values['account-edit'] = $values['account-edit-url'];
     }
-
-    $values['account-url']      = $account->uid ? url("user/$account->uid", array('absolute' => TRUE)) : '';
-    $values['account-edit-url'] = $account->uid ? url("user/$account->uid/edit", array('absolute' => TRUE)) : '';
-    $values['account-edit']     = $values['account-edit-url'];
   }
 
+  // Current user tokens.
+  if ($type == 'global') {
+    $values['user-name'] = !$user->uid && !$user->name ? variable_get('anonymous', 'Anonymous') : $user->name;
+    $values['user-id']   = $user->uid;
+    $values['user-mail'] = $user->uid ? $user->mail : '';
+   }
+
   return $values;
 }
