diff --git a/includes/mixpanel.comment.inc b/includes/mixpanel.comment.inc
deleted file mode 100644
index 7a18258..0000000
--- a/includes/mixpanel.comment.inc
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/*
- * Implementation of hook_comment().
- */
-function mixpanel_comment($comment, $op) {
-  if (variable_get('mixpanel_token', '') == '') {
-    return;
-  }
-  // $comment can be an object or an array.
-  $comment = (object)$comment;
-  $group_results = db_fetch_array(db_query("SELECT o.group_nid, n.title
-                                FROM {og_ancestry} o
-                                JOIN {node} n
-                                ON n.nid = o.group_nid
-                                WHERE o.nid = %d", $comment->nid));
-  $node_results = db_fetch_array(db_query("SELECT title, type
-                                    FROM {node}
-                                    WHERE nid = %d", $comment->nid));
-  switch($op) {
-    case 'publish':
-      mixpanel_track("comment-created",
-        array(
-         'node-id' => $comment->nid,
-         'node-title' => $node_results['title'],
-         'node-type' => $node_results['type'],
-         'comment-id' => $comment->cid,
-         'group-id' => $group_results['group_nid'],
-         'group-name' => $group_results['title']
-        )
-      );
-      break;
-  }
-}
diff --git a/includes/mixpanel.node.inc b/includes/mixpanel.node.inc
deleted file mode 100644
index b618082..0000000
--- a/includes/mixpanel.node.inc
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/*
- * Implementation of hook_nodeapi().
- */
-function mixpanel_nodeapi($node, $op) {
-  if (variable_get('mixpanel_token', '') == '') {
-    return;
-  }
-  
-  $values = array('node-title' => $node->title,
-                   'node-id' => $node->nid,
-                   'node-type' => $node->type);
-  if (!empty($node->og_groups)) {
-    $values['group-id'] = array_pop(array_values($node->og_groups));
-  }
-  switch($op) {
-    case 'delete':
-      mixpanel_track("node-deleted", $values);
-      break;
-
-    case 'insert':
-      mixpanel_track("node-created", $values);
-      break;
-
-    case 'update':
-      mixpanel_track("node-updated", $values);
-    }
-}
-
-/**
- * Submit function for the search form to let us track searches.
- */
-function mixpanel_search_theme_form_submit($form, $form_state) {
-  mixpanel_track("search", array('search-string' => $form_state['values']['search_theme_form']));
-}
\ No newline at end of file
diff --git a/includes/mixpanel.og.inc b/includes/mixpanel.og.inc
deleted file mode 100644
index c0adbce..0000000
--- a/includes/mixpanel.og.inc
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-/*
- * Implementation of hook_og().
- */
-function mixpanel_og($op, $gid, $uid, $args) {
-  if (variable_get('mixpanel_token', '') == '') {
-    return;
-  }
-  $account = user_load($uid);
-  $group_node = node_load($gid);
-  switch ($op) {
-    case 'user insert':
-      mixpanel_track("group-join", array("group-id" => $gid, "group-name" => $group_node->title), $account);
-      break;
-
-    case 'user delete':
-      mixpanel_track("group-left", array("group-id" => $gid, "group-name" => $group_node->title), $account);
-      break;
-  }
-}
\ No newline at end of file
diff --git a/includes/mixpanel.user.inc b/includes/mixpanel.user.inc
deleted file mode 100644
index 3b0acaa..0000000
--- a/includes/mixpanel.user.inc
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-/*
- * Implementation of hook_user().
- */
-function mixpanel_user($op, $edit, $account, $category) {
-  if (variable_get('mixpanel_token', '') == '') {
-    return;
-  }
-  switch($op) {
-    case 'insert':
-      mixpanel_track("user-inserted", null, $account);
-      break;
-
-    case 'delete':
-      mixpanel_track("user-deleted", null, $acccount);
-      break;
-
-    case 'update':
-      // We can't use this unfortunately as the LDAP module updates a person's account each time they login.
-      // We'll use hook_form_alter instead to detect someone submittng an account update.
-      //mixpanel_track("user-account-updated", null, $account);
-      break;
-
-    case 'login':
-      mixpanel_track("user-login", null, $account);
-      break;
-
-    case 'logout':
-      mixpanel_track("user-logout", null, $account);
-      break;
-  }
-}
-
-/**
- * Submit function for contact_mail_user to track usage of the contact form.
- */
-function mixpanel_contact_mail_user_submit($form, $form_state) {
-  mixpanel_track("contact-form-user");
-}
-
-/**
- * Submit function for the user_profile_form to let us track user changes
- * to their accounts.
- */
-function mixpanel_user_profile_form_submit($form, $form_state) {
-  mixpanel_track("user-account-updated");
-
-  // If a picture was uploaded, submit an event for that as well.
-  if (isset($form_state['values']['picture'])) {
-    mixpanel_track("user-picture-changed");
-  }
-}
\ No newline at end of file
diff --git a/mixpanel.install b/mixpanel.install
new file mode 100644
index 0000000..6082244
--- /dev/null
+++ b/mixpanel.install
@@ -0,0 +1,11 @@
+<?php
+
+/**
+ * For backward compatibility, automatically enable the 'mixpanel_defaults' module.
+ */
+function mixpanel_update_6001() {
+  drupal_install_modules(array(
+    'mixpanel_defaults',
+  ));
+}
+
diff --git a/mixpanel.module b/mixpanel.module
index 75c3da6..ef7d076 100644
--- a/mixpanel.module
+++ b/mixpanel.module
@@ -2,12 +2,6 @@
 
 include('mixpanel.api.inc');
 
-include('includes/mixpanel.node.inc');
-include('includes/mixpanel.user.inc');
-include('includes/mixpanel.comment.inc');
-include('includes/mixpanel.og.inc');
-
-
 /**
  * Implementation of hook_init().
  */
@@ -155,25 +149,6 @@ function mixpanel_track($event, $custom_properties = array(), $account = NULL) {
   $metrics->track($event, $properties);
 }
 
-
-
-/**
- * Implementation of hook_form_alter().
- */
-function mixpanel_form_alter(&$form, &$form_state, $form_id) {
-  switch ($form_id) {
-    case 'contact_mail_user':
-      $form['#submit'][] = "mixpanel_contact_mail_user_submit";
-      break;
-    case 'user_profile_form':
-      $form['#submit'][] = "mixpanel_user_profile_form_submit";
-      break;
-    case 'search_theme_form':
-      $form['#submit'][] = "mixpanel_search_theme_form_submit";
-      break;
-  }
-}
-
 /**
  * Implementation of hook_block().
  */
diff --git a/modules/mixpanel_defaults/includes/mixpanel_defaults.comment.inc b/modules/mixpanel_defaults/includes/mixpanel_defaults.comment.inc
new file mode 100644
index 0000000..7570407
--- /dev/null
+++ b/modules/mixpanel_defaults/includes/mixpanel_defaults.comment.inc
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * Implementation of hook_comment().
+ */
+function mixpanel_defaults_comment($comment, $op) {
+  if (variable_get('mixpanel_token', '') == '') {
+    return;
+  }
+  // $comment can be an object or an array.
+  $comment = (object)$comment;
+  $group_results = db_fetch_array(db_query("SELECT o.group_nid, n.title
+                                FROM {og_ancestry} o
+                                JOIN {node} n
+                                ON n.nid = o.group_nid
+                                WHERE o.nid = %d", $comment->nid));
+  $node_results = db_fetch_array(db_query("SELECT title, type
+                                    FROM {node}
+                                    WHERE nid = %d", $comment->nid));
+  switch($op) {
+    case 'publish':
+      mixpanel_track("comment-created",
+        array(
+         'node-id' => $comment->nid,
+         'node-title' => $node_results['title'],
+         'node-type' => $node_results['type'],
+         'comment-id' => $comment->cid,
+         'group-id' => $group_results['group_nid'],
+         'group-name' => $group_results['title']
+        )
+      );
+      break;
+  }
+}
diff --git a/modules/mixpanel_defaults/includes/mixpanel_defaults.node.inc b/modules/mixpanel_defaults/includes/mixpanel_defaults.node.inc
new file mode 100644
index 0000000..de5877d
--- /dev/null
+++ b/modules/mixpanel_defaults/includes/mixpanel_defaults.node.inc
@@ -0,0 +1,36 @@
+<?php
+
+/*
+ * Implementation of hook_nodeapi().
+ */
+function mixpanel_defaults_nodeapi($node, $op) {
+  if (variable_get('mixpanel_token', '') == '') {
+    return;
+  }
+  
+  $values = array('node-title' => $node->title,
+                   'node-id' => $node->nid,
+                   'node-type' => $node->type);
+  if (!empty($node->og_groups)) {
+    $values['group-id'] = array_pop(array_values($node->og_groups));
+  }
+  switch($op) {
+    case 'delete':
+      mixpanel_track("node-deleted", $values);
+      break;
+
+    case 'insert':
+      mixpanel_track("node-created", $values);
+      break;
+
+    case 'update':
+      mixpanel_track("node-updated", $values);
+    }
+}
+
+/**
+ * Submit function for the search form to let us track searches.
+ */
+function mixpanel_defaults_search_theme_form_submit($form, $form_state) {
+  mixpanel_track("search", array('search-string' => $form_state['values']['search_theme_form']));
+}
diff --git a/modules/mixpanel_defaults/includes/mixpanel_defaults.og.inc b/modules/mixpanel_defaults/includes/mixpanel_defaults.og.inc
new file mode 100644
index 0000000..7ba83e2
--- /dev/null
+++ b/modules/mixpanel_defaults/includes/mixpanel_defaults.og.inc
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ * Implementation of hook_og().
+ */
+function mixpanel_defaults_og($op, $gid, $uid, $args) {
+  if (variable_get('mixpanel_token', '') == '') {
+    return;
+  }
+  $account = user_load($uid);
+  $group_node = node_load($gid);
+  switch ($op) {
+    case 'user insert':
+      mixpanel_track("group-join", array("group-id" => $gid, "group-name" => $group_node->title), $account);
+      break;
+
+    case 'user delete':
+      mixpanel_track("group-left", array("group-id" => $gid, "group-name" => $group_node->title), $account);
+      break;
+  }
+}
diff --git a/modules/mixpanel_defaults/includes/mixpanel_defaults.user.inc b/modules/mixpanel_defaults/includes/mixpanel_defaults.user.inc
new file mode 100644
index 0000000..4b68e45
--- /dev/null
+++ b/modules/mixpanel_defaults/includes/mixpanel_defaults.user.inc
@@ -0,0 +1,53 @@
+<?php
+
+/*
+ * Implementation of hook_user().
+ */
+function mixpanel_defaults_user($op, $edit, $account, $category) {
+  if (variable_get('mixpanel_token', '') == '') {
+    return;
+  }
+  switch($op) {
+    case 'insert':
+      mixpanel_track("user-inserted", null, $account);
+      break;
+
+    case 'delete':
+      mixpanel_track("user-deleted", null, $acccount);
+      break;
+
+    case 'update':
+      // We can't use this unfortunately as the LDAP module updates a person's account each time they login.
+      // We'll use hook_form_alter instead to detect someone submittng an account update.
+      //mixpanel_track("user-account-updated", null, $account);
+      break;
+
+    case 'login':
+      mixpanel_track("user-login", null, $account);
+      break;
+
+    case 'logout':
+      mixpanel_track("user-logout", null, $account);
+      break;
+  }
+}
+
+/**
+ * Submit function for contact_mail_user to track usage of the contact form.
+ */
+function mixpanel_defaults_contact_mail_user_submit($form, $form_state) {
+  mixpanel_track("contact-form-user");
+}
+
+/**
+ * Submit function for the user_profile_form to let us track user changes
+ * to their accounts.
+ */
+function mixpanel_defaults_user_profile_form_submit($form, $form_state) {
+  mixpanel_track("user-account-updated");
+
+  // If a picture was uploaded, submit an event for that as well.
+  if (isset($form_state['values']['picture'])) {
+    mixpanel_track("user-picture-changed");
+  }
+}
diff --git a/modules/mixpanel_defaults/mixpanel_defaults.info b/modules/mixpanel_defaults/mixpanel_defaults.info
new file mode 100644
index 0000000..43ed51e
--- /dev/null
+++ b/modules/mixpanel_defaults/mixpanel_defaults.info
@@ -0,0 +1,4 @@
+name = Mixpanel defaults
+description = Sends some basic Drupal events to Mixpanel.
+package = Mixpanel
+core = 6.x
diff --git a/modules/mixpanel_defaults/mixpanel_defaults.module b/modules/mixpanel_defaults/mixpanel_defaults.module
new file mode 100644
index 0000000..63e3884
--- /dev/null
+++ b/modules/mixpanel_defaults/mixpanel_defaults.module
@@ -0,0 +1,24 @@
+<?php
+
+include('includes/mixpanel_defaults.node.inc');
+include('includes/mixpanel_defaults.user.inc');
+include('includes/mixpanel_defaults.comment.inc');
+include('includes/mixpanel_defaults.og.inc');
+
+/**
+ * Implementation of hook_form_alter().
+ */
+function mixpanel_defaults_form_alter(&$form, &$form_state, $form_id) {
+  switch ($form_id) {
+    case 'contact_mail_user':
+      $form['#submit'][] = "mixpanel_defaults_contact_mail_user_submit";
+      break;
+    case 'user_profile_form':
+      $form['#submit'][] = "mixpanel_defaults_user_profile_form_submit";
+      break;
+    case 'search_theme_form':
+      $form['#submit'][] = "mixpanel_defaults_search_theme_form_submit";
+      break;
+  }
+}
+
