diff --git a/mollom.module b/mollom.module
index 33cfc2e..240117d 100644
--- a/mollom.module
+++ b/mollom.module
@@ -84,6 +84,28 @@ define('MOLLOM_REFRESH', 1100);
 define('MOLLOM_REDIRECT', 1200);
 
 /**
+ * Implements hook_hook_info().
+ */
+function mollom_hook_info() {
+  $hooks = array(
+    'mollom_form_list',
+    'mollom_form_list_alter',
+    'mollom_form_info',
+    'mollom_form_info_alter',
+    'mollom_form_insert',
+    'mollom_form_update',
+    'mollom_form_delete',
+    'mollom_data_insert',
+    'mollom_data_update',
+    'mollom_data_delete',
+  );
+  $hooks = array_fill_keys($hooks, array(
+    'group' => 'mollom',
+  ));
+  return $hooks;
+}
+
+/**
  * Implements hook_help().
  */
 function mollom_help($path, $arg) {
@@ -804,6 +826,10 @@ function mollom_form_list() {
       );
     }
   }
+
+  // Allow modules to alter the form list.
+  drupal_alter('mollom_form_list', $form_list);
+
   return $form_list;
 }
 
diff --git a/tests/mollom_test.module b/tests/mollom_test.module
index 842e167..dd078ab 100644
--- a/tests/mollom_test.module
+++ b/tests/mollom_test.module
@@ -207,54 +207,6 @@ function mollom_forms() {
 }
 
 /**
- * Implements hook_mollom_form_list().
- */
-function mollom_test_mollom_form_list() {
-  $forms['mollom_test_form'] = array(
-    'title' => 'Mollom test form',
-    'entity' => 'mollom_test',
-    'entity delete multiple callback' => 'mollom_test_delete_multiple',
-    'moderation callback' => 'mollom_test_mollom_form_moderation',
-  );
-  // The basic test form is identical to the mollom_test_form, but only
-  // registers minimal information (e.g., no entity or moderation callback) to
-  // integrate with Mollom.
-  $forms['mollom_basic_test_form'] = array(
-    'title' => 'Mollom basic test form',
-  );
-  // Same as above, but supports elements for text analysis.
-  $forms['mollom_basic_elements_test_form'] = array(
-    'title' => 'Mollom basic elements test form',
-  );
-  return $forms;
-}
-
-/**
- * Implements hook_mollom_form_info().
- */
-function mollom_test_mollom_form_info($form_id) {
-  if ($form_id == 'mollom_basic_test_form') {
-    return array();
-  }
-  $form_info = array(
-    'bypass access' => array('administer mollom'),
-    'elements' => array(
-      'title' => 'Title',
-      'body' => 'Body',
-      'exclude' => 'Some other field',
-      'parent][child' => 'Nested element',
-      'field' => 'Multiple value field',
-    ),
-    'mapping' => array(
-      'post_id' => 'mid',
-      'post_title' => 'title',
-      'author_name' => 'name',
-    ),
-  );
-  return $form_info;
-}
-
-/**
  * Form builder for Mollom test form.
  */
 function mollom_test_form($form, &$form_state, $mid = NULL) {
diff --git a/tests/mollom_test.mollom.inc b/tests/mollom_test.mollom.inc
new file mode 100644
index 0000000..b408770
--- /dev/null
+++ b/tests/mollom_test.mollom.inc
@@ -0,0 +1,54 @@
+<?php
+
+/**
+ * @file
+ * Mollom integration for the mollom_test module.
+ */
+
+/**
+ * Implements hook_mollom_form_list().
+ */
+function mollom_test_mollom_form_list() {
+  $forms['mollom_test_form'] = array(
+    'title' => 'Mollom test form',
+    'entity' => 'mollom_test',
+    'entity delete multiple callback' => 'mollom_test_delete_multiple',
+    'moderation callback' => 'mollom_test_mollom_form_moderation',
+  );
+  // The basic test form is identical to the mollom_test_form, but only
+  // registers minimal information (e.g., no entity or moderation callback) to
+  // integrate with Mollom.
+  $forms['mollom_basic_test_form'] = array(
+    'title' => 'Mollom basic test form',
+  );
+  // Same as above, but supports elements for text analysis.
+  $forms['mollom_basic_elements_test_form'] = array(
+    'title' => 'Mollom basic elements test form',
+  );
+  return $forms;
+}
+
+/**
+ * Implements hook_mollom_form_info().
+ */
+function mollom_test_mollom_form_info($form_id) {
+  if ($form_id == 'mollom_basic_test_form') {
+    return array();
+  }
+  $form_info = array(
+    'bypass access' => array('administer mollom'),
+    'elements' => array(
+      'title' => 'Title',
+      'body' => 'Body',
+      'exclude' => 'Some other field',
+      'parent][child' => 'Nested element',
+      'field' => 'Multiple value field',
+    ),
+    'mapping' => array(
+      'post_id' => 'mid',
+      'post_title' => 'title',
+      'author_name' => 'name',
+    ),
+  );
+  return $form_info;
+}
