diff --git a/views_summarize.install b/views_summarize.install
new file mode 100644
index 0000000..74f5137
--- /dev/null
+++ b/views_summarize.install
@@ -0,0 +1,25 @@
+<?php
+
+/**
+ * Change the names of the views_summarize handlers in any existing views.
+ */
+function views_summarize_update_7100() {
+  $result = db_query("SELECT vid, id, display_options FROM {views_display}");
+  while ($display = $result->fetch()) {
+    $options = unserialize($display->display_options);
+    if (isset($options['style_plugin']) && $options['style_plugin'] == 'tablesummarized') {
+      foreach ($options['style_options']['info'] as $field_name => &$field) {
+        if (!empty($field['summarize'])) {
+          $field['summarize'] = 'views_summarize_type_' . $field['summarize'];
+        } 
+      } 
+    }
+    db_update('views_display')
+      ->fields(array(
+        'display_options' => serialize($options),
+      ))
+      ->condition('vid', $display->vid)
+      ->condition('id', $display->id)
+      ->execute();
+  }
+}
diff --git a/views_summarize.module b/views_summarize.module
index efc2691..63f62bc 100644
--- a/views_summarize.module
+++ b/views_summarize.module
@@ -47,14 +47,25 @@ function views_summarize_theme() {
  * List all of the handlers
  */
 function views_summarize_get_handlers() {
+  static $handlers = NULL;
+  if (!isset($handlers)) {
+    $handlers = module_invoke_all('views_summarize_handlers');
+  }
+  return $handlers;
+}
+
+/**
+ * Implements hook_views_summarize_handlers().
+ */
+function views_summarize_views_summarize_handlers() {
   return array(
-    'none'     => t('None'),
-    'count'    => t('Count'),
-    'range'    => t('Range'),
-    'total'    => t('Total'),
-    'currency' => t('Total (Currency)'),
-    'average'  => t('Average'),
-    'spread'   => t('Spread'),
+    'views_summarize_type_none'     => t('None'),
+    'views_summarize_type_count'    => t('Count'),
+    'views_summarize_type_range'    => t('Range'),
+    'views_summarize_type_total'    => t('Total'),
+    'views_summarize_type_currency' => t('Total (Currency)'),
+    'views_summarize_type_average'  => t('Average'),
+    'views_summarize_type_spread'   => t('Spread'),
   );
 }
 
@@ -64,7 +75,6 @@ function views_summarize_get_handlers() {
  */
 function template_preprocess_views_summarize_views_tablesummarized(&$vars) {
   template_preprocess_views_view_table($vars);
-  $handlers = views_summarize_get_handlers();
 
   if (!count($vars['rows'])) {
     return;
@@ -84,8 +94,7 @@ function template_preprocess_views_summarize_views_tablesummarized(&$vars) {
   $vars['summarized'] = array();
   foreach ($opts as $field => $settings) {
     if (isset($data[$field])) {
-      $theme = 'views_summarize_type_' . $settings['summarize'];
-      $vars['summarized'][$field] = theme($theme, array('data' => $data[$field]));
+      $vars['summarized'][$field] = theme($settings['summarize'], array('data' => $data[$field]));
     }
   }
 }
