diff --git a/search_api.links.task.yml b/search_api.links.task.yml
index dae5abd..8eb808c 100644
--- a/search_api.links.task.yml
+++ b/search_api.links.task.yml
@@ -20,8 +20,8 @@ entity.search_api_index.fields:
   route_name: entity.search_api_index.fields
   base_route: entity.search_api_index.canonical
   weight: 10
-entity.search_api_index.filters:
-  route_name: entity.search_api_index.filters
+entity.search_api_index.processors:
+  route_name: entity.search_api_index.processors
   base_route: entity.search_api_index.canonical
-  title: 'Filters'
+  title: 'Processors'
   weight: 20
diff --git a/search_api.routing.yml b/search_api.routing.yml
index c292053..195fb28 100644
--- a/search_api.routing.yml
+++ b/search_api.routing.yml
@@ -109,12 +109,12 @@ entity.search_api_index.fields:
   requirements:
     _entity_access: 'search_api_index.fields'
 
-entity.search_api_index.filters:
-  path: '/admin/config/search/search-api/index/{search_api_index}/filters'
+entity.search_api_index.processors:
+  path: '/admin/config/search/search-api/index/{search_api_index}/processors'
   defaults:
-    _entity_form: 'search_api_index.filters'
+    _entity_form: 'search_api_index.processors'
   requirements:
-    _entity_access: 'search_api_index.filters'
+    _entity_access: 'search_api_index.processors'
 
 entity.search_api_index.reindex:
   path: '/admin/config/search/search-api/index/{search_api_index}/reindex'
diff --git a/search_api.theme.inc b/search_api.theme.inc
index f62629f..080aa02 100644
--- a/search_api.theme.inc
+++ b/search_api.theme.inc
@@ -254,7 +254,7 @@ function theme_search_api_index($variables) {
       $info = t('Invalid or missing datasource plugin: %datasource_id', array('%datasource_id' => $datasource_id));
     }
     // Append the row and reset variables.
-    $label = t('Data sources');
+    $label = t('Data source');
     $rows[] = Utility::deepCopy($row);
     $class = '';
   }
diff --git a/src/Entity/Index.php b/src/Entity/Index.php
index 95c77a9..4f36586 100644
--- a/src/Entity/Index.php
+++ b/src/Entity/Index.php
@@ -37,7 +37,7 @@ use Drupal\search_api\Utility;
  *       "default" = "Drupal\search_api\Form\IndexForm",
  *       "edit" = "Drupal\search_api\Form\IndexForm",
  *       "fields" = "Drupal\search_api\Form\IndexFieldsForm",
- *       "filters" = "Drupal\search_api\Form\IndexFiltersForm",
+ *       "processors" = "Drupal\search_api\Form\IndexProcessorsForm",
  *       "delete" = "Drupal\search_api\Form\IndexDeleteConfirmForm",
  *       "disable" = "Drupal\search_api\Form\IndexDisableConfirmForm",
  *       "reindex" = "Drupal\search_api\Form\IndexReindexConfirmForm",
@@ -57,7 +57,7 @@ use Drupal\search_api\Utility;
  *     "add-form" = "/admin/config/search/search-api/add-index",
  *     "edit-form" = "/admin/config/search/search-api/index/{search_api_index}/edit",
  *     "fields" = "/admin/config/search/search-api/index/{search_api_index}/fields",
- *     "filters" = "/admin/config/search/search-api/index/{search_api_index}/filters",
+ *     "processors" = "/admin/config/search/search-api/index/{search_api_index}/processors",
  *     "delete-form" = "/admin/config/search/search-api/index/{search_api_index}/delete",
  *     "disable" = "/admin/config/search/search-api/index/{search_api_index}/disable",
  *     "enable" = "/admin/config/search/search-api/index/{search_api_index}/enable",
diff --git a/src/Form/IndexFiltersForm.php b/src/Form/IndexFiltersForm.php
deleted file mode 100644
index c194e0e..0000000
--- a/src/Form/IndexFiltersForm.php
+++ /dev/null
@@ -1,281 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\search_api\Form\IndexFiltersForm.
- */
-
-namespace Drupal\search_api\Form;
-
-use Drupal\Component\Utility\Html;
-use Drupal\Component\Utility\SafeMarkup;
-use Drupal\Core\Entity\EntityForm;
-use Drupal\Core\Entity\EntityManagerInterface;
-use Drupal\Core\Form\FormStateInterface;
-use Drupal\search_api\Processor\ProcessorInterface;
-use Drupal\search_api\Processor\ProcessorPluginManager;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-
-/**
- * Provides a form for configuring the processors of a search index.
- */
-class IndexFiltersForm extends EntityForm {
-
-  /**
-   * The index being configured.
-   *
-   * @var \Drupal\search_api\IndexInterface
-   */
-  protected $entity;
-
-  /**
-   * The entity manager.
-   *
-   * @var \Drupal\Core\Entity\EntityManagerInterface
-   */
-  protected $entityManager;
-
-  /**
-   * The datasource manager.
-   *
-   * @var \Drupal\search_api\Processor\ProcessorPluginManager
-   */
-  protected $processorPluginManager;
-
-  /**
-   * Constructs an IndexFiltersForm object.
-   *
-   * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
-   *   The entity manager.
-   * @param \Drupal\search_api\Processor\ProcessorPluginManager $processor_plugin_manager
-   *   The processor plugin manager.
-   */
-  public function __construct(EntityManagerInterface $entity_manager, ProcessorPluginManager $processor_plugin_manager) {
-    $this->entityManager = $entity_manager;
-    $this->processorPluginManager = $processor_plugin_manager;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function create(ContainerInterface $container) {
-    /** @var \Drupal\Core\Entity\EntityManagerInterface $entity_manager */
-    $entity_manager = $container->get('entity.manager');
-    /** @var \Drupal\search_api\Processor\ProcessorPluginManager $processor_plugin_manager */
-    $processor_plugin_manager = $container->get('plugin.manager.search_api.processor');
-    return new static($entity_manager, $processor_plugin_manager);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getBaseFormID() {
-    return NULL;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function form(array $form, FormStateInterface $form_state) {
-    $form['#attached']['library'][] = 'search_api/drupal.search_api.admin_css';
-
-    // Retrieve lists of all processors, and the stages and weights they have.
-    if (!$form_state->has('processors')) {
-      $all_processors = $this->entity->getProcessors(FALSE);
-      $sort_processors = function (ProcessorInterface $a, ProcessorInterface $b) {
-        return strnatcasecmp($a->label(), $b->label());
-      };
-      uasort($all_processors, $sort_processors);
-    }
-    else {
-      $all_processors = $form_state->get('processors');
-    }
-
-    $stages = $this->processorPluginManager->getProcessingStages();
-    $processors_by_stage = array();
-    foreach ($stages as $stage => $definition) {
-      $processors_by_stage[$stage] = $this->entity->getProcessorsByStage($stage, FALSE);
-    }
-
-    $processor_settings = $this->entity->getOption('processors');
-
-    $form['#tree'] = TRUE;
-    $form['#attached']['library'][] = 'search_api/drupal.search_api.index-active-formatters';
-    $form['#title'] = $this->t('Manage filters for search index %label', array('%label' => $this->entity->label()));
-    $form['description']['#markup'] = '<p>' . $this->t('Configure processors which will pre- and post-process data at index and search time.') . '</p>';
-
-    // Add the list of processors with checkboxes to enable/disable them.
-    $form['status'] = array(
-      '#type' => 'fieldset',
-      '#title' => $this->t('Enabled'),
-      '#attributes' => array('class' => array(
-        'search-api-status-wrapper',
-      )),
-    );
-    foreach ($all_processors as $processor_id => $processor) {
-      $clean_css_id = Html::cleanCssIdentifier($processor_id);
-      $form['status'][$processor_id] = array(
-        '#type' => 'checkbox',
-        '#title' => $processor->label(),
-        '#default_value' => !empty($processor_settings[$processor_id]),
-        '#description' => $processor->getDescription(),
-        '#attributes' => array(
-          'class' => array(
-            'search-api-processor-status-' . $clean_css_id,
-          ),
-          'data-id' => $clean_css_id,
-        ),
-      );
-    }
-
-    $form['weights'] = array(
-      '#type' => 'fieldset',
-      '#title' => t('Processor order'),
-    );
-    // Order enabled processors per stage.
-    foreach ($stages as $stage => $description) {
-      $form['weights'][$stage] = array (
-        '#type' => 'fieldset',
-        '#title' => $description['label'],
-        '#attributes' => array('class' => array(
-          'search-api-stage-wrapper',
-          'search-api-stage-wrapper-' . Html::cleanCssIdentifier($stage),
-        )),
-      );
-      $form['weights'][$stage]['order'] = array(
-        '#type' => 'table',
-      );
-      $form['weights'][$stage]['order']['#tabledrag'][] = array(
-        'action' => 'order',
-        'relationship' => 'sibling',
-        'group' => 'search-api-processor-weight-' . Html::cleanCssIdentifier($stage),
-      );
-    }
-    foreach ($processors_by_stage as $stage => $processors) {
-      /** @var \Drupal\search_api\Processor\ProcessorInterface $processor */
-      foreach ($processors as $processor_id => $processor) {
-        $weight = isset($processor_settings[$processor_id]['weights'][$stage])
-          ? $processor_settings[$processor_id]['weights'][$stage]
-          : $processor->getDefaultWeight($stage);
-        $form['weights'][$stage]['order'][$processor_id]['#attributes']['class'][] = 'draggable';
-        $form['weights'][$stage]['order'][$processor_id]['#attributes']['class'][] = 'search-api-processor-weight--' . Html::cleanCssIdentifier($processor_id);
-        $form['weights'][$stage]['order'][$processor_id]['#weight'] = $weight;
-        $form['weights'][$stage]['order'][$processor_id]['label'] = array(
-          '#markup' => SafeMarkup::checkPlain($processor->label()),
-        );
-        $form['weights'][$stage]['order'][$processor_id]['weight'] = array(
-          '#type' => 'weight',
-          '#title' => $this->t('Weight for processor %title', array('%title' => $processor->label())),
-          '#title_display' => 'invisible',
-          '#default_value' => $weight,
-          '#parents' => array('processors', $processor_id, 'weights', $stage),
-          '#attributes' => array('class' => array(
-            'search-api-processor-weight-' . Html::cleanCssIdentifier($stage),
-          )),
-        );
-      }
-    }
-
-    // Add vertical tabs containing the settings for the processors. Tabs for
-    // disabled processors are hidden with JS magic, but need to be included in
-    // case the processor is enabled.
-    $form['processor_settings'] = array(
-      '#title' => $this->t('Processor settings'),
-      '#type' => 'vertical_tabs',
-    );
-
-    foreach ($all_processors as $processor_id => $processor) {
-      $processor_form_state = new SubFormState($form_state, array('processors', $processor_id, 'settings'));
-      $processor_form = $processor->buildConfigurationForm($form, $processor_form_state);
-      if ($processor_form) {
-        $form['settings'][$processor_id] = array(
-          '#type' => 'details',
-          '#title' => $processor->label(),
-          '#group' => 'processor_settings',
-          '#parents' => array('processors', $processor_id, 'settings'),
-          '#attributes' => array('class' => array(
-            'search-api-processor-settings-' . Html::cleanCssIdentifier($processor_id),
-          )),
-        );
-        $form['settings'][$processor_id] += $processor_form;
-      }
-    }
-
-    return $form;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function validate(array $form, FormStateInterface $form_state) {
-    $values = $form_state->getValues();
-    /** @var \Drupal\search_api\Processor\ProcessorInterface[] $processors */
-    $processors = $this->entity->getProcessors(FALSE);
-
-    // Iterate over all processors that have a form and are enabled.
-    foreach ($form['settings'] as $processor_id => $processor_form) {
-      if (!empty($values['status'][$processor_id])) {
-        $processor_form_state = new SubFormState($form_state, array('processors', $processor_id, 'settings'));
-        $processors[$processor_id]->validateConfigurationForm($form['settings'][$processor_id], $processor_form_state);
-      }
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function submitForm(array &$form, FormStateInterface $form_state) {
-    $values = $form_state->getValues();
-    $new_settings = array();
-
-    // Store processor settings.
-    // @todo Go through all available processors, enable/disable with method on
-    //   processor plugin to allow reaction.
-    /** @var \Drupal\search_api\Processor\ProcessorInterface $processor */
-    $processors = $this->entity->getProcessors(FALSE);
-    foreach ($processors as $processor_id => $processor) {
-      if (empty($values['status'][$processor_id])) {
-        continue;
-      }
-      $new_settings[$processor_id] = array(
-        'processor_id' => $processor_id,
-        'weights' => array(),
-        'settings' => array(),
-      );
-      $processor_values = $values['processors'][$processor_id];
-      if (!empty($processor_values['weights'])) {
-        $new_settings[$processor_id]['weights'] = $processor_values['weights'];
-      }
-      if (isset($form['settings'][$processor_id])) {
-        $processor_form_state = new SubFormState($form_state, array('processors', $processor_id, 'settings'));
-        $processor->submitConfigurationForm($form['settings'][$processor_id], $processor_form_state);
-        $new_settings[$processor_id]['settings'] = $processor->getConfiguration();
-      }
-    }
-
-    // Sort the processors so we won't have unnecessary changes.
-    ksort($new_settings);
-    if (!$this->entity->getOption('processors', array()) !== $new_settings) {
-      $this->entity->setOption('processors', $new_settings);
-      $this->entity->save();
-      $this->entity->reindex();
-      drupal_set_message($this->t('The indexing workflow was successfully edited. All content was scheduled for reindexing so the new settings can take effect.'));
-    }
-    else {
-      drupal_set_message($this->t('No values were changed.'));
-    }
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function actions(array $form, FormStateInterface $form_state) {
-    $actions = parent::actions($form, $form_state);
-
-    // We don't have a "delete" action here.
-    unset($actions['delete']);
-
-    return $actions;
-  }
-
-}
diff --git a/src/Form/IndexForm.php b/src/Form/IndexForm.php
index 59bf187..c905d5a 100644
--- a/src/Form/IndexForm.php
+++ b/src/Form/IndexForm.php
@@ -219,8 +219,8 @@ class IndexForm extends EntityForm {
     }
     $form['datasources'] = array(
       '#type' => 'select',
-      '#title' => $this->t('Data types'),
-      '#description' => $this->t('Select one or more data type of items that will be stored in this index.'),
+      '#title' => $this->t('Data sources'),
+      '#description' => $this->t('Select one or more data sources of items that will be stored in this index.'),
       '#options' => $datasource_options,
       '#default_value' => $index->getDatasourceIds(),
       '#multiple' => TRUE,
diff --git a/src/Form/IndexProcessorsForm.php b/src/Form/IndexProcessorsForm.php
new file mode 100644
index 0000000..2f3d8e5
--- /dev/null
+++ b/src/Form/IndexProcessorsForm.php
@@ -0,0 +1,281 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\search_api\Form\IndexProcessorsForm.
+ */
+
+namespace Drupal\search_api\Form;
+
+use Drupal\Component\Utility\Html;
+use Drupal\Component\Utility\SafeMarkup;
+use Drupal\Core\Entity\EntityForm;
+use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\search_api\Processor\ProcessorInterface;
+use Drupal\search_api\Processor\ProcessorPluginManager;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Provides a form for configuring the processors of a search index.
+ */
+class IndexProcessorsForm extends EntityForm {
+
+  /**
+   * The index being configured.
+   *
+   * @var \Drupal\search_api\IndexInterface
+   */
+  protected $entity;
+
+  /**
+   * The entity manager.
+   *
+   * @var \Drupal\Core\Entity\EntityManagerInterface
+   */
+  protected $entityManager;
+
+  /**
+   * The datasource manager.
+   *
+   * @var \Drupal\search_api\Processor\ProcessorPluginManager
+   */
+  protected $processorPluginManager;
+
+  /**
+   * Constructs an IndexProcessorsForm object.
+   *
+   * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
+   *   The entity manager.
+   * @param \Drupal\search_api\Processor\ProcessorPluginManager $processor_plugin_manager
+   *   The processor plugin manager.
+   */
+  public function __construct(EntityManagerInterface $entity_manager, ProcessorPluginManager $processor_plugin_manager) {
+    $this->entityManager = $entity_manager;
+    $this->processorPluginManager = $processor_plugin_manager;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function create(ContainerInterface $container) {
+    /** @var \Drupal\Core\Entity\EntityManagerInterface $entity_manager */
+    $entity_manager = $container->get('entity.manager');
+    /** @var \Drupal\search_api\Processor\ProcessorPluginManager $processor_plugin_manager */
+    $processor_plugin_manager = $container->get('plugin.manager.search_api.processor');
+    return new static($entity_manager, $processor_plugin_manager);
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function getBaseFormID() {
+    return NULL;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function form(array $form, FormStateInterface $form_state) {
+    $form['#attached']['library'][] = 'search_api/drupal.search_api.admin_css';
+
+    // Retrieve lists of all processors, and the stages and weights they have.
+    if (!$form_state->has('processors')) {
+      $all_processors = $this->entity->getProcessors(FALSE);
+      $sort_processors = function (ProcessorInterface $a, ProcessorInterface $b) {
+        return strnatcasecmp($a->label(), $b->label());
+      };
+      uasort($all_processors, $sort_processors);
+    }
+    else {
+      $all_processors = $form_state->get('processors');
+    }
+
+    $stages = $this->processorPluginManager->getProcessingStages();
+    $processors_by_stage = array();
+    foreach ($stages as $stage => $definition) {
+      $processors_by_stage[$stage] = $this->entity->getProcessorsByStage($stage, FALSE);
+    }
+
+    $processor_settings = $this->entity->getOption('processors');
+
+    $form['#tree'] = TRUE;
+    $form['#attached']['library'][] = 'search_api/drupal.search_api.index-active-formatters';
+    $form['#title'] = $this->t('Manage processors for search index %label', array('%label' => $this->entity->label()));
+    $form['description']['#markup'] = '<p>' . $this->t('Configure processors which will pre- and post-process data at index and search time.') . '</p>';
+
+    // Add the list of processors with checkboxes to enable/disable them.
+    $form['status'] = array(
+      '#type' => 'fieldset',
+      '#title' => $this->t('Enabled'),
+      '#attributes' => array('class' => array(
+        'search-api-status-wrapper',
+      )),
+    );
+    foreach ($all_processors as $processor_id => $processor) {
+      $clean_css_id = Html::cleanCssIdentifier($processor_id);
+      $form['status'][$processor_id] = array(
+        '#type' => 'checkbox',
+        '#title' => $processor->label(),
+        '#default_value' => !empty($processor_settings[$processor_id]),
+        '#description' => $processor->getDescription(),
+        '#attributes' => array(
+          'class' => array(
+            'search-api-processor-status-' . $clean_css_id,
+          ),
+          'data-id' => $clean_css_id,
+        ),
+      );
+    }
+
+    $form['weights'] = array(
+      '#type' => 'fieldset',
+      '#title' => t('Processor order'),
+    );
+    // Order enabled processors per stage.
+    foreach ($stages as $stage => $description) {
+      $form['weights'][$stage] = array (
+        '#type' => 'fieldset',
+        '#title' => $description['label'],
+        '#attributes' => array('class' => array(
+          'search-api-stage-wrapper',
+          'search-api-stage-wrapper-' . Html::cleanCssIdentifier($stage),
+        )),
+      );
+      $form['weights'][$stage]['order'] = array(
+        '#type' => 'table',
+      );
+      $form['weights'][$stage]['order']['#tabledrag'][] = array(
+        'action' => 'order',
+        'relationship' => 'sibling',
+        'group' => 'search-api-processor-weight-' . Html::cleanCssIdentifier($stage),
+      );
+    }
+    foreach ($processors_by_stage as $stage => $processors) {
+      /** @var \Drupal\search_api\Processor\ProcessorInterface $processor */
+      foreach ($processors as $processor_id => $processor) {
+        $weight = isset($processor_settings[$processor_id]['weights'][$stage])
+          ? $processor_settings[$processor_id]['weights'][$stage]
+          : $processor->getDefaultWeight($stage);
+        $form['weights'][$stage]['order'][$processor_id]['#attributes']['class'][] = 'draggable';
+        $form['weights'][$stage]['order'][$processor_id]['#attributes']['class'][] = 'search-api-processor-weight--' . Html::cleanCssIdentifier($processor_id);
+        $form['weights'][$stage]['order'][$processor_id]['#weight'] = $weight;
+        $form['weights'][$stage]['order'][$processor_id]['label'] = array(
+          '#markup' => SafeMarkup::checkPlain($processor->label()),
+        );
+        $form['weights'][$stage]['order'][$processor_id]['weight'] = array(
+          '#type' => 'weight',
+          '#title' => $this->t('Weight for processor %title', array('%title' => $processor->label())),
+          '#title_display' => 'invisible',
+          '#default_value' => $weight,
+          '#parents' => array('processors', $processor_id, 'weights', $stage),
+          '#attributes' => array('class' => array(
+            'search-api-processor-weight-' . Html::cleanCssIdentifier($stage),
+          )),
+        );
+      }
+    }
+
+    // Add vertical tabs containing the settings for the processors. Tabs for
+    // disabled processors are hidden with JS magic, but need to be included in
+    // case the processor is enabled.
+    $form['processor_settings'] = array(
+      '#title' => $this->t('Processor settings'),
+      '#type' => 'vertical_tabs',
+    );
+
+    foreach ($all_processors as $processor_id => $processor) {
+      $processor_form_state = new SubFormState($form_state, array('processors', $processor_id, 'settings'));
+      $processor_form = $processor->buildConfigurationForm($form, $processor_form_state);
+      if ($processor_form) {
+        $form['settings'][$processor_id] = array(
+          '#type' => 'details',
+          '#title' => $processor->label(),
+          '#group' => 'processor_settings',
+          '#parents' => array('processors', $processor_id, 'settings'),
+          '#attributes' => array('class' => array(
+            'search-api-processor-settings-' . Html::cleanCssIdentifier($processor_id),
+          )),
+        );
+        $form['settings'][$processor_id] += $processor_form;
+      }
+    }
+
+    return $form;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function validate(array $form, FormStateInterface $form_state) {
+    $values = $form_state->getValues();
+    /** @var \Drupal\search_api\Processor\ProcessorInterface[] $processors */
+    $processors = $this->entity->getProcessors(FALSE);
+
+    // Iterate over all processors that have a form and are enabled.
+    foreach ($form['settings'] as $processor_id => $processor_form) {
+      if (!empty($values['status'][$processor_id])) {
+        $processor_form_state = new SubFormState($form_state, array('processors', $processor_id, 'settings'));
+        $processors[$processor_id]->validateConfigurationForm($form['settings'][$processor_id], $processor_form_state);
+      }
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function submitForm(array &$form, FormStateInterface $form_state) {
+    $values = $form_state->getValues();
+    $new_settings = array();
+
+    // Store processor settings.
+    // @todo Go through all available processors, enable/disable with method on
+    //   processor plugin to allow reaction.
+    /** @var \Drupal\search_api\Processor\ProcessorInterface $processor */
+    $processors = $this->entity->getProcessors(FALSE);
+    foreach ($processors as $processor_id => $processor) {
+      if (empty($values['status'][$processor_id])) {
+        continue;
+      }
+      $new_settings[$processor_id] = array(
+        'processor_id' => $processor_id,
+        'weights' => array(),
+        'settings' => array(),
+      );
+      $processor_values = $values['processors'][$processor_id];
+      if (!empty($processor_values['weights'])) {
+        $new_settings[$processor_id]['weights'] = $processor_values['weights'];
+      }
+      if (isset($form['settings'][$processor_id])) {
+        $processor_form_state = new SubFormState($form_state, array('processors', $processor_id, 'settings'));
+        $processor->submitConfigurationForm($form['settings'][$processor_id], $processor_form_state);
+        $new_settings[$processor_id]['settings'] = $processor->getConfiguration();
+      }
+    }
+
+    // Sort the processors so we won't have unnecessary changes.
+    ksort($new_settings);
+    if (!$this->entity->getOption('processors', array()) !== $new_settings) {
+      $this->entity->setOption('processors', $new_settings);
+      $this->entity->save();
+      $this->entity->reindex();
+      drupal_set_message($this->t('The indexing workflow was successfully edited. All content was scheduled for reindexing so the new settings can take effect.'));
+    }
+    else {
+      drupal_set_message($this->t('No values were changed.'));
+    }
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  protected function actions(array $form, FormStateInterface $form_state) {
+    $actions = parent::actions($form, $form_state);
+
+    // We don't have a "delete" action here.
+    unset($actions['delete']);
+
+    return $actions;
+  }
+
+}
diff --git a/src/IndexListBuilder.php b/src/IndexListBuilder.php
index 7549d76..00b869e 100644
--- a/src/IndexListBuilder.php
+++ b/src/IndexListBuilder.php
@@ -68,10 +68,10 @@ class IndexListBuilder extends ConfigEntityListBuilder {
         'weight' => 20,
         'url' => new Url('entity.search_api_index.fields', $route_parameters),
       );
-      $operations['filters'] = array(
-        'title' => $this->t('Filters'),
+      $operations['processors'] = array(
+        'title' => $this->t('Processors'),
         'weight' => 30,
-        'url' => new Url('entity.search_api_index.filters', $route_parameters),
+        'url' => new Url('entity.search_api_index.processors', $route_parameters),
       );
     }
 
diff --git a/tests/src/Menu/LocalTasksTest.php b/tests/src/Menu/LocalTasksTest.php
index 29a207e..946fb88 100644
--- a/tests/src/Menu/LocalTasksTest.php
+++ b/tests/src/Menu/LocalTasksTest.php
@@ -64,7 +64,7 @@ class LocalTasksTest extends LocalTaskIntegrationTest {
    */
   public function testLocalTasksIndex($route) {
     $tasks = array(
-      0 => array('entity.search_api_index.canonical', 'entity.search_api_index.edit_form', 'entity.search_api_index.fields', 'entity.search_api_index.filters'),
+      0 => array('entity.search_api_index.canonical', 'entity.search_api_index.edit_form', 'entity.search_api_index.fields', 'entity.search_api_index.processors'),
     );
     $this->assertLocalTasks($route, $tasks);
   }
@@ -80,7 +80,7 @@ class LocalTasksTest extends LocalTaskIntegrationTest {
     return array(
       array('entity.search_api_index.canonical'),
       array('entity.search_api_index.edit_form'),
-      array('entity.search_api_index.filters'),
+      array('entity.search_api_index.processors'),
     );
   }
 
