diff --git a/ruleset.action.inc b/ruleset.action.inc
index 52b7434..439451d 100644
--- a/ruleset.action.inc
+++ b/ruleset.action.inc
@@ -1,30 +1,29 @@
 <?php
 
 function views_bulk_operations_ruleset_action_info() {
-  if (!module_exists('rules')) return array();
   $actions = array();
-  /*
-  foreach (rules_get_configured_items('rule_sets') as $ruleset_key => $ruleset) {
-    if (count($ruleset['arguments']) == 1) { // For now, we only accept rulesets with one parameter (taken to be the 'type')
-      $arg = key($ruleset['arguments']);
-      $actions["views_bulk_operations_ruleset_action_{$ruleset_key}"] = array(
-        'type' => $ruleset['arguments'][$arg]['type'],
-        'parameters' => array('ruleset' => $ruleset_key),
-        'label' => $ruleset['label'],
+  if (!module_exists('rules')) {
+    return $actions;
+  }
+
+  foreach (rules_get_components(FALSE, 'action') as $component_key => $component) {
+    $parameterInfo = $component->parameterInfo();
+     // For now, we only accept rulesets with one parameter (taken to be the
+     // 'type').
+    if (count($parameterInfo) == 1) {
+      $arg = key($parameterInfo);
+      $actions['views_bulk_operations_ruleset_action'] = array(
+        'type' => $parameterInfo[$arg]['type'],
+        'parameters' => array('ruleset' => $component_key),
+        'label' => $component->label(),
         'configurable' => FALSE,
         'rules_ignore' => TRUE,
       );
-      eval(<<<EOS
-if (!function_exists('views_bulk_operations_ruleset_action_{$ruleset_key}')) {
-  function views_bulk_operations_ruleset_action_{$ruleset_key}(&\$object, \$context) {
-    rules_invoke_rule_set(\$context['ruleset'], \$object);
-  }
-}
-EOS
-      );
     }
   }
-  */
   return $actions;
 }
 
+function views_bulk_operations_ruleset_action($object, $context) {
+  rules_invoke_component($context['ruleset'], $object);
+}
