diff --git a/comment_notify.inc b/comment_notify.inc
index 8797a5c..ef4acf0 100644
--- a/comment_notify.inc
+++ b/comment_notify.inc
@@ -22,8 +22,8 @@ function comment_notify_get_user_notification_setting($uid) {
     // Handle anonymous users with defaults.
     if ($uid == 0) {
       $users[0] = new stdClass();
-      $users[0]->comment_notify = comment_notify_variable_registry_get('default_registered_mailalert');
-      $users[0]->node_notify = comment_notify_variable_registry_get('node_notify_default_mailalert');
+      $users[0]->comment_notify = variable_get_value('comment_notify_default_registered_mailalert');
+      $users[0]->node_notify = variable_get_value('comment_notify_node_notify_default_mailalert');
     }
     else {
       $setting = db_select('comment_notify_user_settings', 'cnus')
@@ -45,8 +45,8 @@ function comment_notify_get_user_notification_setting($uid) {
 
 function comment_notify_get_default_notification_setting() {
   return (object) array(
-    'comment_notify' => comment_notify_variable_registry_get('default_registered_mailalert'),
-    'node_notify' => comment_notify_variable_registry_get('node_notify_default_mailalert')
+    'comment_notify' => variable_get_value('comment_notify_default_registered_mailalert'),
+    'node_notify' => variable_get_value('comment_notify_node_notify_default_mailalert')
   );
 }
 
@@ -320,43 +320,4 @@ function comment_notify_unsubscribe_by_hash($hash) {
     ->execute();
 }
 
-/**
- * Helper function to centralize variable management and defaults.
- *
- * All variables fall under the "comment_notify" psuedo namespace.  This ensures
- * consistancy, and eliminates some verbosity in the calling code.  In addition
- * by storing all of the variables in one place, we avoid repeating duplicate
- * defaults which are harder to maintain.
- *
- * @param string $name
- * @return mixed
- */
-function comment_notify_variable_registry_get($name) {
-  $variables = array();
-  $variables['author_subject'] = '[site:name] :: new comment for your post.';
-  $variables['available_alerts'] = array(COMMENT_NOTIFY_NODE, COMMENT_NOTIFY_COMMENT);
-  $variables['default_anon_mailalert'] = COMMENT_NOTIFY_NODE;
-  $variables['node_notify_default_mailtext'] = AUTHOR_MAILTEXT;
-  $variables['default_registered_mailalert'] = COMMENT_NOTIFY_DISABLED;
-  $variables['node_notify_default_mailalert'] = 0;
-  $variables['comment_notify_default_registered_mailalert'] = COMMENT_NOTIFY_DISABLED;
-  $variables['watcher_subject'] = '[site:name] :: new comment on [node:title]';
-  $variables['comment_notify_default_mailtext'] = DEFAULT_MAILTEXT;
-  $variables['node_types'] = array('article' => 'article');
-
-  // Errors
-  $variables['error_anonymous_email_missing'] = 'If you want to subscribe to comments you must supply a valid e-mail address.';
-  return variable_get("comment_notify_" . $name, $variables[$name]);
-}
-
-/**
- * Helper function to centralize setting variables.
- *
- * @param string $name
- * @param mixed $value
- * @return boolean
- */
-function comment_notify_variable_registry_set($name, $value) {
-  return variable_set("comment_notify_" . $name, $value);
-}
 
diff --git a/comment_notify.info b/comment_notify.info
index 955d1ee..ccfd2e1 100644
--- a/comment_notify.info
+++ b/comment_notify.info
@@ -2,6 +2,7 @@ name = Comment Notify
 description = "Comment follow-up e-mail notification for anonymous as well as registered users."
 dependencies[] = comment
 dependencies[] = token
+dependencies[] = variable
 core = 7.x
 files[] = comment_notify.install
 files[] = comment_notify.module
diff --git a/comment_notify.install b/comment_notify.install
index fa342c1..3eb1b53 100644
--- a/comment_notify.install
+++ b/comment_notify.install
@@ -32,15 +32,6 @@ function comment_notify_install() {
 }
 
 /**
- * Implements hook_uninstall().
- */
-function comment_notify_uninstall() {
-  variable_del('node_notify_default_mailtext');
-  db_delete('variable')
-    ->where('name', "comment_notify_%", 'LIKE');
-}
-
-/**
  * Implements hook_schema().
  */
 function comment_notify_schema() {
@@ -120,4 +111,4 @@ function comment_notify_update_7002() {
   );
   db_drop_index('comment_notify', 'notify_hash');
   db_change_field('comment_notify', 'notify_hash', 'notify_hash', $new_spec, $keys);
-}
\ No newline at end of file
+}
diff --git a/comment_notify.module b/comment_notify.module
index 87f2cb7..0fdb482 100644
--- a/comment_notify.module
+++ b/comment_notify.module
@@ -173,7 +173,7 @@ function comment_notify_menu() {
     'title' => 'Comment notify',
     'description' => 'Configure settings for e-mails about new comments.',
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('comment_notify_settings'),
+    'page arguments' => array('variable_module_form', 'comment_notify'),
     'access arguments' => array('administer comment notify'),
     'type' => MENU_NORMAL_ITEM,
   );
@@ -181,7 +181,7 @@ function comment_notify_menu() {
     'title' => 'Settings',
     'description' => 'Configure settings for e-mails about new comments.',
     'page callback' => 'drupal_get_form',
-    'page arguments' => array('comment_notify_settings'),
+    'page arguments' => array('variable_module_form', 'comment_notify'),
     'access arguments' => array('administer comment notify'),
     'type' => MENU_DEFAULT_LOCAL_TASK,
   );
@@ -328,7 +328,7 @@ function comment_notify_form_alter(&$form, &$form_state, $form_id) {
     $form['comment_notify_settings']['node_notify'] = array(
       '#type' => 'checkbox',
       '#title' => t('Receive node follow-up notification e-mails'),
-      '#default_value' => isset($node_notify) ? $node_notify : comment_notify_variable_registry_get('node_notify_default_mailalert'),
+      '#default_value' => isset($node_notify) ? $node_notify : variable_get_value('comment_notify_node_notify_default_mailalert'),
       '#description' => t('Check this box to receive an e-mail notification for follow-ups on your nodes (pages, forum topics, etc). You can not disable notifications for individual threads.')
     );
   }
@@ -344,7 +344,7 @@ function comment_notify_form_alter(&$form, &$form_state, $form_id) {
   $form['comment_notify_settings']['comment_notify'] = array(
     '#type' => 'select',
     '#title' => t('Receive comment follow-up notification e-mails'),
-    '#default_value' => isset($comment_notify) ? array($comment_notify) : array(comment_notify_variable_registry_get('comment_notify_default_registered_mailalert')),
+    '#default_value' => isset($comment_notify) ? array($comment_notify) : array(variable_get_value('comment_notify_default_registered_mailalert')),
     '#options' => $available_options,
     '#description' => t("Check this box to receive e-mail notification for follow-up comments to comments you posted. You can later disable this on a post-by-post basis... so if you leave this to YES, you can still disable follow-up notifications for comments you don't want follow-up mails anymore - i.e. for very popular posts.")
   );
@@ -433,10 +433,19 @@ function _comment_notify_mailalert($comment) {
   if (!empty($author->comment_notify_settings->node_notify) && $author->node_notify_mailalert == 1 && $user->uid != $author->uid && node_access('view', $node, $author)) {
     // Get the author's language.
     $language = user_preferred_language($author);
-    $raw_values = array(
-      'subject' => comment_notify_variable_registry_get('author_subject'),
-      'body'  => comment_notify_variable_registry_get('node_notify_default_mailtext'), //JS @todo:change this.
-    );
+    if (function_exists('i18n_variable_get')) {
+      $raw_values = array(
+        'subject' => i18n_variable_get('comment_notify_node_notify_subject', $language->language),
+        'body'  => i18n_variable_get('comment_notify_node_notify_body', $language->language), //JS @todo:change this.
+      );
+    }
+    else {
+      $raw_values = array(
+        'subject' => variable_get_value('comment_notify_node_notify_subject'),
+        'body'  => variable_get_value('comment_notify_node_notify_body'), //JS @todo:change this.
+      );
+    }
+    
     foreach ($raw_values as $k => $v) {
       $message[$k] = token_replace(t($v), array('comment' => $comment, 'node' => $node, 'user' => $user));
     }
@@ -476,11 +485,19 @@ function _comment_notify_mailalert($comment) {
       if (!node_access('view', $node, $recipient_user)) {
         continue;
       }
-
-      $raw_values = array(
-        'subject' => comment_notify_variable_registry_get('watcher_subject'),
-        'body'  => comment_notify_variable_registry_get('comment_notify_default_mailtext'), //JS @todo:change this var name.
-      );
+      
+      if (function_exists('i18n_variable_get')) {
+        $raw_values = array(
+          'subject' => i18n_variable_get('comment_notify_comment_notify_subject', $language->language),
+          'body'  => i18n_variable_get('comment_notify_comment_notify_body', $language->language), //JS @todo:change this.
+        );
+      }
+      else {
+        $raw_values = array(
+          'subject' => variable_get_value('comment_notify_node_notify_subject'),
+          'body'  => variable_get_value('comment_notify_node_notify_body'), //JS @todo:change this.
+        );
+      }
 
       foreach ($raw_values as $k => $v) {
         $message[$k] = token_replace(t($v), array('comment' => $comment, 'node' => $node, 'user' => $user));
@@ -559,114 +576,3 @@ function comment_notify_unsubscribe_submit($form, &$form_state) {
   }
 }
 
-/*
- * Page callback for administrative settings form.
- */
-function comment_notify_settings() {
-  module_load_include('inc', 'comment_notify', 'comment_notify');
-
-  $form['comment_notify_settings'] = array();
-
-  // Only perform comment_notify for certain node types.
-  $enabled_types = comment_notify_variable_registry_get('node_types');
-  $anonymous_problems = '';
-  foreach (node_type_get_names() as $type => $name) {
-    $checkboxes[$type] = check_plain($name);
-    $default[] = $type;
-
-    // If they don't have the ability to leave contact info, then we make a report
-    if (isset($enabled_types[$type]) && $enabled_types[$type] && variable_get('comment_anonymous_' . $type, COMMENT_ANONYMOUS_MAYNOT_CONTACT) == COMMENT_ANONYMOUS_MAYNOT_CONTACT) {
-      $account = drupal_anonymous_user();
-      if (user_access('subscribe to comments', $account)) {
-        $anonymous_problems[] = l(t('@content-type', array('@content-type' => $name)), 'admin/structure/types/manage/'. $type);
-      }
-    }
-  }
-
-  if (!empty($anonymous_problems)) {
-    drupal_set_message(t('Anonymous commenters have the permission to subscribe to comments but cannot leave their contact information on the following content types: !types.  You should either disable subscriptions on those types here, revoke the permission for anonymous users, or enable anonymous users to leave their contact information in the comment settings.', array('!types' => implode(', ', $anonymous_problems))), 'status', FALSE);
-  }
-
-  $form['comment_notify_settings']['comment_notify_node_types'] = array(
-    '#type' => 'checkboxes',
-    '#title' => t('Content types to enable for comment notification'),
-    '#default_value' => $enabled_types,
-    '#options' => $checkboxes,
-    '#description' => t('Comments on content types enabled here will have the option of comment notification.'),
-  );
-
-  $form['comment_notify_settings']['comment_notify_available_alerts'] = array(
-    '#type' => 'checkboxes',
-    '#title' => t('Available subscription modes'),
-    '#return_value' => 1,
-    '#default_value' => comment_notify_variable_registry_get('available_alerts'),
-    '#description' => t('Choose which notification subscription styles are available for users'),
-    '#options' => array(
-  COMMENT_NOTIFY_NODE     => t('All comments'),
-  COMMENT_NOTIFY_COMMENT  => t('Replies to my comment')
-  )
-  );
-
-  $available_options[COMMENT_NOTIFY_DISABLED] = t('No notifications');
-  $available_options += _comment_notify_options();
-  $form['comment_notify_settings']['comment_notify_default_anon_mailalert'] = array(
-    '#type' => 'select',
-    '#title' => t('Default state for the notification selection box for anonymous users'),
-    '#return_value' => 1,
-    '#default_value' => comment_notify_variable_registry_get('default_anon_mailalert'),
-    '#options' => $available_options,
-  );
-
-  $form['comment_notify_settings']['comment_notify_default_registered_mailalert'] = array(
-    '#type' => 'select',
-    '#title' => t('Default state for the notification selection box for registered users'),
-    '#return_value' => 1,
-    '#default_value' => comment_notify_variable_registry_get('default_registered_mailalert'),
-    '#description' => t('This flag presets the flag for the follow-up notification on the form that anon users will see when posting a comment'),
-    '#options' => $available_options,
-  );
-
-  $form['comment_notify_settings']['comment_notify_node_notify_default_mailalert'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Subscribe users to their node follow-up notification emails by default'),
-    '#default_value' => comment_notify_variable_registry_get('node_notify_default_mailalert'),
-    '#description' => t('If this is checked, new users will receive e-mail notifications for follow-ups on their nodes by default until they individually disable the feature.'),
-  );
-
-  $form['comment_notify_settings']['comment_notify_comment_notify_default_mailtext'] = array(
-    '#type' => 'textarea',
-    '#title' => t('Default mail text for sending out notifications to commenters'),
-    '#default_value' => comment_notify_variable_registry_get('comment_notify_default_mailtext'),
-    '#return_value' => 1,
-    '#cols' => 80,
-    '#rows' => 15
-  );
-
-  $form['comment_notify_settings']['comment_notify_node_notify_default_mailtext'] = array(
-    '#type' => 'textarea',
-    '#title' => t('Default mail text for sending out the notifications to node authors'),
-    '#default_value' => comment_notify_variable_registry_get('node_notify_default_mailtext'),
-     '#return_value' => 1,
-     '#cols' => 80,
-     '#rows' => 15
-  );
-
-  $form['comment_notify_settings']['token_help'] = array(
-    '#theme' => 'token_tree',
-    '#token_types' => array('comment'),
-  );
-
-  $form['#validate'] = array('comment_notify_settings_validate');
-
-  return system_settings_form($form);
-}
-
-function comment_notify_settings_validate($form, &$form_state) {
-  $sum_enabled = 0;
-  foreach ($form_state['values']['comment_notify_available_alerts'] as $enabled) {
-    $sum_enabled += $enabled;
-  }
-  if (!$sum_enabled) {
-    form_set_error('comment_notify_available_alerts', 'You must enable at least one subscription mode.');
-  }
-}
diff --git a/comment_notify.variable.inc b/comment_notify.variable.inc
new file mode 100644
index 0000000..6c05e31
--- /dev/null
+++ b/comment_notify.variable.inc
@@ -0,0 +1,121 @@
+<?php
+
+/**
+ * @file Declares variables needed for comment_notify
+ */
+
+/**
+ * Implements hook_variable_info()
+ */
+function comment_notify_variable_info($options) {
+  $variables['comment_notify_node_types'] = array(
+    'type' => 'options',
+    'title' => t('Content types to enable for comment notification'),
+    'description' => t('Comments on content types enabled here will have the option of comment notification.'),
+    'options' => _comment_notify_node_types_options(),
+    'group' => 'comment_notify_settings'
+  );
+  
+  $variables['comment_notify_available_alerts'] = array(
+    'type' => 'options',
+    'title' => t('Available subscription modes'),
+    'description' => t('Choose which notification subscription styles are available for users'),
+    'options' => array(
+      COMMENT_NOTIFY_NODE     => t('All comments'),
+      COMMENT_NOTIFY_COMMENT  => t('Replies to my comment')
+    ),
+    'group' => 'comment_notify_settings'
+  );
+  $variables['comment_notify_default_anon_mailalert'] = array(
+    'type' => 'select',
+    'title' => t('Default state for the notification selection box for anonymous users'),
+    'options' => array(
+      COMMENT_NOTIFY_DISABLED => t('No notifications'),
+      COMMENT_NOTIFY_NODE     => t('All comments'),
+      COMMENT_NOTIFY_COMMENT  => t('Replies to my comment')
+    ),
+    'group' => 'comment_notify_settings'
+  );
+  
+  $variables['comment_notify_comment_notify_[mail_part]'] = array(
+    'type' => 'mail_text',
+    'title' => t('Mail for sending out notifications to commenters'),
+    'description' => t('Notify commenters that a new comment has been posted'),
+    'children' => array(
+      'comment_notify_comment_notify_subject' => array(
+        'default' => '[site:name] :: new comment on [node:title]',
+      ),
+      'comment_notify_comment_notify_body' => array(
+        'default' => DEFAULT_MAILTEXT,
+      ),
+    ),
+    'group' => 'comment_notify_mails'
+  );
+  
+  $variables['comment_notify_default_registered_mailalert'] = array(
+    'type' => 'select',
+    'title' => t('Default state for the notification selection box for registered users'),
+    'options' => array(
+      COMMENT_NOTIFY_DISABLED => t('No notifications'),
+      COMMENT_NOTIFY_NODE     => t('All comments'),
+      COMMENT_NOTIFY_COMMENT  => t('Replies to my comment')
+    ),
+    'description' => t('This flag presets the flag for the follow-up notification on the form that anon users will see when posting a comment'),
+    'group' => 'comment_notify_settings'
+  );
+  
+  $variables['comment_notify_node_notify_default_mailalert'] = array(
+    'type' => 'boolean',
+    'title' => t('Subscribe users to their node follow-up notification emails by default'),
+    'default' => FALSE,
+    'description' => t('If this is checked, new users will receive e-mail notifications for follow-ups on their nodes by default until they individually disable the feature.'),
+    'group' => 'comment_notify_settings'
+  );
+  
+  $variables['comment_notify_node_notify_[mail_part]'] = array(
+    'type' => 'mail_text',
+    'title' => t('Mail for sending out notifications to node authors'),
+    'description' => t('Notify node authors when a new comment has been posted'),
+    'group' => 'comment_notify_mails',
+    'children' => array(
+      'comment_notify_node_notify_subject' => array(
+        'default' => '[site:name] :: new comment for your post.',
+      ),
+      'comment_notify_node_notify_body' => array(
+        'default' => AUTHOR_MAILTEXT,
+      ),
+    ),
+  );
+  
+  return $variables;
+}
+
+/**
+ * Helper function to get options for comment_notify_node_types
+ */
+function _comment_notify_node_types_options() {
+  foreach (node_type_get_names() as $type => $name) {
+    $checkboxes[$type] = check_plain($name);
+  }
+  return $checkboxes;
+}
+
+/**
+ * Implements hook_variable_group_info()
+ */
+function comment_notify_variable_group_info() {
+  $groups['comment_notify_settings'] = array(
+    'title' => t('Comment notify settings'),
+    'description' => t('Comment notify settings'),
+    'access' => 'administer comment notify',
+    'path' => 'admin/config/people/comment_notify/settings',
+  );
+  $groups['comment_notify_mails'] = array(
+    'title' => t('Comment notify emails'),
+    'description' => t('Comment notify emails'),
+    'access' => 'administer comment notify',
+    'path' => 'admin/config/people/comment_notify/settings',
+  );
+  return $groups;
+}
+
