diff --git a/mappers/date.inc b/mappers/date.inc
index 6cc5bcaf41380b86e1d90fe680575bbfd07096d7..3de6a69f2e5af4c15c9df1c2ec86a466adfcc940 100644
--- a/mappers/date.inc
+++ b/mappers/date.inc
@@ -59,5 +59,4 @@ function date_feeds_set_target($source, $entity, $target, $feed_element) {
     }
   }
   $feed_element->buildDateField($entity, $field_name);
-
 }
diff --git a/mappers/link.inc b/mappers/link.inc
index 28aa59a7909427ca5897422851dfc6cae918f950..45a86f7dc7f651ee2914f1bd9318472ed41be127 100644
--- a/mappers/link.inc
+++ b/mappers/link.inc
@@ -8,7 +8,7 @@
 /**
  * Implements hook_feeds_processor_targets_alter().
  *
- * @see FeedsNodeProcessor::getMappingTargets().
+ * @see FeedsProcessor::getMappingTargets()
  */
 function link_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_name) {
   foreach (field_info_instances($entity_type, $bundle_name) as $name => $instance) {
@@ -16,16 +16,18 @@ function link_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_nam
     if ($info['type'] == 'link_field') {
       if (array_key_exists('url', $info['columns'])) {
         $targets[$name . ':url'] = array(
-          'name' => t('@name URL', array('@name' => $instance['label'])),
+          'name' => t('@name: URL', array('@name' => $instance['label'])),
           'callback' => 'link_feeds_set_target',
-          'description' => t('The @label field of the node.', array('@label' => $instance['label'])),
+          'description' => t('The @label field of the entity.', array('@label' => $instance['label'])),
+          'real_target' => $name,
         );
       }
       if (array_key_exists('title', $info['columns'])) {
         $targets[$name . ':title'] = array(
-          'name' => t('@name Title', array('@name' => $instance['label'])),
+          'name' => t('@name: Title', array('@name' => $instance['label'])),
           'callback' => 'link_feeds_set_target',
-          'description' => t('The @label field of the node.', array('@label' => $instance['label'])),
+          'description' => t('The @label field of the entity.', array('@label' => $instance['label'])),
+          'real_target' => $name,
         );
       }
     }
@@ -50,31 +52,25 @@ function link_feeds_set_target($source, $entity, $target, $value) {
   }
 
   // Iterate over all values.
-  $i = 0;
-  $info = field_info_field($target);
-  list($field_name, $sub_field) = explode(':', $target);
+  list($field_name, $column) = explode(':', $target);
+  $info = field_info_field($field_name);
+
+  $field = isset($entity->$field_name) ? $entity->$field_name : array();
+  $delta = 0;
+
   foreach ($value as $v) {
+    if ($info['cardinality'] == $delta) {
+      break;
+    }
+
     if (is_object($v) && ($v instanceof FeedsElement)) {
       $v = $v->getValue();
     }
-    if (!is_array($v) && !is_object($v)) {
-      if (strstr($target, 'url')) {
-        if (isset($entity->{$field_name}['und'][$i]['title'])) {
-          $field['und'][$i]['title'] = $entity->{$field_name}['und'][$i]['title'];
-        }
-        $field['und'][$i]['url'] = $v;
-      }
-      elseif (strstr($target, 'title')) {
-        if (isset($entity->{$field_name}['und'][$i]['url'])) {
-          $field['und'][$i]['url'] = $entity->{$field_name}['und'][$i]['url'];
-        }
-        $field['und'][$i]['title'] = $v;
-      }
-    }
-    if ($info['cardinality'] == 1) {
-      break;
+
+    if (is_scalar($v)) {
+      $field['und'][$delta][$column] = $v;
+      $delta++;
     }
-    $i++;
   }
-  $entity->{$field_name} = $field;
+  $entity->$field_name = $field;
 }