diff --git a/modules/entityreference_referential_integrity/entityreference_referential_integrity.info b/modules/entityreference_referential_integrity/entityreference_referential_integrity.info
new file mode 100644
index 0000000..9f3b0f7
--- /dev/null
+++ b/modules/entityreference_referential_integrity/entityreference_referential_integrity.info
@@ -0,0 +1,7 @@
+name = Entity Reference Referential Integrity
+description = Provides some pseudo referential integrity for entityreference fields
+core = 7.x
+package = Fields
+dependencies[] = entityreference
+
+files[] = plugins/behavior/EntityReference_EntityBehaviorDeleteOnCascade.class.inc
diff --git a/modules/entityreference_referential_integrity/entityreference_referential_integrity.module b/modules/entityreference_referential_integrity/entityreference_referential_integrity.module
new file mode 100644
index 0000000..b4dae39
--- /dev/null
+++ b/modules/entityreference_referential_integrity/entityreference_referential_integrity.module
@@ -0,0 +1,12 @@
+<?php
+/**
+ * Implements hook_ctools_plugin_directory().
+ */
+
+function entityreference_referential_integrity_init(){
+}
+function entityreference_referential_integrity_ctools_plugin_directory($owner, $plugin_type) {
+  if ($owner == 'entityreference') {
+    return 'plugins/' . $plugin_type;
+  }
+}
diff --git a/modules/entityreference_referential_integrity/plugins/behavior/EntityReference_EntityBehaviorDeleteOnCascade.class.inc b/modules/entityreference_referential_integrity/plugins/behavior/EntityReference_EntityBehaviorDeleteOnCascade.class.inc
new file mode 100644
index 0000000..503c5f2
--- /dev/null
+++ b/modules/entityreference_referential_integrity/plugins/behavior/EntityReference_EntityBehaviorDeleteOnCascade.class.inc
@@ -0,0 +1,34 @@
+<?php
+/**
+ *  Delete on caschade implementation of EntityReference_BehaviorHandler.
+ */
+class EntityReference_EntityBehaviorDeleteOnCascade extends EntityReference_BehaviorHandler_Abstract {
+
+  public function presave($entity_type, $entity, $field, $instance, $langcode, &$items) {
+    list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
+    //TODO: how load revisions if conditions is depricated?
+    if(!empty($id)) {
+      $saved_entity = current(entity_load($entity_type, array($id)));
+      $saved_items = isset($saved_entity->{$field['field_name']}) ? field_get_items($entity_type, $saved_entity, $field['field_name']) : array();
+      $removed_items = array_udiff($saved_items, $items, array($this, 'items_compare'));
+      $this->items_delete($target_type, $items);
+    }
+  }
+
+  private function items_delete($target_type, $items) {
+    entity_delete_multiple($target_type, array_map(array($this, 'items_target_id'), $items));
+  }
+
+  private function items_target_id($item) {
+    return $item['target_id'];
+  }
+
+  private function items_compare($item_a, $item_b) {
+    $result = strcmp($item_a['target_type'], $item_b['target_type']);
+    return $result ? $result : strcmp($item_a['target_id'], $item_b['target_id']);
+  }
+
+  public function delete($entity_type, $entity, $field, $instance, $langcode, &$items) {
+    $this->items_delete($entity_type, $items);
+  }
+}
diff --git a/modules/entityreference_referential_integrity/plugins/behavior/delete_on_cascade.inc b/modules/entityreference_referential_integrity/plugins/behavior/delete_on_cascade.inc
new file mode 100644
index 0000000..f73d233
--- /dev/null
+++ b/modules/entityreference_referential_integrity/plugins/behavior/delete_on_cascade.inc
@@ -0,0 +1,7 @@
+<?php
+
+$plugin = array(
+  'title' => t('Delete on cascade'),
+  'class' => 'EntityReference_EntityBehaviorDeleteOnCascade',
+  'behavior type' => 'field',
+);
