diff --git advpoll.module advpoll.module
index 80fb369..0820689 100644
--- advpoll.module
+++ advpoll.module
@@ -1332,6 +1332,14 @@ function _advpoll_list_modes() {
         $advpoll_modes[$mode] = call_user_func('advpoll_info_'. $mode);
       }
     }
+    // Allow modules to hook in.
+    foreach (module_invoke_all('advpoll_info') as $key => $info) {
+      if (empty($info['name'])) {
+        $info['name'] = $key;
+      }
+      $advpoll_modes[$info['name']] = $info['name'];
+    }
+    drupal_alter('advpoll_info', $advpoll_modes);
   }
   return $advpoll_modes;
 }
