diff --git a/weight.module b/weight.module
index 9c4c6f1..2e3ee0b 100644
--- a/weight.module
+++ b/weight.module
@@ -179,3 +179,57 @@ function _weight_get_options($range) {

   return $options;
 }
+
+/**
+ * Implements hook_feeds_processor_targets_alter()
+ */
+function weight_feeds_processor_targets_alter(&$targets, $entity_type, $bundle_name) {
+  if ($entity_type == 'node') {
+    $fields_instances = field_info_instances($entity_type, $bundle_name);
+    foreach ($fields_instances as $field_name => $fields_instance) {
+      $field_info = field_info_field($field_name);
+      $type = $field_info['type'];
+
+      if($type == 'weight'){
+        $field_name = $fields_instance['field_name'];
+
+        $targets[$field_name] = array(
+          'name' => $fields_instance['label'],
+          'callback' => 'weight_feeds_set_target',
+          'description' => t('The weight of the node field !field_name.', array('!field_name' => $fields_instance['label'])),
+        );
+      }
+    }
+  }
+}
+
+/**
+ * Callback for mapping weights.
+ *
+ * @param $source
+ *   Field mapper source settings.
+ * @param $entity
+ *   An entity object, for instance a node object.
+ * @param $target
+ *   A string identifying the target on the node.
+ * @param $value
+ *   The value to populate the target with.
+ * @param $mapping
+ *  Associative array of the mapping settings from the per mapping
+ *  configuration form.
+ */
+function weight_feeds_set_target(FeedsSource $source, $entity, $target, array $values, array $mapping) {
+  if (!is_array($values)) {
+    $values = array($values);
+  }
+
+  $weight = NULL;
+  foreach ($values as $value) {
+    if (is_numeric($value)) {
+      $weight = $value;
+      break;
+    }
+  }
+
+  $entity->{$target}[LANGUAGE_NONE][0]['value'] = $weight;
+}