diff --git a/EntityDependencyIterator.inc b/EntityDependencyIterator.inc
index 9ae6272..04dba96 100644
--- a/EntityDependencyIterator.inc
+++ b/EntityDependencyIterator.inc
@@ -115,7 +115,18 @@ class EntityDependencyIterator implements RecursiveIterator {
       $entities = entity_load($current['type'], array($current['id']));
       $entity = reset($entities);
 
-      $this->dependencies = module_invoke_all('entity_dependencies', $entity, $current['type']);
+      $this->dependencies = array();
+      foreach (module_implements('entity_dependencies') as $module) {
+        $dependencies = module_invoke($module, 'entity_dependencies', $entity, $current['type']);
+        if (isset($dependencies) && is_array($dependencies)) {
+          foreach ($dependencies as &$dep) {
+            if (empty($dep['module'])) {
+              $dep['module'] = $module;
+            }
+          }
+          $this->dependencies = array_merge_recursive($this->dependencies, $dependencies);
+        }
+      }
       //$this->belongings = module_invoke_all('entity_belongings', $entity, $this->entityType);
 
       // Don't add dependencies that already were checked.
@@ -232,4 +243,4 @@ class EntityDependencyIterator implements RecursiveIterator {
     }
     return FALSE;
   }
-}
+}
\ No newline at end of file
diff --git a/README.txt b/README.txt
diff --git a/entity_dependency.api.php b/entity_dependency.api.php
diff --git a/entity_dependency.core.inc b/entity_dependency.core.inc
index 6b94bc9..90117a9 100644
--- a/entity_dependency.core.inc
+++ b/entity_dependency.core.inc
@@ -67,6 +67,17 @@ function field_entity_dependencies($entity, $entity_type) {
       drupal_alter('field_entity_dependencies', $field_dependencies, $entity_type, $entity, $field, $instance, $langcode, $items);
 
       if (!empty($field_dependencies)) {
+        foreach ($field_dependencies as &$field_dependency) {
+          if (empty($field_dependency['module'])) {
+            $field_dependency['module'] = $field['module'];
+          }
+          if (empty($field_dependency['field_name'])) {
+            $field_dependency['field_name'] = $field_name;
+          }
+          if (empty($field_dependency['langcode'])) {
+            $field_dependency['langcode'] = $langcode;
+          }
+        }
         $dependencies = array_merge_recursive($dependencies, $field_dependencies);
       }
     }
diff --git a/entity_dependency.module b/entity_dependency.module
index 982d9ff..cf8c037 100644
--- a/entity_dependency.module
+++ b/entity_dependency.module
@@ -48,7 +48,7 @@ function entity_dependency_add(&$dependencies, $objects, $entity_type, $properti
     $properties = array($properties);
   }
 
-  foreach ($objects as $object) {
+  foreach ($objects as $delta => $object) {
     foreach ($properties as $property) {
       $value = NULL;
       if (is_object($object) && isset($object->{$property})) {
@@ -58,7 +58,12 @@ function entity_dependency_add(&$dependencies, $objects, $entity_type, $properti
         $value = $object[$property];
       }
       if (!empty($value) && !($entity_type == 'user' && ((int)$value == 0 || (int)$value == 1))) {
-        $dependencies[] = array('type' => $entity_type, 'id' => $value);
+        $dependencies[] = array(
+          'type' => $entity_type,
+          'id' => $value,
+          'delta' => $delta,
+          'property' => $property,
+        );
       }
     }
   }
