diff --git a/sites/all/modules/options_element/options_element.inc b/sites/all/modules/options_element/options_element.inc
index 0a3da22..8572ce0 100644
--- a/sites/all/modules/options_element/options_element.inc
+++ b/sites/all/modules/options_element/options_element.inc
@@ -341,6 +341,17 @@ function _form_options_from_text($text, $key_type, $flat = FALSE, &$duplicates =
         'group' => $group,
       );
     }
+    elseif($key_type == 'associative') {
+      preg_match('/^([^|]+)\|(.*)$/', $row, $matches);
+      $key = ($matches[1]) ? $matches[1] : $row;
+      $value = ($matches[2]) ? $matches[2] : $row;
+      $keys[] = $key;
+      $items[] = array(
+        'key' => $key,
+        'value' => $value,
+        'group' => $group,
+      );
+    }
     // Set this this row as a straight value.
     else {
       $items[] = array(
diff --git a/sites/all/modules/options_element/options_element.js b/sites/all/modules/options_element/options_element.js
index bcd7726..066402e 100644
--- a/sites/all/modules/options_element/options_element.js
+++ b/sites/all/modules/options_element/options_element.js
@@ -274,7 +274,7 @@ Drupal.optionsElement.prototype.updateOptionElements = function() {
     var optionKey = $(this).find('input.option-key').val();
 
     // Update the elements key if matching the key and value.
-    if (self.keyType == 'associative') {
+    if (self.keyType == 'associative' && !optionKey) {
       $(this).find('input.option-key').val(optionValue);
     }
 
diff --git a/sites/default/modules/wh_form_manager/includes/wh_form_manager.admin.inc b/sites/default/modules/wh_form_manager/includes/wh_form_manager.admin.inc
index e8bf0b1..417d8fb 100644
--- a/sites/default/modules/wh_form_manager/includes/wh_form_manager.admin.inc
+++ b/sites/default/modules/wh_form_manager/includes/wh_form_manager.admin.inc
@@ -295,7 +295,7 @@ function wh_form_manager_export_variable_name($parents, $form = array()) {
  */
 function wh_form_manager_reset_element_keys(&$form) {
   foreach ($form as $key => $element) {
-    if (!empty($element['#element_name']) && is_array($element)) {
+    if (!empty($element['#element_name']) && is_array($element) && $element['#element_name'] != $key) {
       $element_name = $element['#element_name'];
       unset($element['#element_name']);
       $form[$element_name] = $element;
diff --git a/sites/default/modules/wh_form_manager/wh_form_manager.module b/sites/default/modules/wh_form_manager/wh_form_manager.module
index 4e23e83..2891826 100644
--- a/sites/default/modules/wh_form_manager/wh_form_manager.module
+++ b/sites/default/modules/wh_form_manager/wh_form_manager.module
@@ -135,12 +135,22 @@ function wh_form_manager_form_submit($form, &$form_state) {
   }
 }
 
+/* Deprecated; can be deleted when I finish development (left here in case I need to debug something)
+function wh_form_manager_form_options_submit($form, &$form_state) {
+  //drupal_set_message('<pre>' . print_r($form_state, TRUE) . '</pre>');
+  //drupal_set_message('<pre>' . print_r(array_keys($form_state), TRUE) . '</pre>');
+}
 
 function wh_form_manager_form_alter(&$form, &$form_state, $form_id) {
+  if ($form_id == 'options_element_elements') {
+    //drupal_set_message('<pre>' . print_r(array_keys($form), TRUE) . '</pre>');
+  }
   if ($form_id == 'form_builder_field_configure') {
-    drupal_set_message('<pre>' . print_r(array_keys($form), TRUE) . '</pre>');
+    //array_unshift($form['#submit'], 'wh_form_manager_form_options_submit');
+    //drupal_set_message('<pre>' . print_r(array_keys($form), TRUE) . '</pre>');
   }
 }
+*/
 
 /**
  * Implementation of hook_form_alter
@@ -251,7 +261,7 @@ function wh_form_manager_form_builder_types() {
       '#type' => 'select',
       '#options' => array('1' => 'one', '2' => 'two', '3' => 'three'),
       '#multiple_toggle' => TRUE,
-      '#key_type' => 'associative',
+      '#key_type' => 'mixed',
     ),
   );
 
@@ -407,8 +417,7 @@ function wh_form_manager_form_builder_types() {
  * Implementation of hook_form_builder_load().
  *
  * @param $form_id
- *   The unique identifier for the form being edited. For CCK, this is the
- *   content type name.
+ *   The unique identifier for the form being edited.
  */
 function wh_form_manager_form_builder_load($form_type, $form_id) {
   if ($form_type == 'wh_form_manager') {
