diff --git a/fullcalendar.module b/fullcalendar.module
index ebfe57c..fb8c83e 100644
--- a/fullcalendar.module
+++ b/fullcalendar.module
@@ -184,6 +184,7 @@ function fullcalendar_update($action, $eid) {
   }
 
   // Save the new start/end values.
+  field_attach_presave($entity_type, $entity);
   field_attach_update($entity_type, $entity);
 
   drupal_json_output(array('msg' => t('The new event time has been saved.') . ' [' . l(t('Close'), NULL, array('attributes' => array('class' => array('fullcalendar-status-close')))) . ']', 'dom_id' => $_POST['dom_id']));
diff --git a/includes/fullcalendar.fullcalendar.inc b/includes/fullcalendar.fullcalendar.inc
index 3612b61..84feb83 100644
--- a/includes/fullcalendar.fullcalendar.inc
+++ b/includes/fullcalendar.fullcalendar.inc
@@ -460,84 +460,6 @@ function fullcalendar_fullcalendar_options_form(&$form, &$form_state, &$view) {
 }
 
 /**
- * Implements hook_fullcalendar_options_submit().
- */
-function fullcalendar_fullcalendar_options_submit(&$form, &$form_state, $view) {
-  fullcalendar_process_options($form_state['values']['style_options']);
-}
-
-/**
- * Processes the raw FullCalendar values into options for the jQuery plugin.
- *
- * @param array $values
- *   The unprocessed Views style option values.
- */
-function fullcalendar_process_options(&$values) {
-  global $language;
-
-  $options = array(
-    'buttonText' => array(
-      'day' => t('Day'),
-      'week' => t('Week'),
-      'month' => t('Month'),
-      'today' => t('Today'),
-    ),
-    'allDayText' => t('All day'),
-    'monthNames' => array_values(date_month_names(TRUE)),
-    'monthNamesShort' => array_values(date_month_names_abbr(TRUE)),
-    'dayNames' => date_week_days(TRUE),
-    'dayNamesShort' => date_week_days_abbr(TRUE),
-    'isRTL' => (bool) $language->direction,
-  );
-  $advanced = !empty($values['advanced']);
-  foreach ($values as $key => $value) {
-    if (is_array($value)) {
-      if ($key == 'times' && !empty($value['default_date'])) {
-        $options['year'] = $value['date']['year'];
-        $options['month'] = $value['date']['month'];
-        $options['date'] = $value['date']['day'];
-      }
-      continue;
-    }
-
-    if (in_array($key, array('left', 'center', 'right'))) {
-      $options['header'][$key] = $value;
-    }
-    elseif (in_array($key, array('timeformatMonth', 'timeformatWeek', 'timeformatDay'))) {
-      if ($advanced) {
-        $options['timeFormat'][strtolower(substr($key, 10))] = $value;
-      }
-    }
-    elseif (in_array($key, array('columnformatMonth', 'columnformatWeek', 'columnformatDay'))) {
-      if ($advanced) {
-        $options['columnFormat'][strtolower(substr($key, 12))] = $value;
-      }
-    }
-    elseif (in_array($key, array('titleformatMonth', 'titleformatWeek', 'titleformatDay'))) {
-      if ($advanced) {
-        $options['titleFormat'][strtolower(substr($key, 11))] = $value;
-      }
-    }
-    elseif ($advanced && $key == 'axisFormat') {
-      $options[$key] = $value;
-    }
-    elseif ($key == 'timeformat') {
-      if (!$advanced) {
-        $options['timeFormat'] = $value;
-      }
-    }
-    elseif ($key == 'contentHeight' && empty($value)) {
-      // Don't add this if it is 0.
-    }
-    else {
-      $options[$key] = $value;
-    }
-  }
-  unset($options['advanced']);
-  $values['fullcalendar'] = $options;
-}
-
-/**
  * Implements hook_fullcalendar_options_process().
  */
 function fullcalendar_fullcalendar_options_process(&$variables, &$settings) {
@@ -548,7 +470,7 @@ function fullcalendar_fullcalendar_options_process(&$variables, &$settings) {
     $view->dom_id = 'fc-' . $fc_dom_id++;
   }
 
-  $options = $view->style_plugin->options;
+  $options = $view->display_handler->get_option('style_options');
 
   $options['gcal'] = array();
   foreach ($view->field as $field) {
@@ -622,6 +544,71 @@ function fullcalendar_fullcalendar_options_process(&$variables, &$settings) {
  * Implements hook_fullcalendar_options_pre_view().
  */
 function fullcalendar_fullcalendar_options_pre_view(&$settings, &$view) {
+  global $language;
+
+  $options = array(
+    'buttonText' => array(
+      'day' => t('Day'),
+      'week' => t('Week'),
+      'month' => t('Month'),
+      'today' => t('Today'),
+    ),
+    'allDayText' => t('All day'),
+    'monthNames' => array_values(date_month_names(TRUE)),
+    'monthNamesShort' => array_values(date_month_names_abbr(TRUE)),
+    'dayNames' => date_week_days(TRUE),
+    'dayNamesShort' => date_week_days_abbr(TRUE),
+    'isRTL' => (bool) $language->direction,
+  );
+  $advanced = !empty($settings['advanced']);
+  foreach ($settings as $key => $value) {
+    if (is_array($value)) {
+      if ($key == 'times') {
+        $settings[$key]['date']['date'] = $value['date']['day'];
+        unset($settings[$key]['date']['day']);
+      }
+      continue;
+    }
+    elseif (in_array($key, array('left', 'center', 'right'))) {
+      $options['header'][$key] = $value;
+    }
+    elseif (in_array($key, array('timeformatMonth', 'timeformatWeek', 'timeformatDay'))) {
+      if ($advanced) {
+        $options['timeFormat'][strtolower(substr($key, 10))] = $value;
+      }
+    }
+    elseif (in_array($key, array('columnformatMonth', 'columnformatWeek', 'columnformatDay'))) {
+      if ($advanced) {
+        $options['columnFormat'][strtolower(substr($key, 12))] = $value;
+      }
+    }
+    elseif (in_array($key, array('titleformatMonth', 'titleformatWeek', 'titleformatDay'))) {
+      if ($advanced) {
+        $options['titleFormat'][strtolower(substr($key, 11))] = $value;
+      }
+    }
+    elseif ($advanced && $key == 'axisFormat') {
+      $options[$key] = $value;
+    }
+    elseif ($key == 'timeformat') {
+      if (!$advanced) {
+        $options['timeFormat'] = $value;
+      }
+    }
+    elseif ($key == 'contentHeight' && empty($value)) {
+      // Don't add this if it is 0.
+    }
+    elseif ($key == 'advanced') {
+      // Don't add this value ever.
+    }
+    else {
+      $options[$key] = $value;
+    }
+    // Unset all values that have been migrated.
+    unset($settings[$key]);
+  }
+  $settings['fullcalendar'] = $options;
+
   // First, use the default date if set.
   if (!empty($settings['times']['default_date'])) {
     $settings['date'] = $settings['times']['date'];
diff --git a/includes/views/plugins/fullcalendar_plugin_style_fullcalendar.inc b/includes/views/plugins/fullcalendar_plugin_style_fullcalendar.inc
index 37c1258..f299fe9 100644
--- a/includes/views/plugins/fullcalendar_plugin_style_fullcalendar.inc
+++ b/includes/views/plugins/fullcalendar_plugin_style_fullcalendar.inc
@@ -87,10 +87,9 @@ class fullcalendar_plugin_style_fullcalendar extends views_plugin_style {
       unset($this->options['times']['fc_timeformat']);
     }
 
-    // If the options are from before the plugin system, update them.
+    // Move Colorbox settings into their own array.
     $options = $this->options;
-    if (!isset($options['fullcalendar'])) {
-      // Move Colorbox settings into their own array.
+    if (isset($options['colorbox']) && !is_array($options['colorbox'])) {
       $colorbox = array();
       foreach ($options as $key => $value) {
         if (substr($key, 0, 8) == 'colorbox') {
@@ -99,10 +98,6 @@ class fullcalendar_plugin_style_fullcalendar extends views_plugin_style {
         }
       }
       $options['colorbox'] = $colorbox;
-
-      // Process the old values.
-      fullcalendar_include_api();
-      fullcalendar_process_options($options);
       $this->unpack_options($this->options, $options);
     }
   }
@@ -176,14 +171,16 @@ class fullcalendar_plugin_style_fullcalendar extends views_plugin_style {
   }
 
   function fullcalendar_parse_fields() {
+    $this->view->init_handlers();
+
     $labels = $this->display->handler->get_field_labels();
-    $field_options = array();
-    foreach ($this->display->handler->get_handlers('field') as $id => $field) {
+    $date_fields = array();
+    foreach ($this->view->field as $id => $field) {
       if (fullcalendar_field_is_date($field, TRUE)) {
-        $field_options[$id] = $labels[$id];
+        $date_fields[$id] = $labels[$id];
       }
     }
-    return $field_options;
+    return $date_fields;
   }
 
   /**
