Index: ca/ca.admin.inc
===================================================================
--- ca/ca.admin.inc	(revision 1412)
+++ ca/ca.admin.inc	(working copy)
@@ -13,7 +13,7 @@
   drupal_add_css(drupal_get_path('module', 'ca') .'/ca.css');
 
   // Load all the module defined predicates into a temporary array.
-  $temp = module_invoke_all('ca_predicate');
+  $temp = ca_load_predicates();
 
   // Assign a default weight if need be.
   foreach ($temp as $key => $value) {
Index: ca/ca.module
===================================================================
--- ca/ca.module	(revision 1412)
+++ ca/ca.module	(working copy)
@@ -270,6 +270,17 @@
 }
 
 /**
+ * function ca_load_predicates() loads predicates from hook_ca_predicate, and
+ * passes them through a drupal alter.
+ * @return an array of predefined predicates, from hook_ca_predicate()
+ */
+function ca_load_predicates() {
+  $predicates = module_invoke_all('ca_predicate');
+  drupal_alter('ca_predicates', $predicates);
+  return $predicates;
+}
+
+/**
  * Load predicates based on the specified parameters.
  *
  * @param $trigger
@@ -282,7 +293,7 @@
  */
 function ca_load_trigger_predicates($trigger, $all = FALSE) {
   // Load all the module defined predicates.
-  $predicates = module_invoke_all('ca_predicate');
+  $predicates = ca_load_predicates;
 
   // Loop through the module defined predicates to prepare the data - unsets
   // inactive predicates if $all == FALSE and adds a default weight if need be.
@@ -993,7 +1004,7 @@
   }
   else {
     // Otherwise look for it in the module defined predicates.
-    $predicates = module_invoke_all('ca_predicate');
+    $predicates = ca_load_predicates();
 
     if (!empty($predicates[$pid])) {
       $predicate = $predicates[$pid];
