diff --git a/entity_token.tokens.inc b/entity_token.tokens.inc
index f9ec7f7..1645eb2 100644
--- a/entity_token.tokens.inc
+++ b/entity_token.tokens.inc
@@ -213,11 +213,11 @@ function entity_token_tokens($type, $tokens, array $data = array(), array $optio
     }
   }
   // Add support for evaluating tokens for "list<type"> types.
-  elseif ($item_token_type = entity_property_list_extract_type($type)) {
+  elseif ($entity_type = entity_property_list_extract_type($type)) {
     foreach ($tokens as $name => $original) {
       // Care about getting entries of a list.
       if (is_numeric($name)) {
-        $wrapper = !isset($wrapper) ? _entity_token_wrap_data($type, "list<$token_types[$item_token_type]>", $data[$type], $options) : $wrapper;
+        $wrapper = !isset($wrapper) ? _entity_token_wrap_data($type, "list<$entity_type>", $data[$type], $options) : $wrapper;
         try {
           $replacement = _entity_token_get_token($wrapper->get($name), $options);
           if (isset($replacement)) {
@@ -234,8 +234,9 @@ function entity_token_tokens($type, $tokens, array $data = array(), array $optio
         $delta = $parts[0];
 
         if (is_numeric($delta) && $chained_tokens = token_find_with_prefix($tokens, $delta)) {
-          $wrapper = !isset($wrapper) ? _entity_token_wrap_data($type, "list<$token_types[$item_token_type]>", $data[$type], $options) : $wrapper;
+          $wrapper = !isset($wrapper) ? _entity_token_wrap_data($type, "list<$entity_type>", $data[$type], $options) : $wrapper;
           try {
+            $item_token_type = array_search($entity_type, $token_types);
             $replacements += token_generate($item_token_type, $chained_tokens, array($item_token_type => $wrapper->get($delta)->value()), $options);
           }
           catch (EntityMetadataWrapperException $e) {
