diff --git a/ffc.module b/ffc.module
index 882e9f2..5eb11b5 100644
--- a/ffc.module
+++ b/ffc.module
@@ -94,11 +94,11 @@ function ffc_field_attach_view_alter(&$build, $context) {
 
     // Execute conditions.
     foreach ($settings['conditions'] as $condition) {
-      $callback = 'ffc_condition_execute_' . $condition['condition'];
-      // Use function_exists because we don't clean up when modules are
-      // disabled. It might be a good idea to do that in the future.
-      if (function_exists($callback)) {
-        $callback($build, $field_name, !empty($condition['configuration']) ? $condition['configuration'] : '', $context);
+      foreach (module_implements('condition_execute_' . $condition['condition']) as $module) {
+        $callback = $module . '_condition_execute_' . $condition['condition'];
+        if (function_exists($callback)) {
+          $callback($build, $field_name, !empty($condition['configuration']) ? $condition['configuration'] : '', $context);
+        }
       }
     }
   }
