diff --git a/link.info b/link.info
index 016b799..0a7d804 100644
--- a/link.info
+++ b/link.info
@@ -15,6 +15,7 @@ files[] = tests/link.token.test
 files[] = tests/link.validate.test
 
 ; Views Handlers
+files[] = views/link_views_handler_field_linkfield.inc
 files[] = views/link_views_handler_argument_target.inc
 files[] = views/link_views_handler_filter_protocol.inc
 
diff --git a/views/link.views.inc b/views/link.views.inc
index 27d5182..991fa57 100644
--- a/views/link.views.inc
+++ b/views/link.views.inc
@@ -24,6 +24,19 @@
 }*/
 
 /**
+ * Implements hook_field_views_data_views_data_alter().
+ *
+ * Add extra tokens.
+ */
+function link_field_views_data_views_data_alter(&$data, $field) {
+  $field_name = $field['field_name'];
+  $data_key = 'field_data_' . $field_name;
+
+  // Add special handler to base field
+  $data[$data_key][$field_name]['field']['handler'] = 'LinkfieldHandlerFieldLinkfield';
+}
+
+/**
  * Return CCK Views data for the link_field_settings($op == 'views data').
  *
  * @TODO: Is there some way to tell views I have formatters for it?
diff --git a/views/link_views_handler_field_linkfield.inc b/views/link_views_handler_field_linkfield.inc
new file mode 100644
index 0000000..af29f2e
--- /dev/null
+++ b/views/link_views_handler_field_linkfield.inc
@@ -0,0 +1,45 @@
+<?php
+/**
+ * Contains the Link attributes field handler.
+ */
+
+class LinkfieldHandlerFieldLinkfield extends views_handler_field_field {
+
+  /**
+   * Add additional tokens
+   */
+  function add_self_tokens(&$tokens, $item) {
+    parent::add_self_tokens($tokens, $item);
+    $tokenvalue='';
+    if (isset($item['raw'])) {
+      // If $item['raw'] is an array then we can use as is, if it's an object
+      // we cast it to an array, if it's neither, we can't use it. Same for
+      // $item['raw']['attributes']
+      $raw=$item['raw'];
+      if (is_object($raw)) $raw=(array)($raw);
+      if (is_array($raw) && isset($raw['attributes'])) {
+        $attributes=$raw['attributes'];
+        if (is_object($attributes)) $attributes=(array)($attributes);
+        if (is_array($attributes) && isset($attributes['target'])) {
+          $target=$attributes['target'];
+          if (is_scalar($target)) {
+            // Use filter_xss_admin because it's user data and we can't be sure it is safe.
+            $tokenvalue=filter_xss_admin($target);
+          }
+        }
+      }
+    }
+    $tokens['['.$this->options['id'].'-target]']=$tokenvalue;
+  }
+
+  /**
+   * Document any special tokens this field might use for itself.
+   *
+   * @see add_self_tokens() for details.
+   */
+  function document_self_tokens(&$tokens) {
+    parent::document_self_tokens($tokens);
+    $tokens['['.$this->options['id'].'-target' . ']'] = t('Link Target.');
+  }
+
+}
