diff --git a/better_formats.module b/better_formats.module
index 1f3f9c3..d84c6ef 100755
--- a/better_formats.module
+++ b/better_formats.module
@@ -136,9 +136,11 @@ function better_formats_filter_process_format($element) {
   global $user;
 
   $instances = field_info_instances($element['#entity_type'], $element['#bundle']);
+  // We check if this field is using overriden settings.
   if ((isset($instances[$element['#field_name']]['settings']['better_formats']) && $instances[$element['#field_name']]['settings']['better_formats']['override'])){
     $settings =  $instances[$element['#field_name']]['settings']['better_formats'];
   } else {
+    // Either the override checkbox isn't set for this field or there are no settings so we look for the bundle default.
     $settings = variable_get('better_formats_default_' . $element['#entity_type'], array());
     if (isset($settings['better_formats'])){
       $settings = $settings['better_formats'];
@@ -235,7 +237,12 @@ function better_formats_filter_process_format($element) {
       );
     }
   }
-
+  // If no #default_value then we assume this is a new item, so we set #format to the first item key in our options array.
+  if (empty($element['#default_value'])){
+     $default = array_shift(array_keys($options));
+     $element['#format'] = $default;
+  }
+  
   $element['format']['format'] = array(
     '#type' => 'select',
     '#title' => t('Text format'),
@@ -324,6 +331,7 @@ function better_formats_form_field_ui_field_edit_form_alter(&$form, &$form_state
     // Add a submit handler to save default values on empty fields.
     $form['#submit'][] = 'better_formats_form_field_ui_edit_form_submit';
     $settings = isset($form['#instance']['settings']['better_formats']) ? $form['#instance']['settings']['better_formats'] : array();
+    // Add in our formats table
     $form['instance']['settings'] += better_formats_format_table($settings);
     $form['instance']['settings']['better_formats']['override'] = array(
       '#type' => 'checkbox',
@@ -341,8 +349,7 @@ function better_formats_form_field_ui_field_edit_form_alter(&$form, &$form_state
  *   A keyed array of the default values for the form
  */
 function better_formats_format_table($defaults) {
-  
-  $formats = filter_formats();
+   $formats = filter_formats();
   $form = array();
     $form['better_formats'] = array(
       '#tree' => TRUE,
@@ -351,7 +358,6 @@ function better_formats_format_table($defaults) {
       '#theme' => 'better_formats_filter_table'
     );  
   foreach ($formats as $key => $format) {
-
     $form['better_formats']['formats'][$key]['name'] = array('#markup' => $format->name);
     $form['better_formats']['formats'][$key]['weight'] = array(
       '#type' => 'weight',
diff --git a/p.patch b/p.patch
index 9519e3e..e69de29 100644
--- a/p.patch
+++ b/p.patch
@@ -1,222 +0,0 @@
-diff --git a/better_formats.admin_settings.inc b/better_formats.admin_settings.inc
-old mode 100644
-new mode 100755
-index 39e2c0f..5c95f13
---- a/better_formats.admin_settings.inc
-+++ b/better_formats.admin_settings.inc
-@@ -34,3 +34,26 @@ function better_formats_admin_settings_form($form, &$form_state) {
- 
-   return system_settings_form($form);
- }
-+
-+/**
-+ * FAPI form builder for default entity formats.
-+ *
-+ * @see better_formats_menu()
-+ */
-+function better_formats_default_settings_form($form, &$form_state, $entity) {
-+  $settings = variable_get('better_formats_default_' . $entity, array());
-+  $settings = isset($settings['better_formats']) ? $settings['better_formats'] : array();
-+  $form['better_formats'] = better_formats_format_table($settings);
-+  $form['#entity'] = $entity;
-+  $form['submit'] = array(
-+    '#type' => 'submit',
-+    '#value' => t('Save configuration')
-+  );
-+  return $form;
-+}
-+
-+function better_formats_default_settings_form_submit($form, &$form_state) {
-+  variable_set('better_formats_default_' . $form['#entity'], array('better_formats' => $form_state['values']['better_formats']));
-+  drupal_set_message(t('The configuration options have been saved.'));
-+  $form_state['redirect'] = 'admin/config/content/formats/settings';
-+}
-\ No newline at end of file
-diff --git a/better_formats.module b/better_formats.module
-old mode 100644
-new mode 100755
-index c49969e..1f3f9c3
---- a/better_formats.module
-+++ b/better_formats.module
-@@ -1,10 +1,23 @@
- <?php
-+
- /**
-  * @file
-  * Enhances Drupal's core input format settings.
-  */
- 
- /**
-+ * Implements hook_theme()
-+ */
-+function better_formats_theme() {
-+  return array(
-+    'better_formats_filter_table' => array(
-+      'render element' => 'form',
-+      'file' => 'better_formats.theme.inc'
-+    )
-+  );
-+}
-+
-+/**
-  * Implements of hook_perm().
-  */
- function better_formats_permission() {
-@@ -35,7 +48,7 @@ function better_formats_permission() {
-  * Implements hook_menu().
-  */
- function better_formats_menu() {
--  $items   = array();
-+  $items = array();
-   $items['admin/config/content/formats/settings'] = array(
-     'title' => 'Settings',
-     'description' => 'Manage input formats',
-@@ -46,8 +59,21 @@ function better_formats_menu() {
-     'weight' => 3,
-     'file' => 'better_formats.admin_settings.inc',
-   );
-+  $entities = entity_get_info();
-+  foreach (array_keys($entities) as $entity) {
-+    $items['admin/config/content/formats/settings/defaults/' . $entity] = array(
-+      'title' => $entity . ' default',
-+      'description' => 'Set the default formats for the ' . $entity . ' format',
-+      'page callback' => 'drupal_get_form',
-+      'page arguments' => array('better_formats_default_settings_form', $entity),
-+      'access arguments' => array('administer filters'),
-+      'type' => MENU_LOCAL_ACTION,
-+      'weight' => 3,
-+      'file' => 'better_formats.admin_settings.inc',
-+    );    
-+  }
-   /*
--  $items['admin/config/content/formats/defaults'] = array(
-+    $items['admin/config/content/formats/defaults'] = array(
-     'title' => 'Defaults',
-     'description' => 'Manage input formats',
-     'page callback' => 'drupal_get_form',
-@@ -56,8 +82,8 @@ function better_formats_menu() {
-     'type' => MENU_LOCAL_TASK,
-     'weight' => 2,
-     'file' => 'better_formats.admin_defaults.inc',
--  );
--  */
-+    );
-+   */
-   return $items;
- }
- 
-@@ -109,12 +135,22 @@ function better_formats_element_info_alter(&$type) {
- function better_formats_filter_process_format($element) {
-   global $user;
- 
-+  $instances = field_info_instances($element['#entity_type'], $element['#bundle']);
-+  if ((isset($instances[$element['#field_name']]['settings']['better_formats']) && $instances[$element['#field_name']]['settings']['better_formats']['override'])){
-+    $settings =  $instances[$element['#field_name']]['settings']['better_formats'];
-+  } else {
-+    $settings = variable_get('better_formats_default_' . $element['#entity_type'], array());
-+    if (isset($settings['better_formats'])){
-+      $settings = $settings['better_formats'];
-+    }
-+  }
-+
-   $show_selection = TRUE;
-   if (isset($element['#entity_type'])) {
--    $show_selection  = user_access('show format selection for ' . $element['#entity_type']);
-+    $show_selection = user_access('show format selection for ' . $element['#entity_type']);
-   }
--  $show_tips       = user_access('show format tips');
--  $show_tips_link  = user_access('show more format tips link');
-+  $show_tips = user_access('show format tips');
-+  $show_tips_link = user_access('show more format tips link');
- 
-   // Ensure that children appear as subkeys of this element.
-   $element['#tree'] = TRUE;
-@@ -177,12 +213,21 @@ function better_formats_filter_process_format($element) {
-   // Get a list of formats that the current user has access to.
-   $formats = filter_formats($user);
-   $options = array();
-+
-+  // Set our weights on our formats
-+  foreach ($formats as &$format) {
-+    $format->weight = isset($settings['formats'][$format->format]) ? $settings['formats'][$format->format]['weight'] : $format->weight;
-+  }
-+  uasort($formats, '_better_formats_sort');
-+
-   foreach ($formats as $format) {
-     // If not showing selection remove all formats except default.
-     if ($format->format !== $element['#format'] && !$show_selection) {
-       continue;
-     }
--    $options[$format->format] = $format->name;
-+    if (!isset($settings['formats'][$format->format]) || !$settings['formats'][$format->format]['disable']) {
-+      $options[$format->format] = $format->name;
-+    }
-     if ($show_tips) {
-       $element['format']['guidelines'][$format->format] = array(
-         '#theme' => 'filter_guidelines',
-@@ -263,6 +308,13 @@ function better_formats_filter_process_format($element) {
- }
- 
- /**
-+ * Sort our formats by weight
-+ */
-+function _better_formats_sort($a, $b) {
-+  return $a->weight > $b->weight;
-+}
-+
-+/**
-  * Implements hook_form_FORM_ID_alter().
-  */
- function better_formats_form_field_ui_field_edit_form_alter(&$form, &$form_state, $form_id) {
-@@ -271,7 +323,51 @@ function better_formats_form_field_ui_field_edit_form_alter(&$form, &$form_state
-   if ($text_processing == 1 && variable_get('better_formats_per_field_core', 0)) {
-     // Add a submit handler to save default values on empty fields.
-     $form['#submit'][] = 'better_formats_form_field_ui_edit_form_submit';
-+    $settings = isset($form['#instance']['settings']['better_formats']) ? $form['#instance']['settings']['better_formats'] : array();
-+    $form['instance']['settings'] += better_formats_format_table($settings);
-+    $form['instance']['settings']['better_formats']['override'] = array(
-+      '#type' => 'checkbox',
-+      '#title' => t('Override default formats'),
-+      '#default_value' => isset($settings['override']) ? $settings['override'] : 0,
-+    );
-+
-+  }
-+}
-+
-+/**
-+ * Helper function to generate our draggable table form for format lists
-+ * 
-+ * @param $defaults
-+ *   A keyed array of the default values for the form
-+ */
-+function better_formats_format_table($defaults) {
-+  
-+  $formats = filter_formats();
-+  $form = array();
-+    $form['better_formats'] = array(
-+      '#tree' => TRUE,
-+      '#type' => 'fieldset',
-+      '#title' => t('Input Formats'),
-+      '#theme' => 'better_formats_filter_table'
-+    );  
-+  foreach ($formats as $key => $format) {
-+
-+    $form['better_formats']['formats'][$key]['name'] = array('#markup' => $format->name);
-+    $form['better_formats']['formats'][$key]['weight'] = array(
-+      '#type' => 'weight',
-+      '#default_value' => isset($defaults['formats'][$key]) ? $defaults['formats'][$key]['weight'] : 0,
-+      '#delta' => 50,
-+    );
-+    
-+    $form['better_formats']['formats'][$key]['disable'] = array(
-+      '#type' => 'checkbox',
-+      '#default_value' => isset($defaults['formats'][$key]) ? $defaults['formats'][$key]['disable'] : 0,
-+    );
-+
-+    $form['better_formats']['formats'][$key]['#weight'] = isset($defaults['formats'][$key]) ? $defaults['formats'][$key]['weight'] : 0;
-   }
-+  
-+  return $form;
- }
- 
- /**
