diff --git a/config/install/diff.plugins.yml b/config/install/diff.plugins.yml
index 0beaec3..4a7fb90 100644
--- a/config/install/diff.plugins.yml
+++ b/config/install/diff.plugins.yml
@@ -1,5 +1,9 @@
-field_types:
-  datetime:
+block:
+  title:
+    type: core_field_diff_builder
+
+node:
+  title:
     type: core_field_diff_builder
     settings:
       show_header: 1
diff --git a/config/schema/diff.schema.yml b/config/schema/diff.schema.yml
index f27a1ca..d94e631 100644
--- a/config/schema/diff.schema.yml
+++ b/config/schema/diff.schema.yml
@@ -25,7 +25,7 @@ diff.settings:
         - type: sequence
           label: 'Entity ID'
           sequence:
-            - type: integer
+            - type: string
               label: 'Compare base field'
     content_type_settings:
       type: sequence
@@ -40,13 +40,13 @@ diff.settings:
 
 diff.plugins:
   type: config_object
-  label: 'Field Type'
+  label: 'Entity type'
   mapping:
-    field_types:
+    fields:
       type: sequence
       sequence:
         - type: mapping
-          label: 'Diff configuration for a field type'
+          label: 'Diff configuration for a field'
           mapping:
             type:
               type: text
diff --git a/diff.links.task.yml b/diff.links.task.yml
index 80da8b5..f11da6e 100644
--- a/diff.links.task.yml
+++ b/diff.links.task.yml
@@ -3,8 +3,8 @@ diff.general_settings:
   base_route: diff.general_settings
   title: Settings
 
-diff.field_types_list:
-  route_name: diff.field_types_list
+diff.fields_list:
+  route_name: diff.fields_list
   base_route: diff.general_settings
   title: Configurable Fields
 
@@ -12,8 +12,3 @@ diff.entities:
   route_name: diff.node_settings
   title: Base Fields
   base_route: diff.general_settings
-
-diff.node_entities:
-  route_name: diff.node_settings
-  title: Node
-  parent_id: diff.entities
diff --git a/diff.routing.yml b/diff.routing.yml
index eea3670..2d7fb1c 100644
--- a/diff.routing.yml
+++ b/diff.routing.yml
@@ -17,18 +17,10 @@ diff.general_settings:
   requirements:
     _permission: 'administer site configuration'
 
-diff.node_settings:
-  path: '/admin/config/content/diff/entities/node'
-  defaults:
-    _form: '\Drupal\diff\Form\NodeEntitySettingsForm'
-    _title: Diff Entities Settings
-  requirements:
-    _permission: 'administer site configuration'
-
-diff.field_types_list:
+diff.fields_list:
   path: '/admin/config/content/diff/fields'
   defaults:
-    _form: '\Drupal\diff\Form\FieldTypesSettingsForm'
-    _title: Field Type Settings
+    _form: '\Drupal\diff\Form\FieldsSettingsForm'
+    _title: Fields Settings
   requirements:
     _permission: 'administer site configuration'
diff --git a/src/Controller/NodeRevisionController.php b/src/Controller/NodeRevisionController.php
index da4e7ad..483ce91 100644
--- a/src/Controller/NodeRevisionController.php
+++ b/src/Controller/NodeRevisionController.php
@@ -85,7 +85,7 @@ class NodeRevisionController extends EntityComparisonBase {
         }
         $visible = entity_get_display('node', $node->getType(), $view_mode)->getComponent($field_name);
         if ($visible == NULL && !array_key_exists($field_name, $node_base_fields)) {
-          unset($fields[$field_name]);
+          //unset($fields[$field_name]);
         }
       }
       // Build the diff rows for each field and append the field rows
diff --git a/src/DiffEntityParser.php b/src/DiffEntityParser.php
index 0abb47f..c6f962e 100644
--- a/src/DiffEntityParser.php
+++ b/src/DiffEntityParser.php
@@ -82,8 +82,8 @@ class DiffEntityParser {
     // Loop through entity fields and transform every FieldItemList object
     // into an array of strings according to field type specific settings.
     foreach ($entity as $field_items) {
-      $field_type = $field_items->getFieldDefinition()->getType();
-      $plugin_config = $this->pluginsConfig->get('field_types.' . $field_type);
+      $field_type = $field_items->getFieldDefinition()->getName();
+      $plugin_config = $this->pluginsConfig->get('fields.' . $entity_type_id . '__' . $field_type);
       $plugin = NULL;
       if ($plugin_config && $plugin_config['type'] != 'hidden') {
         $plugin = $this->diffBuilderManager->createInstance($plugin_config['type'], $plugin_config['settings']);
@@ -98,20 +98,6 @@ class DiffEntityParser {
             $result[$field_items->getName()] = $build;
           }
         }
-        // If field is one of the entity base fields take visibility settings from
-        // diff admin config page. This means that the visibility of these fields
-        // is controlled per entity type.
-        else {
-          // Check if this field needs to be compared.
-          $config_key = 'entity.' . $entity_type_id . '.' . $field_items->getName();
-          $enabled = $this->config->get($config_key);
-          if ($enabled) {
-            $build = $plugin->build($field_items);
-            if (!empty($build)) {
-              $result[$field_items->getName()] = $build;
-            }
-          }
-        }
       }
     }
 
diff --git a/src/EntityComparisonBase.php b/src/EntityComparisonBase.php
index 850b810..6c3e0a1 100644
--- a/src/EntityComparisonBase.php
+++ b/src/EntityComparisonBase.php
@@ -119,34 +119,34 @@ class EntityComparisonBase extends ControllerBase {
     foreach ($left_values as $field_name => $values) {
       $field_definition = $left_entity->getFieldDefinition($field_name);
       // Get the compare settings for this field type.
-      $compare_settings = $this->pluginsConfig->get('field_types.' . $field_definition->getType());
-      $result[$field_name] = array(
+      $compare_settings = $this->pluginsConfig->get('fields.' . $left_entity->getEntityTypeId() . '__' .$field_definition->getName());
+      $result[$left_entity->getEntityTypeId() . '__' .$field_definition->getName()] = array(
         '#name' => ($compare_settings['settings']['show_header'] == 1) ? $field_definition->getLabel() : '',
         '#settings' => $compare_settings,
       );
 
       // Fields which exist on the right entity also.
       if (isset($right_values[$field_name])) {
-        $result[$field_name] += $this->combineFields($left_values[$field_name], $right_values[$field_name]);
+        $result[$left_entity->getEntityTypeId() . '__' . $field_definition->getName()] += $this->combineFields($left_values[$field_name], $right_values[$field_name]);
         // Unset the field from the right entity so that we know if the right
         // entity has any fields that left entity doesn't have.
         unset($right_values[$field_name]);
       }
       // This field exists only on the left entity.
       else {
-        $result[$field_name] += $this->combineFields($left_values[$field_name], array());
+        $result[$left_entity->getEntityTypeId() . '__' . $field_definition->getName()] += $this->combineFields($left_values[$field_name], array());
       }
     }
 
     // Fields which exist only on the right entity.
     foreach ($right_values as $field_name => $values) {
       $field_definition = $right_entity->getFieldDefinition($field_name);
-      $compare_settings = $this->pluginsConfig->get('field_types.' . $field_definition->getType());
-      $result[$field_name] = array(
+      $compare_settings = $this->pluginsConfig->get('fields.' . $right_entity->getEntityTypeId() . '__' .$field_definition->getName());
+      $result[$right_entity->getEntityTypeId() . '__' .$field_definition->getName()] = array(
         '#name' => ($compare_settings['settings']['show_header'] == 1) ? $field_definition->getLabel() : '',
         '#settings' => $compare_settings,
       );
-      $result[$field_name] += $this->combineFields(array(), $right_values[$field_name]);
+      $result[$right_entity->getEntityTypeId() . '__' .$field_definition->getName()] += $this->combineFields(array(), $right_values[$field_name]);
     }
 
     // Field rows. Recurse through all child elements.
diff --git a/src/FieldDiffBuilderBase.php b/src/FieldDiffBuilderBase.php
index b57cc74..ad0fb6d 100644
--- a/src/FieldDiffBuilderBase.php
+++ b/src/FieldDiffBuilderBase.php
@@ -117,7 +117,8 @@ abstract class FieldDiffBuilderBase extends PluginBase implements FieldDiffBuild
   public function submitConfigurationForm(array &$form, FormStateInterface $form_state) {
     $this->configuration['show_header'] = $form_state->getValue('show_header');
     $this->configuration['markdown'] = $form_state->getValue('markdown');
-    $this->configuration['#field_type'] = $form_state->get('field_type');
+    //$this->configuration['#field_type'] = $form_state->get('field_type');
+    $this->configuration['#fields'] = $form_state->get('fields');
     $this->setConfiguration($this->configuration);
     $this->getConfiguration()->save();
   }
@@ -144,18 +145,18 @@ abstract class FieldDiffBuilderBase extends PluginBase implements FieldDiffBuild
    */
   public function setConfiguration(array $configuration) {
     $config = $this->configFactory->getEditable('diff.plugins');
-    $field_type = $configuration['#field_type'];
-    unset($configuration['#field_type']);
+    $field = $configuration['#fields'];
+    unset($configuration['#fields']);
 
-    $field_type_settings = array();
+    $field_settings = array();
     foreach ($configuration as $key => $value) {
-      $field_type_settings[$key] = $value;
+      $field_settings[$key] = $value;
     }
     $settings = array(
       'type' => $this->pluginId,
-      'settings' => $field_type_settings,
+      'settings' => $field_settings,
     );
-    $config->set('field_types.' . $field_type, $settings);
+    $config->set('fields.' . $field, $settings);
     $config->save();
   }
 
diff --git a/src/Form/FieldTypesSettingsForm.php b/src/Form/FieldsSettingsForm.php
similarity index 62%
rename from src/Form/FieldTypesSettingsForm.php
rename to src/Form/FieldsSettingsForm.php
index 107b7d6..daad313 100644
--- a/src/Form/FieldTypesSettingsForm.php
+++ b/src/Form/FieldsSettingsForm.php
@@ -1,12 +1,9 @@
 <?php
 
-/**
- * @file
- * Contains \Drupal\diff\Form\FieldTypesSettingsForm.
- */
-
 namespace Drupal\diff\Form;
 
+use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Tests\Core\Entity\EntityTypeManagerTest;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 use Drupal\Core\Form\ConfigFormBase;
 use Drupal\Core\Form\FormStateInterface;
@@ -18,7 +15,7 @@ use Drupal\Core\Form\FormState;
  * it provides a select-box having as options all the FieldDiffBuilder plugins
  * that support that field type.
  */
-class FieldTypesSettingsForm extends ConfigFormBase {
+class FieldsSettingsForm extends ConfigFormBase {
 
   /**
    * Wrapper object for writing/reading configuration from diff.plugins.yml
@@ -26,6 +23,18 @@ class FieldTypesSettingsForm extends ConfigFormBase {
   protected $config;
 
   /**
+   * Wrapper object for writing/reading configuration from diff.plugins.yml
+   */
+  protected $pluginConfig;
+
+  /**
+   * The entity manager.
+   *
+   * @var \Drupal\Core\Entity\EntityManagerInterface
+   */
+  protected $entityManager;
+
+  /**
    * The field type plugin manager service.
    *
    * @var \Drupal\Component\Plugin\PluginManagerInterface
@@ -45,10 +54,11 @@ class FieldTypesSettingsForm extends ConfigFormBase {
    * @param \Drupal\Component\Plugin\PluginManagerInterface $plugin_manager
    * @param \Drupal\Component\Plugin\PluginManagerInterface $diffBuilderManager
    */
-  public function __construct(PluginManagerInterface $plugin_manager, PluginManagerInterface $diffBuilderManager) {
+  public function __construct(PluginManagerInterface $plugin_manager, PluginManagerInterface $diffBuilderManager, EntityManagerInterface $entityManager) {
     $this->config = $this->config('diff.plugins');
     $this->fieldTypePluginManager = $plugin_manager;
     $this->diffBuilderManager = $diffBuilderManager;
+    $this->entityManager = $entityManager;
   }
 
   /**
@@ -57,7 +67,8 @@ class FieldTypesSettingsForm extends ConfigFormBase {
   public static function create(ContainerInterface $container) {
     return new static(
       $container->get('plugin.manager.field.field_type'),
-      $container->get('plugin.manager.diff.builder')
+      $container->get('plugin.manager.diff.builder'),
+      $container->get('entity.manager')
     );
   }
 
@@ -74,6 +85,8 @@ class FieldTypesSettingsForm extends ConfigFormBase {
   protected function getEditableConfigNames() {
     return [
       'diff.plugins',
+      'diff.settings',
+      'diff.field_plugins'
     ];
   }
 
@@ -81,6 +94,7 @@ class FieldTypesSettingsForm extends ConfigFormBase {
    * {@inheritdoc}
    */
   public function buildForm(array $form, FormStateInterface $form_state) {
+    $form = parent::buildForm($form, $form_state);
     // The table containing all the field types discovered in the system.
     $form['fields'] = array(
       '#type' => 'table',
@@ -107,11 +121,24 @@ class FieldTypesSettingsForm extends ConfigFormBase {
         }
       }
     }
-    // Get all the field type plugins.
-    $field_definitions = $this->fieldTypePluginManager->getDefinitions();
-    foreach ($field_definitions as $field_type => $field_definition) {
-      // Build a row in the table for every field type.
-      $form['fields'][$field_type] = $this->buildFieldRow($field_type, $field_definition, $plugins, $diff_plugin_definitions, $form_state);
+
+    // Build a row in the table for every field of every entity type.
+    // Get all the field plugins.
+    foreach (\Drupal::entityTypeManager()->getDefinitions() as $entity_type_name => $entity_type) {
+      // Exclude non-revisionable entities
+      if (!$entity_type->isRevisionable()) {
+        continue;
+      }
+      $field_definitions = $this->entityManager->getFieldStorageDefinitions($entity_type_name);
+      foreach ($field_definitions as $field_name => $field_definition) {
+        if (!$field_definition->isRevisionable()) {
+          continue;
+        }
+
+        $key = $entity_type_name . '__' . $field_name;
+        // Build a row in the table for every field type.
+        $form['fields'][$key] = $this->buildFieldRow($entity_type, $field_definition, $plugins, $diff_plugin_definitions, $form_state);
+      }
     }
 
     // Submit button for the form.
@@ -121,40 +148,25 @@ class FieldTypesSettingsForm extends ConfigFormBase {
       '#button_type' => 'primary',
       '#value' => $this->t('Save'),
     );
-
     $form['#attached']['library'][] = 'field_ui/drupal.field_ui';
     $form['#attached']['library'][] = 'diff/diff.general';
 
     return $form;
   }
 
-  /**
-   * Builds a row for the table. Each row corresponds to a field type.
-   *
-   * @param string $field_type
-   *   ID of the field type.
-   * @param array $field_definition
-   *   Definition the field type.
-   * @param array $plugins
-   *   An array of field types and the associated field diff builder plugins ids.
-   * @param array $diff_plugin_definitions
-   *   Definitions of all field diff builder plugins.
-   * @param FormStateInterface $form_state
-   *   THe form state object.
-   *
-   * @return array
-   *   A table row for the field type listing table.
-   */
-  protected function buildFieldRow($field_type, $field_definition, $plugins, $diff_plugin_definitions, FormStateInterface $form_state) {
-    $display_options = $this->config->get('field_types.' . $field_type);
-    $field_type_label = $this->t('@field_label (%field_type)', array(
-        '@field_label' => $field_definition['label'],
-        '%field_type' => $field_type,
-      )
-    );
+  protected function buildFieldRow($entity_type, $field_definition, $plugins, $diff_plugin_definitions, FormStateInterface $form_state) {
+    $entity_type_label = $entity_type->getLabel();
+    // The label of fields is on the instance, not the storage...
+    // @todo Collect the labels from the instances.
+    $field_label = $field_definition->getLabel();// Human readable name
+    $field_name = $field_definition->getName();// Machine name
+    $field_type = $field_definition->getType();
+
+    $field_key = $entity_type->id() . '__' . $field_name;
 
-    // Build a list of all the diff plugins supporting this field type.
-    $plugin_options = array();
+    $display_options = $this->config->get('fields.' . $field_key);
+    // Build a list of all diff plugins supporting the field type of the field.
+    $plugin_options = [];
     if (isset($plugins[$field_type])) {
       foreach ($plugins[$field_type] as $id) {
         $plugin_options[$id] = $diff_plugin_definitions[$id]['label'];
@@ -162,31 +174,45 @@ class FieldTypesSettingsForm extends ConfigFormBase {
     }
 
     // Base button element for the various plugin settings actions.
-    $base_button = array(
-      '#submit' => array(array($this, 'multistepSubmit')),
-      '#ajax' => array(
-        'callback' => array($this, 'multistepAjax'),
+    $base_button = [
+      '#submit' => [[$this, 'multistepSubmit']],
+      '#ajax' => [
+        'callback' => [$this, 'multiStepAjax'],
         'wrapper' => 'field-display-overview-wrapper',
         'effect' => 'fade',
-      ),
+      ],
+      '#field_name' => $field_name,
       '#field_type' => $field_type,
-    );
+      '#entity_type' => $entity_type_label,
+      '#field_key' => $field_key,
+    ];
+
+    $field_row['entity_type'] = [
+      '#markup' => $entity_type_label,
+    ];
+
+    $field_row['field_label'] = [
+      '#markup' => $field_label,
+    ];
+
+    $field_row['field_type'] = [
+      '#markup' => $field_type,
+    ];
 
-    $field_row['field_type_label'] = array(
-      '#markup' => $field_type_label,
-    );
 
     // Check the currently selected plugin, and merge persisted values for its
     // settings.
-    if ($type = $form_state->getValue(array('fields', $field_type, 'plugin', 'type'))) {
+    if ($type = $form_state->getValue(['fields', $field_key, 'plugin', 'type'])) {
       $display_options['type'] = $type;
     }
+
     $plugin_settings = $form_state->get('plugin_settings');
-    if (isset($plugin_settings[$field_type]['settings'])) {
+
+    if (isset($plugin_settings[$field_key]['settings'])) {
       $modified = FALSE;
       if (!empty($display_options['settings'])) {
         foreach ($display_options['settings'] as $key => $value) {
-          if ($plugin_settings[$field_type]['settings'][$key] != $value) {
+          if ($plugin_settings[$field_key]['settings'][$key] != $value) {
             $modified = TRUE;
             break;
           }
@@ -195,9 +221,9 @@ class FieldTypesSettingsForm extends ConfigFormBase {
       // In case settings are not identical to the ones in the config display
       // a warning message. Don't display it twice.
       if ($modified && empty($_SESSION['messages']['warning'])) {
-        drupal_set_message($this->t('You have unsaved changes.'), 'warning', FALSE);
+        drupal_set_message($this->t('You have unsaved changes.'), 'warning');
       }
-      $display_options['settings'] = $plugin_settings[$field_type]['settings'];
+      $display_options['settings'] = $plugin_settings[$field_key]['settings'];
     }
 
     $field_row['plugin'] = array(
@@ -212,12 +238,14 @@ class FieldTypesSettingsForm extends ConfigFormBase {
         ),
         '#default_value' => $display_options ? $display_options['type'] : 'hidden',
         '#ajax' => array(
-          'callback' => array($this, 'multistepAjax'),
+          'callback' => array($this, 'multiStepAjax'),
           'method' => 'replace',
           'wrapper' => 'field-display-overview-wrapper',
           'effect' => 'fade',
         ),
         '#field_type' => $field_type,
+        '#field_name' => $field_name,
+        '#field_key' => $field_key,
       ),
       'settings_edit_form' => array(),
     );
@@ -227,11 +255,11 @@ class FieldTypesSettingsForm extends ConfigFormBase {
 
     // We are currently editing this field's plugin settings. Display the
     // settings form and submit buttons.
-    if ($form_state->get('plugin_settings_edit') == $field_type) {
+    if ($form_state->get('plugin_settings_edit') == $field_key) {
       $field_row['plugin']['settings_edit_form'] = array(
         '#type' => 'container',
         '#attributes' => array('class' => array('field-plugin-settings-edit-form')),
-        '#parents' => array('fields', $field_type, 'settings_edit_form'),
+        '#parents' => array('fields', $field_key, 'settings_edit_form'),
         'label' => array(
           '#markup' => $this->t('Plugin settings:' . ' <span class="plugin-name">' . $plugin_options[$display_options['type']] . '</span>'),
         ),
@@ -239,51 +267,48 @@ class FieldTypesSettingsForm extends ConfigFormBase {
         'actions' => array(
           '#type' => 'actions',
           'save_settings' => $base_button + array(
-            '#type' => 'submit',
-            '#button_type' => 'primary',
-            '#name' => $field_type . '_plugin_settings_update',
-            '#value' => $this->t('Update'),
-            '#op' => 'update',
-          ),
+              '#type' => 'submit',
+              '#button_type' => 'primary',
+              '#name' => $field_key . '_plugin_settings_update',
+              '#value' => $this->t('Update'),
+              '#op' => 'update',
+            ),
           'cancel_settings' => $base_button + array(
-            '#type' => 'submit',
-            '#name' => $field_type . '_plugin_settings_cancel',
-            '#value' => $this->t('Cancel'),
-            '#op' => 'cancel',
-            // Do not check errors for the 'Cancel' button, but make sure we
-            // get the value of the 'plugin type' select.
-            '#limit_validation_errors' => array(array('fields', $field_type, 'plugin', 'type')),
-          ),
+              '#type' => 'submit',
+              '#name' => $field_key . '_plugin_settings_cancel',
+              '#value' => $this->t('Cancel'),
+              '#op' => 'cancel',
+              // Do not check errors for the 'Cancel' button, but make sure we
+              // get the value of the 'plugin type' select.
+              '#limit_validation_errors' => array(array('fields', $field_key, 'plugin', 'type')),
+            ),
         ),
       );
       $field_row['settings_edit'] = array();
       $field_row['#attributes']['class'][] = 'field-plugin-settings-editing';
     }
     else {
-      $field_row['settings_edit'] = array();
+      $field_row['settings_edit'] = [];
       // Display the configure settings button only if a plugin is selected.
       if ($plugin) {
         $field_row['settings_edit'] = $base_button + array(
-          '#type' => 'image_button',
-          '#name' => $field_type . '_settings_edit',
-          '#src' => 'core/misc/icons/787878/pencil.svg',
-          '#attributes' => array('class' => array('field-plugin-settings-edit'), 'alt' => $this->t('Edit')),
-          '#op' => 'edit',
-          // Do not check errors for the 'Edit' button, but make sure we get
-          // the value of the 'plugin type' select.
-          '#limit_validation_errors' => array(array('fields', $field_type, 'plugin', 'type')),
-          '#prefix' => '<div class="field-plugin-settings-edit-wrapper">',
-          '#suffix' => '</div>',
-        );
+            '#type' => 'image_button',
+            '#name' => $field_key . '_settings_edit',
+            '#src' => 'core/misc/icons/787878/pencil.svg',
+            '#attributes' => array('class' => array('field-plugin-settings-edit'), 'alt' => $this->t('Edit')),
+            '#op' => 'edit',
+            // Do not check errors for the 'Edit' button, but make sure we get
+            // the value of the 'plugin type' select.
+            '#limit_validation_errors' => array(array('fields', $field_key, 'plugin', 'type')),
+            '#prefix' => '<div class="field-plugin-settings-edit-wrapper">',
+            '#suffix' => '</div>',
+          );
       }
     }
 
     return $field_row;
   }
 
-  /**
-   * Form submission handler for multi-step buttons.
-   */
   public function multistepSubmit($form, FormStateInterface $form_state) {
     $trigger = $form_state->getTriggeringElement();
     $op = $trigger['#op'];
@@ -291,15 +316,15 @@ class FieldTypesSettingsForm extends ConfigFormBase {
     switch ($op) {
       case 'edit':
         // Store the field whose settings are currently being edited.
-        $field_name = $trigger['#field_type'];
-        $form_state->set('plugin_settings_edit', $field_name);
+        $field_key = $trigger['#field_key'];
+        $form_state->set('plugin_settings_edit', $field_key);
         break;
 
       case 'update':
         // Store the saved settings, and set the field back to 'non edit' mode.
-        $field_name = $trigger['#field_type'];
-        if ($plugin_settings = $form_state->getValue(array('fields', $field_name, 'settings_edit_form', 'settings'))) {
-          $form_state->set(['plugin_settings', $field_name, 'settings'], $plugin_settings);
+        $field_key = $trigger['#field_key'];
+        if ($plugin_settings = $form_state->getValue(array('fields', $field_key, 'settings_edit_form', 'settings'))) {
+          $form_state->set(['plugin_settings', $field_key, 'settings'], $plugin_settings);
         }
         $form_state->set('plugin_settings_edit', NULL);
         break;
@@ -313,10 +338,7 @@ class FieldTypesSettingsForm extends ConfigFormBase {
     $form_state->setRebuild();
   }
 
-  /**
-   * Ajax handler for multi-step buttons.
-   */
-  public function multistepAjax(array $form, FormStateInterface $form_state) {
+  public function multiStepAjax(array $form, FormStateInterface $form_state) {
     $trigger = $form_state->getTriggeringElement();
     if (isset($trigger['#op'])) {
       $op = $trigger['#op'];
@@ -324,13 +346,13 @@ class FieldTypesSettingsForm extends ConfigFormBase {
       // Pick the elements that need to receive the ajax-new-content effect.
       switch ($op) {
         case 'edit':
-          $updated_rows = array($trigger['#field_type']);
+          $updated_rows = array($trigger['#field_key']);
           $updated_columns = array('plugin');
           break;
 
         case 'update':
         case 'cancel':
-          $updated_rows = array($trigger['#field_type']);
+          $updated_rows = array($trigger['#field_key']);
           $updated_columns = array('plugin', 'settings_edit');
           break;
       }
@@ -347,83 +369,78 @@ class FieldTypesSettingsForm extends ConfigFormBase {
     return $form['fields'];
   }
 
-  /**
-   * {@inheritdoc}
-   */
   public function validateForm(array &$form, FormStateInterface $form_state) {
     $form_values = $form_state->getValues();
     $plugin_settings = $form_state->get('plugin_settings');
-    $field_types = $form_values['fields'];
+    $fields = $form_values['fields'];
 
-    foreach ($field_types as $field_type => $field_type_values) {
+    foreach ($fields as $field_key => $field_values) {
       // Validate only non-null plugins.
-      if ($field_type_values['plugin']['type'] != 'hidden') {
+      if ($field_values['plugin']['type'] != 'hidden') {
         $settings = array();
         $key = NULL;
         // Form submitted without pressing update button on plugin settings form.
-        if (isset($field_type_values['settings_edit_form']['settings'])) {
-          $settings = $field_type_values['settings_edit_form']['settings'];
+        if (isset($field_values['settings_edit_form']['settings'])) {
+          $settings = $field_values['settings_edit_form']['settings'];
           $key = 1;
         }
         // Form submitted after settings were updated.
-        elseif (isset($plugin_settings[$field_type]['settings'])) {
-          $settings = $plugin_settings[$field_type]['settings'];
+        elseif (isset($plugin_settings[$field_key]['settings'])) {
+          $settings = $plugin_settings[$field_key]['settings'];
           $key = 2;
         }
         if (!empty($settings)) {
           // Build a new Form State object and populate it with values.
           $state = new FormState();
           $state->setValues($settings);
-          $state->set('field_type', $field_type);
-          $plugin = $this->diffBuilderManager->createInstance($field_type_values['plugin']['type'], array());
+          $state->set('fields', $field_key);
+          //$state->set('field_type', $field_type);
+          $plugin = $this->diffBuilderManager->createInstance($field_values['plugin']['type'], array());
           // Send the values to the plugins form validate handler.
           $plugin->validateConfigurationForm($form, $state);
           // Assign the validation messages back to the big table.
           if ($key == 1) {
-            $form_state->setValue(['fields', $field_type, 'settings_edit_form', 'settings'], $state->getValues());
+            $form_state->setValue(['fields', $field_key, 'settings_edit_form', 'settings'], $state->getValues());
           }
           elseif ($key == 2) {
-            $form_state->set(['plugin_settings', $field_type, 'settings'], $state->getValues());
+            $form_state->set(['plugin_settings', $field_key, 'settings'], $state->getValues());
           }
         }
       }
     }
   }
 
-  /**
-   * {@inheritdoc}
-   */
   public function submitForm(array &$form, FormStateInterface $form_state) {
     $form_values = $form_state->getValues();
     $plugin_settings = $form_state->get('plugin_settings');
-    $field_types = $form_values['fields'];
+    $fields = $form_values['fields'];
 
     // Remove from configuration the keys of the field types which have no
     // plugin selected. We need to clear this keys from configuration first
     // and then save the settings for the fields which have a plugin selected.
     // If we do both writing and clearing in the same for, the values won't get
     // saved.
-    foreach ($field_types as $field_type => $field_type_values) {
+    foreach ($fields as $field_key => $field_values) {
       // If there is no plugin selected remove the key from config file.
-      if ($field_type_values['plugin']['type'] == 'hidden') {
-        $this->config->clear('field_types.' . $field_type);
+      if ($field_values['plugin']['type'] == 'hidden') {
+        $this->config->clear('fields.' . $field_key);
       }
     }
     $this->config->save();
     // For field types that have a plugin selected save the settings.
-    foreach ($field_types as $field_type => $field_type_values) {
-      if ($field_type_values['plugin']['type'] != 'hidden') {
+    foreach ($fields as $field_key => $field_values) {
+      if ($field_values['plugin']['type'] != 'hidden') {
         // Get plugin settings. They lie either directly in submitted form
         // values (if the whole form was submitted while some plugin settings
         // were being edited), or have been persisted in $form_state.
-        $plugin = $this->diffBuilderManager->createInstance($field_type_values['plugin']['type']);
+        $plugin = $this->diffBuilderManager->createInstance($field_values['plugin']['type']);
         // Form submitted without pressing update button on plugin settings form.
-        if (isset($field_type_values['settings_edit_form']['settings'])) {
-          $settings = $field_type_values['settings_edit_form']['settings'];
+        if (isset($field_values['settings_edit_form']['settings'])) {
+          $settings = $field_values['settings_edit_form']['settings'];
         }
         // Form submitted after settings were updated.
-        elseif (isset($plugin_settings[$field_type]['settings'])) {
-          $settings = $plugin_settings[$field_type]['settings'];
+        elseif (isset($plugin_settings[$field_key]['settings'])) {
+          $settings = $plugin_settings[$field_key]['settings'];
         }
         // If the settings are not set anywhere in the form state just save the
         // default configuration for the current plugin.
@@ -433,7 +450,8 @@ class FieldTypesSettingsForm extends ConfigFormBase {
         // Build a FormState object and call the plugin submit handler.
         $state = new FormState();
         $state->setValues($settings);
-        $state->set('field_type', $field_type);
+        $state->set('fields', $field_key);
+        //$state->set('field_type', $field_type);
 
         $plugin->submitConfigurationForm($form, $state);
       }
@@ -465,10 +483,11 @@ class FieldTypesSettingsForm extends ConfigFormBase {
    */
   protected function getTableHeader() {
     return array(
+      'entity_type' => $this->t('Entity Type'),
+      'field_name' => $this->t('Field'),
       'field_type' => $this->t('Field Type'),
       'plugin' => $this->t('Plugin'),
       'settings_edit' => $this->t(''),
     );
   }
-
 }
diff --git a/src/Form/NodeEntitySettingsForm.php b/src/Form/NodeEntitySettingsForm.php
deleted file mode 100644
index aafa7eb..0000000
--- a/src/Form/NodeEntitySettingsForm.php
+++ /dev/null
@@ -1,106 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\config\Form\NodeEntitySettingsForm.
- */
-
-namespace Drupal\diff\Form;
-
-use Drupal\Core\Form\ConfigFormBase;
-use Symfony\Component\DependencyInjection\ContainerInterface;
-use Drupal\Core\Entity\EntityManagerInterface;
-use Drupal\Core\Form\FormStateInterface;
-
-/**
- * Defines the settings form for a node entity.
- */
-class NodeEntitySettingsForm extends ConfigFormBase {
-
-  /**
-   * The entity manager.
-   *
-   * @var \Drupal\Core\Entity\EntityManagerInterface
-   */
-  protected $entityManager;
-
-  /**
-   * Constructs a NodeEntitySettingsForm object.
-   *
-   * @param \Drupal\Core\Entity\EntityManagerInterface $entityManager
-   *   The entity manager.
-   */
-  public function __construct(EntityManagerInterface $entityManager) {
-    $this->entityManager = $entityManager;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public static function create(ContainerInterface $container) {
-    return new static(
-      $container->get('entity.manager')
-    );
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function getFormId() {
-    return 'diff_entity_node';
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  protected function getEditableConfigNames() {
-    return [
-      'diff.settings',
-    ];
-  }
-
-  /**
-   * {@inheritdoc}
-   */
-  public function buildForm(array $form, FormStateInterface $form_state) {
-    $form = array();
-    $config = $this->config('diff.settings');
-
-    $form['info'] = array(
-      '#markup' => 'Select which of the below base fields of node entities should be compared.',
-    );
-
-    $node_base_fields = $this->entityManager->getBaseFieldDefinitions('node');
-    foreach ($node_base_fields as $field_key => $field) {
-      $form[$field_key] = array(
-        '#title' => $this->t('@field_label (%field_type)', array(
-          '@field_label' => $field->getLabel(),
-          '%field_type' => $field->getType(),
-          )
-        ),
-        '#type' => 'checkbox',
-        '#default_value' => $config->get('entity.node.' . $field_key),
-      );
-    }
-
-    return parent::buildForm($form, $form_state);
-  }
-
-
-  /**
-   * {@inheritdoc}
-   */
-  public function submitForm(array &$form, FormStateInterface $form_state) {
-    $config = $this->config('diff.settings');
-    $values = $form_state->getValues();
-
-    $node_base_fields = $this->entityManager->getBaseFieldDefinitions('node');
-    foreach ($node_base_fields as $field_key => $field) {
-      $config->set('entity.node' . '.' . $field_key, $values[$field_key]);
-      $config->save();
-    }
-
-    return parent::submitForm($form, $form_state);
-  }
-
-}
