diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 51e4b42..471583c 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,3 +1,16 @@
+
+CHANGELOG for Diff 7.x-3.x-alpha1 to ?
+======================================
+
+1) Extensive string review
+--------------------------
+See http://drupal.org/node/1785742
+
+2) Removed Field Formatter
+-------------------------- 
+This was added in the 3.x branch but removed due to the configurational
+complexity that was introduced.
+
 CHANGELOG for Diff 7.x-2.0+13-dev to 7.x-3.x
 ============================================
 
@@ -72,11 +85,6 @@ configurable settings to control the rendering of the comparison.
 
   b) View mode display options
 
-  Requires the Field formatter settings (field_formatter_settings) module to
-  do anything other than toggle the field visibility and weight.
-
-  This allows for fine grain control per content type and per bundle.
-
   For the Standard comparison, used when comparing different revisions, you
   need to do the following: Basic page (page) is used in these examples.
 
@@ -94,17 +102,9 @@ configurable settings to control the rendering of the comparison.
     After Saving this page, a new tab appears "Diff standard", click this or
     navigate directly to admin/structure/types/manage/page/display/diff_standard
 
-    - Options without Field formatter settings module
-      These are limited. You can hide or show the fields that you want to
+    - These are limited. You can hide or show the fields that you want to
       display when doing comparisons.
 
-    - Options with Field formatter settings module
-      All of the global variables mentioned above can be edited per field. Click
-      the small clog wheel beside the fields saying "Diff custom settings: No".
-
-      Check "Enable custom Diff settings" and configure the options that you
-      want to enable / configure. Click Update, and **Important** Save the page
-      using the buttons at the bottom.
 
 5) Standard comparison preview / Inline diff view setting
 ---------------------------------------------------------
diff --git a/diff.admin.inc b/diff.admin.inc
index bfb6cb0..3786f1c 100644
--- a/diff.admin.inc
+++ b/diff.admin.inc
@@ -47,12 +47,6 @@ function diff_admin_settings($form, $form_state) {
     '#default_value' => variable_get('diff_context_lines_trailing', 2),
     '#options' => $options,
   );
-  $form['diff_normalise_text'] = array(
-    '#type' => 'checkbox',
-    '#title' => t('Normalise text newlines before diff display'),
-    '#description' => t('Convert all Windows and Mac newlines to a single newline, so diff only need to deal with one newline type. Unix users should have no need to enable this option.'),
-    '#default_value' => variable_get('diff_normalise_text', 0),
-  );
 
   return system_settings_form($form);
 }
diff --git a/diff.diff.inc b/diff.diff.inc
index a5e5efe..bab8774 100644
--- a/diff.diff.inc
+++ b/diff.diff.inc
@@ -119,7 +119,7 @@ function diff_entity_fields_diff($old_entity, $new_entity, $context) {
       // Load files containing the field callbacks.
       _diff_autoload($field);
 
-      $field_context['settings'] = diff_get_field_instance_settings($field_context);
+      $field_context['settings'] = diff_get_field_settings($field_context);
 
       // Reference fields can optionally prepare objects in bulk to reduce
       // overheads related to multiple database calls. If a field considers
@@ -227,58 +227,27 @@ function diff_field_diff_view($items, $context) {
 /**
  * Helper function to get the settings for a given field or formatter.
  *
- * This will parse the field display formatter settings if the view mode is
- * set to either Diff standard or Diff complete. These then have any new
- * global settings added, followed by any field default settings.
- *
  * @param array $context
  *   This will get the settings for a field.
  *   - field (required): The field that the items belong to.
- *
- *   And optionally include these to parse the display settings.
  *   - entity: The entity that we are looking up.
  *   - instance: The instance that the items belong to.
  *   - view_mode: The view mode to use. Defaults to FALSE.
  *
  * @return array
- *   The settings for this field or formatter.
+ *   The settings for this field type.
  */
-function diff_get_field_instance_settings($context) {
-  // This only pulls out custom settings for fields that are using the two
-  // diff view modes. This is done to match the UI that only alters these
-  // two view modes.
-  $display_settings = array();
-  if (!empty($context['view_mode'])) {
-    $entity_type = $context['instance']['entity_type'];
-    $bundle = $context['instance']['bundle'];
-    $view_mode_settings = field_view_mode_settings($entity_type, $bundle);
-    $actual_mode = (!empty($view_mode_settings[$context['view_mode']]['custom_settings'])) ? $view_mode : 'default';
-    if (diff_supported_view_mode($actual_mode)) {
-      // Should we directly use the instance settings or the hooked version?
-      // $display = $context['instance']['display'][$actual_mode];
-      $display = field_get_display($context['instance'], $context['view_mode'], $context['entity']);
-      $display_settings = $display['settings'];
-    }
-  }
-  $display_settings += array(
-    'diff_custom' => 0,
-    'diff_custom_settings' => array(),
-  );
-
-  $field = $context['field'];
-
-  // Load files containing the field callbacks.
-  _diff_autoload($field);
+function diff_get_field_settings($field_context) {
+  $field = $field_context['field'];
 
   // Update saved settings from the global settings for this field type.
   $settings = variable_get("diff_{$field['module']}_field_{$field['type']}_default_options", array());
-  if (!empty($display_settings['diff_custom'])) {
-    // Merge any additional global settings into the field formatter settings.
-    $display_settings['diff_custom_settings'] += $settings;
-    $settings = $display_settings['diff_custom_settings'];
-  }
+
   $settings = _diff_field_default_settings($field['module'], $field['type'], $settings);
 
+  // Allow modules to alter the field settings based on the current context.
+  drupal_alter('diff_field_settings', $settings, $field_context);
+
   return $settings;
 }
 
diff --git a/diff.info b/diff.info
index 0759a5f..c746b7c 100644
--- a/diff.info
+++ b/diff.info
@@ -3,7 +3,3 @@ description = Show differences between content revisions.
 core = 7.x
 
 files[] = DiffEngine.php
-
-; This would support Module supports if it ever gets ported.
-; The module Field formatter settings enables field formatter alter hooks.
-recommends[] = field_formatter_settings
diff --git a/diff.install b/diff.install
index 809bbae..09a7082 100644
--- a/diff.install
+++ b/diff.install
@@ -26,7 +26,6 @@ function diff_uninstall() {
   // Delete global variables.
   variable_del('diff_context_lines_trailing');
   variable_del('diff_context_lines_leading');
-  variable_del('diff_normalise_text');
   variable_del('diff_theme');
   variable_del('diff_radio_behavior', '');
 
diff --git a/diff.module b/diff.module
index 0be259d..921f84f 100644
--- a/diff.module
+++ b/diff.module
@@ -597,11 +597,7 @@ function diff_inline_form_submit(&$form, &$form_state) {
  * - line endings: Mac, Windows and UNIX all use different line endings.
  */
 function diff_normalise_text($text) {
-  if (variable_get('diff_normalise_text', 0) && drupal_strlen($text)) {
-    // Convert all Windows and Mac newlines to a single newline, so diff only
-    // need to deal with one possibility.
-    $text = str_replace(array("\r\n", "\r"), "\n", $text);
-  }
+  $text = str_replace(array("\r\n", "\r"), "\n", $text);
   return $text;
 }
 
@@ -613,84 +609,6 @@ function diff_filter_xss($string) {
 }
 
 /**
- * Implements hook_field_formatter_info_alter().
- *
- * This adds the additional settings that are used by the module if the view
- * mode is used.
- *
- * This require the Field formatter settings (field_formatter_settings) module.
- */
-function diff_field_formatter_info_alter(&$formatters) {
-  foreach ($formatters as $formatter => $info) {
-    $settings = &$formatters[$formatter]['settings'];
-    $settings += array(
-      'diff_custom' => 0,
-      'diff_custom_settings' => array(),
-    );
-  }
-}
-
-/**
- * Implements hook_field_formatter_settings_form_alter().
- *
- * This require the Field formatter settings (field_formatter_settings) module.
- */
-function diff_field_formatter_settings_form_alter(array &$settings_form, array $context) {
-  if (diff_supported_view_mode($context['view_mode'])) {
-    module_load_include('diff.inc', 'diff');
-    $field = $context['field'];
-    $instance = $context['instance'];
-    $display = $instance['display'][$context['view_mode']];
-    $display['settings'] += array(
-      'diff_custom' => 0,
-      'diff_custom_settings' => array(),
-    );
-
-    $settings_form['diff_custom'] = array(
-      '#type' => 'checkbox',
-      '#title' => t('Enable custom Diff settings'),
-      '#default_value' => $display['settings']['diff_custom'],
-    );
-    $settings_form['diff_custom_settings'] = array(
-      '#type' => 'container',
-      '#states' => array(
-        'visible' => array(
-          ':input[name="fields[' . $field['field_name'] . '][settings_edit_form][settings][diff_custom]"]' => array('checked' => TRUE),
-        ),
-      ),
-    );
-
-    // This will handle the autoload for the field module.
-    $diff_settings = diff_get_field_instance_settings($context);
-    $func = $field['module'] . '_field_diff_options_form';
-    if (function_exists($func) && $options_form = $func($field['type'], $diff_settings)) {
-      $settings_form['diff_custom_settings'] += $options_form;
-    }
-    diff_global_settings_form($settings_form['diff_custom_settings'], $form_state, $type, $settings);
-  }
-}
-
-/**
- * Implements hook_field_formatter_settings_summary_alter().
- *
- * This require the Field formatter settings (field_formatter_settings) module.
- */
-function diff_field_formatter_settings_summary_alter(&$summary, array $context) {
-  if (diff_supported_view_mode($context['view_mode'])) {
-    $field = $context['field'];
-    $display = $context['instance']['display'][$context['view_mode']];
-
-    $summary = empty($summary) ? '' : $summary . '<br />';
-    if (empty($display['settings']['diff_custom'])) {
-      $summary .= t('Diff custom settings: No');
-    }
-    else {
-      $summary .= t('Diff custom settings: Yes');
-    }
-  }
-}
-
-/**
  * Helper function to check the view mode.
  */
 function diff_supported_view_mode($view_mode) {
diff --git a/readme.txt b/readme.txt
index 7b14305..f4fa9b7 100644
--- a/readme.txt
+++ b/readme.txt
@@ -70,12 +70,6 @@ e.g. http://www.example.com/admin/structure/types/manage/page
   
     iv) "Use Diff standard view mode when doing standard field comparisons"
   
-        This is recommended if you want to control the visibility and ordering
-        of the fields. And if you install the "Field formatter settings" module,
-        you can get additional options to control the field diff settings. 
-  
-        ** Note that it is recommended to use the global field settings. **
-  
     v) "Standard comparison preview" option allows you to control the rendering
        of the latest revisions' rendered content when you compare revisions. It
        also allows you to hide this altogether.
@@ -97,8 +91,6 @@ e.g. http://www.example.com/admin/structure/types/manage/page
 
    http://www.example.com/admin/config/content/diff/fields
 
-   a) Globally shared options
-   
    "Show field title" toggles field title visibility on the comparison page.
    
    "Markdown callback" is the callback used to render the field when viewing the
@@ -109,17 +101,6 @@ e.g. http://www.example.com/admin/structure/types/manage/page
    
    Other fields add additional settings here.
    
-   b) Field instance specific settings
-   
-   These are only enabled on the "Diff standard" and "Diff complete" view modes.
-   
-   If the "Field formatter settings" module is enabled, you can also set
-   instance specific settings per content type in the display settings.
-   
-   However, this is both time consuming and difficult to track. So you should
-   use global settings if possible.
-
-
 3) Entity revisioning settings
 
 We provide global configurable settings on all entities, but the module only
