diff --git a/link.inc b/link.inc
index f702751..53bef47 100644
--- a/link.inc
+++ b/link.inc
@@ -166,9 +166,9 @@ function _link_sanitize(&$item, $delta, &$field, &$node) {
   if ($type != LINK_EXTERNAL && $type != LINK_NEWS && strpos($item['attributes']['rel'], 'nofollow') !== FALSE) {
     $item['attributes']['rel'] = str_replace('nofollow', '', $item['attributes']['rel']);
   }
-  // Some old field data may have $item['#item']['attributes']['rel'] as an array, which will cause errors:
-  if (is_array($item['#item']['attributes']['rel'])) {
-    unset($item['#item']['attributes']['rel']);
+  // Some old field data may have $item['attributes']['rel'] as an array, which will cause errors:
+  if (is_array($item['attributes']['rel'])) {
+    unset($item['attributes']['rel']);
   }

   // Handle "title" link attribute
diff --git a/link.module b/link.module
index 4098ae0..7a5a6dd 100644
--- a/link.module
+++ b/link.module
@@ -205,35 +205,37 @@ function link_content_is_empty($item, $field) {
  * Implementation of hook_field().
  */
 function link_field($op, &$node, $field, &$items, $teaser, $page) {
-  module_load_include('inc', 'link');
-  switch ($op) {
-    case 'load':
-      return _link_load($field, $items);
-
-    case 'validate':
-      $optional_field_found = FALSE;
-      if ($field['validate_url'] !== 0 || is_null($field['validate_url']) || !isset($field['validate_url'])) {
-        foreach ($items as $delta => $value) {
-          _link_validate($items[$delta], $delta, $field, $node, $optional_field_found);
+  if (!empty($field['type']) && $field['type'] == 'link') {
+    module_load_include('inc', 'link');
+    switch ($op) {
+      case 'load':
+        return _link_load($field, $items);
+
+      case 'validate':
+        $optional_field_found = FALSE;
+        if (!isset($field['validate_url']) || is_null($field['validate_url']) || $field['validate_url'] !== 0) {
+          foreach ($items as $delta => $value) {
+            _link_validate($items[$delta], $delta, $field, $node, $optional_field_found);
+          }
         }
-      }

-      if ($field['url'] == 'optional' && $field['title'] == 'optional' && $field['required'] && !$optional_field_found) {
-        form_set_error($field['field_name'] .'][0][title', t('At least one title or URL must be entered.'));
-      }
-      break;
+        if ($field['url'] == 'optional' && $field['title'] == 'optional' && $field['required'] && !$optional_field_found) {
+          form_set_error($field['field_name'] .'][0][title', t('At least one title or URL must be entered.'));
+        }
+        break;

-    case 'presave':
-      foreach ($items as $delta => $value) {
-        _link_process($items[$delta], $delta, $field, $node);
-      }
-      break;
+      case 'presave':
+        foreach ($items as $delta => $value) {
+          _link_process($items[$delta], $delta, $field, $node);
+        }
+        break;

-    case 'sanitize':
-      foreach ($items as $delta => $value) {
-        _link_sanitize($items[$delta], $delta, $field, $node);
-      }
-      break;
+      case 'sanitize':
+        foreach ($items as $delta => $value) {
+          _link_sanitize($items[$delta], $delta, $field, $node);
+        }
+        break;
+    }
   }
 }

@@ -430,8 +432,9 @@ function link_token_values($type, $object = NULL) {
   if ($type == 'field') {
     $item = $object[0];

+    $tokens = array();
     $tokens['url'] = $item['url'];
-    $tokens['title'] = $item['title'];
+    $tokens['title'] = isset($item['title']) ? $item['title'] : '';
     $tokens['view'] = isset($item['view']) ? $item['view'] : '';
     $host = @parse_url($item['url']);
     $tokens['host'] = isset($host['host']) ? $host['host'] : '';
diff --git a/link.theme.inc b/link.theme.inc
index 1687626..557160e 100644
--- a/link.theme.inc
+++ b/link.theme.inc
@@ -31,7 +31,7 @@ function theme_link($element) {
       $element['url']['#title'] = $element['#title'] .' '. $element['url']['#title'];
       $element['title']['#title'] = $element['#title'] .' '. $element['title']['#title'];
     }
-    elseif ($element['url']) {
+    elseif (!empty($element['url']) && isset($element['#title'])) {
       $element['url']['#title'] = $element['#title'];
     }
   }
