diff --git a/uc_store/uc_store.admin.inc b/uc_store/uc_store.admin.inc
index ffbc41c..6bbf0ee 100644
--- a/uc_store/uc_store.admin.inc
+++ b/uc_store/uc_store.admin.inc
@@ -111,14 +111,13 @@ function uc_store_configuration_page() {
  * Form to configure address fields.
  *
  * @see uc_store_address_fields_form_submit()
- * @see uc_store_address_fields_form_reset()
  * @see theme_uc_store_address_fields_form()
  * @ingroup forms
  */
 function uc_store_address_fields_form($form, &$form_state) {
-  $form['fields'] = array(
-    '#tree' => TRUE,
-  );
+  $form['uc_address_fields']['#tree'] = TRUE;
+  $form['uc_address_fields_required']['#tree'] = TRUE;
+  $form['uc_address_fields_weight']['#tree'] = TRUE;
 
   $fields = array(
     'first_name' => t('First name'),
@@ -136,15 +135,15 @@ function uc_store_address_fields_form($form, &$form_state) {
   $required = variable_get('uc_address_fields_required', drupal_map_assoc(array('first_name', 'last_name', 'street1', 'city', 'zone', 'postal_code', 'country')));
   $weight = uc_store_address_field_weights();
   foreach ($fields as $field => $label) {
-    $form['fields'][$field]['enabled'] = array(
+    $form['uc_address_fields'][$field] = array(
       '#type' => 'checkbox',
       '#default_value' => isset($current[$field]) ? TRUE : FALSE,
     );
-    $form['fields'][$field]['required'] = array(
+    $form['uc_address_fields_required'][$field] = array(
       '#type' => 'checkbox',
       '#default_value' => isset($required[$field]) ? TRUE : FALSE,
     );
-    $form['fields'][$field]['weight'] = array(
+    $form['uc_address_fields_weight'][$field] = array(
       '#type' => 'weight',
       '#default_value' => (isset($weight[$field])) ? $weight[$field] : 0,
       '#attributes' => array('class' => array('uc-store-address-fields-weight')),
@@ -152,7 +151,7 @@ function uc_store_address_fields_form($form, &$form_state) {
     $form['fields'][$field]['default'] = array(
       '#markup' => $label,
     );
-    $form['fields'][$field]['title'] = array(
+    $form['fields'][$field]['uc_field_' . $field] = array(
       '#type' => 'textfield',
       '#default_value' => uc_get_field_name($field),
       '#size' => 32,
@@ -160,16 +159,16 @@ function uc_store_address_fields_form($form, &$form_state) {
     $form['fields'][$field]['#weight'] = (isset($weight[$field])) ? $weight[$field] : 99;
   }
 
-  $form['actions'] = array('#type' => 'actions');
-  $form['actions']['save'] = array(
-    '#type' => 'submit',
-    '#value' => t('Save configuration'),
-  );
-  $form['actions']['reset'] = array(
-    '#type' => 'submit',
-    '#value' => t('Reset to defaults'),
-    '#submit' => array('uc_store_address_fields_form_reset'),
-  );
+  $form['#submit'][] = 'uc_store_address_fields_form_submit';
+  if (function_exists('i18n_variable_form_alter_settings')) {
+    if ($i18n_variables = i18n_variable_form_alter_settings($form, i18n_variable_list())) {
+      $form['#submit'][] = 'i18n_variable_form_submit';
+      $form['#i18n_variables'] = $i18n_variables;
+      $form += i18n_variable_form_selector();
+    }
+  }
+  $form = system_settings_form($form);
+  unset($form['#theme']);
 
   return $form;
 }
@@ -195,10 +194,10 @@ function theme_uc_store_address_fields_form($variables) {
   foreach (element_children($form['fields']) as $field) {
     $row = array(
       drupal_render($form['fields'][$field]['default']),
-      drupal_render($form['fields'][$field]['title']),
-      drupal_render($form['fields'][$field]['enabled']),
-      drupal_render($form['fields'][$field]['required']),
-      drupal_render($form['fields'][$field]['weight']),
+      drupal_render($form['fields'][$field]['uc_field_' . $field]),
+      drupal_render($form['uc_address_fields'][$field]),
+      drupal_render($form['uc_address_fields_required'][$field]),
+      drupal_render($form['uc_address_fields_weight'][$field]),
     );
 
     $rows[] = array(
@@ -225,40 +224,8 @@ function theme_uc_store_address_fields_form($variables) {
  * @see uc_store_address_fields_form()
  */
 function uc_store_address_fields_form_submit($form, &$form_state) {
-  $fields = array();
-  $required = array();
-  $weight = array();
-  foreach ($form_state['values']['fields'] as $field => $data) {
-    variable_set('uc_field_' . $field, $data['title']);
-    if (isset($data['enabled']) && $data['enabled']) {
-      $fields[] = $field;
-    }
-    if (isset($data['required']) && $data['required']) {
-      $required[] = $field;
-    }
-    if (isset($data['weight'])) {
-      $weight[$field] = $data['weight'];
-    }
-  }
-  variable_set('uc_address_fields', drupal_map_assoc($fields));
-  variable_set('uc_address_fields_required', drupal_map_assoc($required));
-  variable_set('uc_address_fields_weight', $weight);
-  drupal_set_message(t('The configuration options have been saved.'));
-}
-
-/**
- * Resets the address fields settings to their default values.
- *
- * @see uc_store_address_fields_form()
- */
-function uc_store_address_fields_form_reset($form_id, &$form_state) {
-  foreach ($form_state['values']['fields'] as $field => $data) {
-    variable_del('uc_field_' . $field);
-  }
-  variable_del('uc_address_fields');
-  variable_del('uc_address_fields_required');
-  variable_del('uc_address_fields_weight');
-  drupal_set_message(t('The configuration options have been reset to their default values.'));
+  $form_state['values']['uc_address_fields'] = array_filter($form_state['values']['uc_address_fields']);
+  $form_state['values']['uc_address_fields_required'] = array_filter($form_state['values']['uc_address_fields_required']);
 }
 
 /**
diff --git a/uc_store/uc_store.module b/uc_store/uc_store.module
index cada91c..0ae5e9b 100644
--- a/uc_store/uc_store.module
+++ b/uc_store/uc_store.module
@@ -227,19 +227,6 @@ function uc_store_init() {
 
   global $conf;
   $conf['i18n_variables'][] = 'uc_store_name';
-  $conf['i18n_variables'][] = 'uc_field_first_name';
-  $conf['i18n_variables'][] = 'uc_field_last_name';
-  $conf['i18n_variables'][] = 'uc_field_email';
-  $conf['i18n_variables'][] = 'uc_field_phone';
-  $conf['i18n_variables'][] = 'uc_field_company';
-  $conf['i18n_variables'][] = 'uc_field_address';
-  $conf['i18n_variables'][] = 'uc_field_street';
-  $conf['i18n_variables'][] = 'uc_field_street1';
-  $conf['i18n_variables'][] = 'uc_field_street2';
-  $conf['i18n_variables'][] = 'uc_field_city';
-  $conf['i18n_variables'][] = 'uc_field_zone';
-  $conf['i18n_variables'][] = 'uc_field_postal_code';
-  $conf['i18n_variables'][] = 'uc_field_country';
 }
 
 /**
diff --git a/uc_store/uc_store.variable.inc b/uc_store/uc_store.variable.inc
new file mode 100644
index 0000000..f3db87b
--- /dev/null
+++ b/uc_store/uc_store.variable.inc
@@ -0,0 +1,86 @@
+<?php
+
+/**
+ * @file
+ * Variable module hook implementations.
+ */
+
+
+/**
+ * Implements hook_variable_group_info().
+ */
+function uc_store_variable_group_info() {
+  $groups['uc_store'] = array(
+    'title' => t('Ubercart store settings'),
+    'access' => 'administer store',
+  );
+
+  return $groups;
+}
+
+/**
+ * Implements hook_variable_info().
+ */
+function uc_store_variable_info($options) {
+  $variables['uc_field_first_name'] = array(
+    'title' => t('First name'),
+    'description' => t('Ubercart address field label.'),
+    'group' => 'uc_store',
+    'default' => t('First name'),
+  );
+  $variables['uc_field_last_name'] = array(
+    'title' => t('Last name'),
+    'description' => t('Ubercart address field label.'),
+    'group' => 'uc_store',
+    'default' => t('Last name'),
+  );
+  $variables['uc_field_company'] = array(
+    'title' => 'Company',
+    'description' => t('Ubercart address field label.'),
+    'group' => 'uc_store',
+    'default' => t('Company'),
+  );
+  $variables['uc_field_street1'] = array(
+    'title' => 'Street address 1',
+    'description' => t('Ubercart address field label.'),
+    'group' => 'uc_store',
+    'default' => t('Street address 1'),
+  );
+  $variables['uc_field_street2'] = array(
+    'title' => 'Street address 2',
+    'description' => t('Ubercart address field label.'),
+    'group' => 'uc_store',
+    'default' => t('Street address 2'),
+  );
+  $variables['uc_field_city'] = array(
+    'title' => 'City',
+    'description' => t('Ubercart address field label.'),
+    'group' => 'uc_store',
+    'default' => t('Country'),
+  );
+  $variables['uc_field_zone'] = array(
+    'title' => 'State/Province',
+    'description' => t('Ubercart address field label.'),
+    'group' => 'uc_store',
+    'default' => t('State/Province'),
+  );
+  $variables['uc_field_postal_code'] = array(
+    'title' => 'Postal code',
+    'description' => t('Ubercart address field label.'),
+    'group' => 'uc_store',
+    'default' => t('Postal code'),
+  );
+  $variables['uc_field_country'] = array(
+    'title' => 'Country',
+    'description' => t('Ubercart address field label.'),
+    'group' => 'uc_store',
+    'default' => t('Country'),
+  );
+  $variables['uc_field_phone'] = array(
+    'title' => 'Phone number',
+    'description' => t('Ubercart address field label.'),
+    'group' => 'uc_store',
+    'default' => t('Phone number'),
+  );
+  return $variables;
+}
