diff --git theme/viewfield.theme.inc theme/viewfield.theme.inc
index b3eda44..693c584 100644
--- theme/viewfield.theme.inc
+++ theme/viewfield.theme.inc
@@ -87,39 +87,17 @@ function _viewfield_get_view_args($vargs, $entity_type, $entity) {
     }
 
     $replacing_tokens = TRUE;
-    $token_data = array($entity_type => $entity);
-    $entity_loaded = FALSE;
+
+    list($entity_id) = entity_extract_ids($entity_type, $entity);
+    $entities = entity_load($entity_type, array($entity_id));
+    $token_data = array($entity_type => $entities[$entity_id]);
+
     foreach ($args as $key => $value) {
-      // Load the full entity only when required.
-      if (!$entity_loaded && _viewfield_token_requires_load($value, $entity_type)) {
-        list($entity_id) = entity_extract_ids($entity_type, $entity);
-        $entities = entity_load($entity_type, array($entity_id));
-        $token_data = array($entity_type => $entities[$entity_id]);
-        $entity_loaded = TRUE;
-      }
       $args[$key] = token_replace($value, $token_data);
     }
+
     $replacing_tokens = FALSE;
   }
   return $args;
 }
 
-/**
- *  Detect if a token requires a full entity to be loaded.
- *
- *  We conservatively require a load if a token refers to the entity type but
- *  the token key is not the entity id. For example, if the $entity_type == '
- *  node' and $entity_id_key == 'nid', we are searching for tokens of the
- *  form [node:some-key] where some-key != 'nid'.
- *  Global tokens (e.g., [current-user:uid]) never require entity loading.
- */
-function _viewfield_token_requires_load($text, $entity_type) {
-  $entity_info = entity_get_info($entity_type);
-  $entity_id_key = $entity_info['entity keys']['id'];
-  $pattern = '/^\[' . $entity_type . ':(.*)\]$/';
-  if (preg_match($pattern, $text, $matches)) {
-    return ($entity_id_key !== $matches[1]);
-  }
-  return FALSE;
-}
-
