diff --git a/editor.module b/editor.module
index ca11e0f..c573835 100755
--- a/editor.module
+++ b/editor.module
@@ -65,6 +65,23 @@ function editor_module_implements_alter(&$implementations, $hook) {
 }
 
 /**
+ * Implements hook_menu_alter().
+ */
+function editor_menu_alter(&$items) {
+  // Modify the formats page title and description to reflect the addition of
+  // WYSIWYG editors.
+  if (!empty($items['admin/config/content/formats'])) {
+    $items['admin/config/content/formats']['title'] = 'Text editors and formats';
+    $items['admin/config/content/formats']['description'] = 'Configure WYSIWYG and text editors on the site. Restrict or allow certain HTML tags to be used in content.';
+  }
+
+  // Disable tips for individual filter formats.
+  if (!empty($items['filter/tips/%filter_format'])) {
+    $items['filter/tips/%filter_format']['access callback'] = FALSE;
+  }
+}
+
+/**
  * Implements hook_theme_registry_alter().
  */
 function editor_theme_registry_alter(&$theme_registry) {
@@ -76,6 +93,50 @@ function editor_theme_registry_alter(&$theme_registry) {
     $theme_registry['textarea']['theme path'] = $path;
     $theme_registry['textarea']['function'] = 'editor_textarea';
   }
+
+  // Add an 'editor' column to the text format overview form.
+  if (isset($theme_registry['filter_admin_overview'])) {
+    $path = drupal_get_path('module', 'editor');
+
+    $theme_registry['filter_admin_overview']['theme path'] = $path;
+    $theme_registry['filter_admin_overview']['function'] = 'editor_admin_overview';
+  }
+}
+
+/**
+ * Returns HTML for the text format administration overview form.
+ *
+ * @param $variables
+ *   An associative array containing:
+ *   - form: A render element representing the form.
+ *
+ * @ingroup themeable
+ */
+function editor_admin_overview($variables) {
+  $form = $variables['form'];
+
+  $rows = array();
+  foreach (element_children($form['formats']) as $id) {
+    $form['formats'][$id]['weight']['#attributes']['class'] = array('text-format-order-weight');
+    $rows[] = array(
+      'data' => array(
+        drupal_render($form['formats'][$id]['name']),
+        drupal_render($form['formats'][$id]['editor']),
+        drupal_render($form['formats'][$id]['roles']),
+        drupal_render($form['formats'][$id]['weight']),
+        drupal_render($form['formats'][$id]['configure']),
+        drupal_render($form['formats'][$id]['disable']),
+      ),
+      'class' => array('draggable'),
+    );
+  }
+  $header = array(t('Name'), t('Editor'), t('Roles'), t('Weight'), array('data' => t('Operations'), 'colspan' => 2));
+  $output = theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('id' => 'text-format-order')));
+  $output .= drupal_render_children($form);
+
+  drupal_add_tabledrag('text-format-order', 'order', 'sibling', 'text-format-order-weight');
+
+  return $output;
 }
 
 /**
diff --git a/editor.test b/editor.test
index 7469ef5..f9862e8 100755
--- a/editor.test
+++ b/editor.test
@@ -591,27 +591,6 @@ class EditorFilterFormatAccessTestCase extends DrupalWebTestCase {
     $this->assertTrue(isset($options[$this->allowed_format->format]), 'The allowed text format appears as an option when adding a new node.');
     $this->assertFalse(isset($options[$this->disallowed_format->format]), 'The disallowed text format does not appear as an option when adding a new node.');
     $this->assertFalse(isset($options[filter_fallback_format()]), 'The fallback format does not appear as an option when adding a new node.');
-
-    // Check regular user access to the filter tips pages.
-    $this->drupalGet('filter/tips/' . $this->allowed_format->format);
-    $this->assertResponse(200);
-    $this->drupalGet('filter/tips/' . $this->disallowed_format->format);
-    $this->assertResponse(403);
-    $this->drupalGet('filter/tips/' . filter_fallback_format());
-    $this->assertResponse(200);
-    $this->drupalGet('filter/tips/invalid-format');
-    $this->assertResponse(404);
-
-    // Check admin user access to the filter tips pages.
-    $this->drupalLogin($this->admin_user);
-    $this->drupalGet('filter/tips/' . $this->allowed_format->format);
-    $this->assertResponse(200);
-    $this->drupalGet('filter/tips/' . $this->disallowed_format->format);
-    $this->assertResponse(200);
-    $this->drupalGet('filter/tips/' . filter_fallback_format());
-    $this->assertResponse(200);
-    $this->drupalGet('filter/tips/invalid-format');
-    $this->assertResponse(404);
   }
 
   /**
diff --git a/includes/editor.filter.inc b/includes/editor.filter.inc
index 2a7e48c..2630761 100644
--- a/includes/editor.filter.inc
+++ b/includes/editor.filter.inc
@@ -87,3 +87,43 @@ function filter_css_alter(&$css) {
     $css[$path]['type'] = 'file';
   }
 }
+
+/**
+ * Implements hook_form_FORM_ID_alter().
+ *
+ * Adds editor support to the text format overview form.
+ */
+function editor_form_filter_admin_overview_alter(&$form, &$form_state, $form_id) {
+  // Overview of all formats.
+  $formats = filter_formats();
+  $fallback_format = filter_fallback_format();
+  $editors = editor_get_editors();
+
+  $form['#tree'] = TRUE;
+  foreach ($formats as $id => $format) {
+    // Check whether this is the fallback text format. This format is available
+    // to all roles and cannot be disabled via the admin interface.
+    $form['formats'][$id]['#is_fallback'] = ($id == $fallback_format);
+    if ($form['formats'][$id]['#is_fallback']) {
+      $form['formats'][$id]['name'] = array('#markup' => drupal_placeholder($format->name));
+      $roles_markup = drupal_placeholder(t('All roles may use this format'));
+    }
+    else {
+      $form['formats'][$id]['name'] = array('#markup' => check_plain($format->name));
+      $roles = array_map('check_plain', filter_get_roles_by_format($format));
+      $roles_markup = $roles ? implode(', ', $roles) : t('No roles may use this format');
+    }
+    $form['formats'][$id]['editor'] = array('#markup' => isset($editors[$format->editor]) ? check_plain($editors[$format->editor]['label']) : t('None'));
+    $form['formats'][$id]['roles'] = array('#markup' => $roles_markup);
+    $form['formats'][$id]['configure'] = array('#type' => 'link', '#title' => t('configure'), '#href' => 'admin/config/content/formats/' . $id);
+    $form['formats'][$id]['disable'] = array('#type' => 'link', '#title' => t('disable'), '#href' => 'admin/config/content/formats/' . $id . '/disable', '#access' => !$form['formats'][$id]['#is_fallback']);
+    $form['formats'][$id]['weight'] = array(
+      '#type' => 'weight',
+      '#title' => t('Weight for @title', array('@title' => $format->name)),
+      '#title_display' => 'invisible',
+      '#default_value' => $format->weight,
+    );
+  }
+  $form['actions'] = array('#type' => 'actions');
+  $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save changes'));
+}
