diff --git modules/data.eval.inc modules/data.eval.inc
index 6298ecf..9dae670 100644
--- modules/data.eval.inc
+++ modules/data.eval.inc
@@ -171,7 +171,12 @@ function rules_action_entity_save($wrapper, $immediate = FALSE, $settings, $stat
  * Action: Delete entities.
  */
 function rules_action_entity_delete($wrapper, $settings, $state, $element) {
-  $wrapper->delete();
+  try {
+    $wrapper->delete();
+  }
+  catch (EntityMetadataWrapperException $e) {
+    throw new RulesException($e->getMessage(), array(), $element);
+  }
 }
 
 /**
diff --git modules/data.rules.inc modules/data.rules.inc
index f74fbf1..4ff6bb7 100644
--- modules/data.rules.inc
+++ modules/data.rules.inc
@@ -138,57 +138,51 @@ function rules_data_action_info() {
     );
   }
 
-  // Get an array of types that are savable.
-  if ($types = array_keys(rules_entity_type_options('save'))) {
-    $return['entity_save'] = array(
-      'label' => t('Save entity'),
-      'parameter' => array(
-        'data' => array(
-          'type' => $types,
-          'label' => t('Entity'),
-          'description' => t('Specifies the entity, which should be saved permanently.'),
-          'restriction' => 'selector',
-          'wrapped' => TRUE,
-         ),
-         'immediate' => array(
-           'type' => 'boolean',
-           'label' => t('Force saving immediately'),
-           'description' => t('Usually saving is postponed till the end of the evaluation, so that multiple saves can be fold into one. If this set, saving is forced to happen immediately.'),
-           'default value' => FALSE,
-           'optional' => TRUE,
-           'restriction' => 'input',
-         ),
-      ),
-      'group' => t('Entities'),
-      'access callback' => 'rules_data_action_access',
-      'base' => 'rules_action_entity_save',
-      'callbacks' => array(
-        'access' => 'rules_action_entity_savedelete_access',
-      ),
-    );
-  }
+  $return['entity_save'] = array(
+    'label' => t('Save entity'),
+    'parameter' => array(
+      'data' => array(
+        'type' => 'entity',
+        'label' => t('Entity'),
+        'description' => t('Specifies the entity, which should be saved permanently.'),
+        'restriction' => 'selector',
+        'wrapped' => TRUE,
+       ),
+       'immediate' => array(
+         'type' => 'boolean',
+         'label' => t('Force saving immediately'),
+         'description' => t('Usually saving is postponed till the end of the evaluation, so that multiple saves can be fold into one. If this set, saving is forced to happen immediately.'),
+         'default value' => FALSE,
+         'optional' => TRUE,
+         'restriction' => 'input',
+       ),
+    ),
+    'group' => t('Entities'),
+    'access callback' => 'rules_data_action_access',
+    'base' => 'rules_action_entity_save',
+    'callbacks' => array(
+      'access' => 'rules_action_entity_savedelete_access',
+    ),
+  );
 
-  // Get an array of types that are deletable.
-  if ($types = array_keys(rules_entity_type_options('delete'))) {
-    $return['entity_delete'] = array(
-      'label' => t('Delete entity'),
-      'parameter' => array(
-        'data' => array(
-          'type' => $types,
-          'label' => t('Entity'),
-          'description' => t('Specifies the entity, which should be deleted permanently.'),
-          'restriction' => 'selector',
-          'wrapped' => TRUE,
-        ),
-      ),
-      'group' => t('Entities'),
-      'access callback' => 'rules_data_action_access',
-      'base' => 'rules_action_entity_delete',
-      'callbacks' => array(
-        'access' => 'rules_action_entity_savedelete_access',
+  $return['entity_delete'] = array(
+    'label' => t('Delete entity'),
+    'parameter' => array(
+      'data' => array(
+        'type' => 'entity',
+        'label' => t('Entity'),
+        'description' => t('Specifies the entity, which should be deleted permanently.'),
+        'restriction' => 'selector',
+        'wrapped' => TRUE,
       ),
-    );
-  }
+    ),
+    'group' => t('Entities'),
+    'access callback' => 'rules_data_action_access',
+    'base' => 'rules_action_entity_delete',
+    'callbacks' => array(
+      'access' => 'rules_action_entity_savedelete_access',
+    ),
+  );
   $return['list_add'] = array(
     'label' => t('Add list item'),
     'parameter' => array(
diff --git modules/events.inc modules/events.inc
index a13bbee..de1afa0 100644
--- modules/events.inc
+++ modules/events.inc
@@ -174,8 +174,7 @@ function rules_data_action_access($type, $name) {
     $op = $name == 'entity_create' ? 'create' : 'view';
   }
   elseif ($name == 'entity_save' || $name == 'entity_delete') {
-    $cache = rules_get_cache();
-    $types = $cache['action_info'][$name]['parameter']['data']['type'];
+    $types = array_keys(entity_get_info());
     $op = $name == 'entity_save' ? 'save' : 'delete';
   }
   foreach ($types as $key => $type) {
