 regcode_dynamic/regcode_dynamic.module |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/regcode_dynamic/regcode_dynamic.module b/regcode_dynamic/regcode_dynamic.module
index 0cdc071..92f2aa1 100644
--- a/regcode_dynamic/regcode_dynamic.module
+++ b/regcode_dynamic/regcode_dynamic.module
@@ -157,7 +157,7 @@ function regcode_dynamic_settings($form_state, $rule_id) {
     '#default_value' => (array) $data['terms'],
   );
 
-  $handler_form = 'regcode_dynamic_handler_' . $data['handler'];
+  $handler_form = $handler['configuration'];
   $form['regcode_dynamic_handler'] += $handler_form($data);
 
   $form['regcode_dynamic_save'] = array(
@@ -332,6 +332,9 @@ function regcode_dynamic_handlers($handler = NULL) {
       'validator'     => 'regcode_dynamic_handler_luhn_validate',
     ),
   );
+  
+  // Collect handlers from other modules
+  $handlers = array_merge_recursive($handlers, module_invoke_all('regcode_dynamic_handler_collect'));  
 
   // Check if we're loading a specific handler
   if ($handler !== NULL) {
