diff --git a/commerce_currency_settings.module b/commerce_currency_settings.module
index 39645fe..8e68b7f 100644
--- a/commerce_currency_settings.module
+++ b/commerce_currency_settings.module
@@ -41,9 +41,10 @@ function commerce_currency_settings_settings_form($form, &$form_state) {
 
   $form['commerce_currency_settings'] = array(
     '#type' => 'container',
-    '#tree' => TRUE,
+    // '#tree' => TRUE,
   );
 
+
   foreach ($enable_currencies as $currency) {
     $form['commerce_currency_settings'][$currency['code']] = array(
       '#type' => 'fieldset',
@@ -53,6 +54,7 @@ function commerce_currency_settings_settings_form($form, &$form_state) {
       '#tree' => TRUE,
     );
 
+    $fields = variable_get($currency['code'], array());
     $form['commerce_currency_settings'][$currency['code']]['code'] = array(
       '#type' => 'textfield',
       '#title' => t('Code'),
@@ -74,7 +76,7 @@ function commerce_currency_settings_settings_form($form, &$form_state) {
       '#type' => 'textfield',
       '#title' => t('Symbol'),
       '#description' => t('The currency symbol. For example $.'),
-      '#default_value' => $currency['symbol'],
+      '#default_value' => (!empty($fields['symbol'])) ? $fields['symbol'] : $currency['symbol'],
       '#required' => TRUE,
       '#size' => 3,
     );
@@ -82,7 +84,7 @@ function commerce_currency_settings_settings_form($form, &$form_state) {
       '#type' => 'textfield',
       '#title' => t('Name'),
       '#description' => t('The name of the currency. Translatable.'),
-      '#default_value' => $currency['name'],
+      '#default_value' => (!empty($fields['name'])) ? $fields['name'] :$currency['name'],
       '#required' => TRUE,
       '#size' => 16,
     );
@@ -95,13 +97,13 @@ function commerce_currency_settings_settings_form($form, &$form_state) {
         'after' => t('After'),
         'hidden' => t('Hidden'),
       ),
-      '#default_value' => $currency['symbol_placement'],
+      '#default_value' => (!empty($fields['symbol_placement'])) ? $fields['symbol_placement'] : $currency['symbol_placement'],
     );
     $form['commerce_currency_settings'][$currency['code']]['symbol_spacer'] = array(
       '#type' => 'textfield',
       '#title' => t('Symbol spacer'),
       '#description' => t("The spacer to put between the price amount and a currency symbol that appears after the amount; defaults to ' '."),
-      '#default_value' => $currency['symbol_spacer'],
+      '#default_value' => (!empty($fields['symbol_spacer'])) ? $fields['symbol_spacer'] : $currency['symbol_spacer'],
       '#type' => 'textfield',
       '#size' => 5,
     );
@@ -114,20 +116,20 @@ function commerce_currency_settings_settings_form($form, &$form_state) {
         'after' => t('After'),
         'hidden' => t('Hidden'),
       ),
-      '#default_value' => $currency['code_placement'],
+      '#default_value' => (!empty($fields['code_placement'])) ? $fields['code_placement'] : $currency['code_placement'],
     );
     $form['commerce_currency_settings'][$currency['code']]['code_spacer'] = array(
       '#type' => 'textfield',
       '#title' => t('Code spacer'),
       '#description' => t("The spacer to put between the price amount and currency code whether the code is displayed before or after the amount; defaults to ' '."),
-      '#default_value' => $currency['code_spacer'],
+      '#default_value' => (!empty($fields['code_spacer'])) ? $fields['code_spacer'] : $currency['code_spacer'],
       '#size' => 5,
     );
     $form['commerce_currency_settings'][$currency['code']]['minor_unit'] = array(
       '#type' => 'textfield',
       '#title' => t('Minor unit'),
       '#description' => t('Name of the minor unit of the currency. For example Cent. Translatable'),
-      '#default_value' => $currency['minor_unit'],
+      '#default_value' => (!empty($fields['minor_unit'])) ? $fields['minor_unit'] : $currency['minor_unit'],
       '#required' => TRUE,
       '#size' => 16,
     );
@@ -135,7 +137,7 @@ function commerce_currency_settings_settings_form($form, &$form_state) {
       '#type' => 'textfield',
       '#title' => t('Major unit'),
       '#description' => t('Name of the minor unit of the currency. For example Cent. Translatable'),
-      '#default_value' => $currency['major_unit'],
+      '#default_value' => (!empty($fields['major_unit'])) ? $fields['major_unit'] : $currency['major_unit'],
       '#required' => TRUE,
       '#size' => 16,
     );
@@ -150,13 +152,13 @@ function commerce_currency_settings_settings_form($form, &$form_state) {
         '0.05' => '0.05',
         '0.5' => '0.5',
       ),
-      '#default_value' => $currency['rounding_step'],
+      '#default_value' => (!empty($fields['rounding_step'])) ? $fields['rounding_step'] : $currency['rounding_step'],
     );
     $form['commerce_currency_settings'][$currency['code']]['decimals'] = array(
       '#type' => 'textfield',
       '#title' => t('Decimals'),
       '#description' => t('The number of decimals to display. Default: 2'),
-      '#default_value' => $currency['decimals'],
+      '#default_value' => (!empty($fields['decimals'])) ? $fields['decimals'] : $currency['decimals'],
       '#element_validate' => array('element_validate_integer_positive'),
       '#required' => TRUE,
       '#size' => 5,
@@ -165,21 +167,21 @@ function commerce_currency_settings_settings_form($form, &$form_state) {
       '#type' => 'textfield',
       '#title' => t('Thousands separator'),
       '#description' => t('The char to split the value in groups of thousand. Default: ,'),
-      '#default_value' => $currency['thousands_separator'],
+      '#default_value' => (!empty($fields['thousands_separator'])) ? $fields['thousands_separator'] : $currency['thousands_separator'],
       '#size' => 5,
     );
     $form['commerce_currency_settings'][$currency['code']]['decimal_separator'] = array(
       '#type' => 'textfield',
       '#title' => t('Decimal separator'),
       '#description' => t('The char to split the integer from the decimal part. Default: .'),
-      '#default_value' => $currency['decimal_separator'],
+      '#default_value' => (!empty($fields['decimal_separator'])) ? $fields['decimal_separator'] : $currency['decimal_separator'],
       '#size' => 5,
     );
     $form['commerce_currency_settings'][$currency['code']]['format_callback'] = array(
       '#type' => 'textfield',
       '#title' => t('Format callback'),
       '#description' => t('Custom callback function to format a price value.'),
-      '#default_value' => $currency['format_callback'],
+      '#default_value' => (!empty($fields['format_callback'])) ? $fields['format_callback'] : $currency['format_callback'],
       '#element_validate' => array('commerce_currency_settings_element_validate_function'),
       '#size' => 50,
     );
@@ -187,7 +189,7 @@ function commerce_currency_settings_settings_form($form, &$form_state) {
       '#type' => 'textfield',
       '#title' => t('Conversion callback'),
       '#description' => t('Custom callback function to convert a price amount from one currency into another.'),
-      '#default_value' => $currency['conversion_callback'],
+      '#default_value' => (!empty($fields['conversion_callback'])) ? $fields['conversion_callback'] : $currency['conversion_callback'],
       '#element_validate' => array('commerce_currency_settings_element_validate_function'),
       '#size' => 50,
     );
@@ -195,7 +197,7 @@ function commerce_currency_settings_settings_form($form, &$form_state) {
       '#type' => 'textfield',
       '#title' => t('Conversion rate'),
       '#description' => t('The conversion rate of this currency calculated against the base currency, expressed as a decimal value denoting the value of one major unit of this currency when converted to the base currency. Default: 1'),
-      '#default_value' => $currency['conversion_rate'],
+      '#default_value' => (!empty($fields['conversion_rate'])) ? $fields['conversion_rate'] : $currency['conversion_rate'],
       '#element_validate' => array('element_validate_number'),
       '#size' => 5,
     );
@@ -241,6 +243,15 @@ function commerce_currency_settings_settings_form_validate($form, &$form_state)
  * Form submit handler for the Commerce Currency Settings settings form.
  */
 function commerce_currency_settings_settings_form_submit($form, &$form_state) {
+  $enable_currencies = commerce_currencies(TRUE, TRUE);
+  if ($currencies_cached = cache_get('commerce_currencies:en')) {
+    $all_currencies = $currencies_cached->data;
+    $enabled_currencies = array_diff(array_values(variable_get('commerce_enabled_currencies', array('USD' => 'USD'))), array(0));
+  }
+  $form_state['values']['commerce_currency_settings'] = array();
+  foreach ($enabled_currencies as $ec) {
+    $form_state['values']['commerce_currency_settings'][$ec] = $form_state['values'][$ec];
+  }
   cache_clear_all('commerce_currencies:', 'cache', TRUE);
 }
 
