diff --git link.module link.module
index ee6948e..ab92c87 100644
--- link.module
+++ link.module
@@ -469,10 +469,10 @@ function _link_sanitize(&$item, $delta, &$field, &$node) {
   }
 
   // Replace URL tokens.
-  if (module_exists('token') && $field['enable_tokens']) {
+  if ($field['settings']['enable_tokens']) {
     // Load the node if necessary for nodes in views.
     $token_node = isset($node->nid) ? node_load($node->nid) : $node;
-    $item['url'] = token_replace($item['url'], 'node', $token_node);
+    $item['url'] = token_replace($item['url'], array('node' => $token_node));
   }
 
   $type = link_validate_url($item['url']);
@@ -503,14 +503,14 @@ function _link_sanitize(&$item, $delta, &$field, &$node) {
     $item['title'] = $field['settings']['title_value'];
   }
   // Use the title defined by the user at the widget level.
-  else {
+  else if (isset($item['title'])) {
     $title = $item['title'];
   }
   // Replace tokens.
-  if (module_exists('token') && ($field['title'] == 'value' || $field['enable_tokens'])) {
+  if ($field['settings']['title'] == 'value' && $field['settings']['enable_tokens']) {
     // Load the node if necessary for nodes in views.
     $token_node = isset($node->nid) ? node_load($node->nid) : $node;
-    $title = filter_xss(token_replace($title, 'node', $token_node), array('b', 'br', 'code', 'em', 'i', 'img', 'span', 'strong', 'sub', 'sup', 'tt', 'u'));
+    $title = filter_xss(token_replace($title, array('node' => $token_node)), array('b', 'br', 'code', 'em', 'i', 'img', 'span', 'strong', 'sub', 'sup', 'tt', 'u'));
     $item['html'] = TRUE;
   }
   $item['display_title'] = empty($title) ? $item['display_url'] : $title;
