diff --git a/js/sitemap.admin.es6.js b/js/sitemap.admin.es6.js
new file mode 100644
index 0000000..4dff853
--- /dev/null
+++ b/js/sitemap.admin.es6.js
@@ -0,0 +1,71 @@
+/**
+ * @file
+ * Attaches administration-specific behavior for the Sitemap module.
+ */
+
+(function($, Drupal) {
+  /**
+   * Displays and updates the status of plugins on the admin page.
+   *
+   * @type {Drupal~behavior}
+   *
+   * @prop {Drupal~behaviorAttach} attach
+   *   Attaches behaviors to the sitemap admin form.
+   */
+  Drupal.behaviors.sitemapStatus = {
+    attach(context, settings) {
+      const $context = $(context);
+      $context
+        .find('#sitemap-enabled-wrapper input.form-checkbox')
+        .once('sitemap-enabled')
+        .each(function() {
+          const $checkbox = $(this);
+          // Retrieve the tabledrag row belonging to this filter.
+          const $row = $context
+            .find(`#${$checkbox.attr('id').replace(/-enabled$/, '-weight')}`)
+            .closest('tr');
+          // Retrieve the vertical tab belonging to this filter.
+          const $filterSettings = $context.find(
+            `#${$checkbox.attr('id').replace(/-enabled$/, '-settings')}`,
+          );
+          const filterSettingsTab = $filterSettings.data('verticalTab');
+
+          // Bind click handler to this checkbox to conditionally show and hide
+          // the filter's tableDrag row and vertical tab pane.
+          $checkbox.on('click.fitlerUpdate', () => {
+            if ($checkbox.is(':checked')) {
+              $row.show();
+              if (filterSettingsTab) {
+                filterSettingsTab.tabShow().updateSummary();
+              } else {
+                // On very narrow viewports, Vertical Tabs are disabled.
+                $filterSettings.show();
+              }
+            } else {
+              $row.hide();
+              if (filterSettingsTab) {
+                filterSettingsTab.tabHide().updateSummary();
+              } else {
+                // On very narrow viewports, Vertical Tabs are disabled.
+                $filterSettings.hide();
+              }
+            }
+            // Restripe table after toggling visibility of table row.
+            Drupal.tableDrag['sitemap-order'].restripeTable();
+          });
+
+          // Attach summary for configurable filters (only for screen readers).
+          if (filterSettingsTab) {
+            filterSettingsTab.details.drupalSetSummary(() =>
+              $checkbox.is(':checked')
+                ? Drupal.t('Enabled')
+                : Drupal.t('Disabled'),
+            );
+          }
+
+          // Trigger our bound click handler to update elements to initial state.
+          $checkbox.triggerHandler('click.filterUpdate');
+        });
+    },
+  };
+})(jQuery, Drupal);
diff --git a/js/sitemap.admin.js b/js/sitemap.admin.js
index 86885a9..0950a99 100644
--- a/js/sitemap.admin.js
+++ b/js/sitemap.admin.js
@@ -1,45 +1,50 @@
 /**
- * @file
- * Attaches administration-specific behavior for the Sitemap module.
- */
+ * DO NOT EDIT THIS FILE.
+ * See the following change record for more information,
+ * https://www.drupal.org/node/2815083
+ * @preserve
+ **/
 
 (function ($, Drupal) {
-
-  'use strict';
-
-  /**
-   * Displays the ordering options of sitemap content items on the admin page.
-   *
-   * @type {Drupal~behavior}
-   *
-   * @prop {Drupal~behaviorAttach} attach
-   *   Attaches behaviors to the filter admin view.
-   */
-  Drupal.behaviors.sitemapPlugins = {
-    attach: function (context, settings) {
+  Drupal.behaviors.sitemapStatus = {
+    attach: function attach(context, settings) {
       var $context = $(context);
-      $context.find('#edit-sitemap-plugins input.form-checkbox').once('sitemap-enabled').each(function () {
+      $context.find('#sitemap-enabled-wrapper input.form-checkbox').once('sitemap-enabled').each(function () {
         var $checkbox = $(this);
-        // Retrieve the tabledrag row belonging to this sitemap content item.
-        var $row = $context.find('#' + $checkbox.attr('data-drupal-selector').replace('show', 'order')).closest('tr');
 
-        // Bind click handler to this checkbox to conditionally show and hide
-        // the sitemap content items's tableDrag row.
-        $checkbox.on('click.sitemapPluginsUpdate', function () {
+        var $row = $context.find('#' + $checkbox.attr('id').replace(/-enabled$/, '-weight')).closest('tr');
+
+        var $filterSettings = $context.find('#' + $checkbox.attr('id').replace(/-enabled$/, '-settings'));
+        var filterSettingsTab = $filterSettings.data('verticalTab');
+
+        $checkbox.on('click.filterUpdate', function () {
           if ($checkbox.is(':checked')) {
             $row.show();
-          }
-          else {
+            if (filterSettingsTab) {
+              filterSettingsTab.tabShow().updateSummary();
+            } else {
+              $filterSettings.show();
+            }
+          } else {
             $row.hide();
+            if (filterSettingsTab) {
+              filterSettingsTab.tabHide().updateSummary();
+            } else {
+              $filterSettings.hide();
+            }
           }
-          // Restripe table after toggling visibility of table row.
+
           Drupal.tableDrag['sitemap-order'].restripeTable();
         });
 
-        // Trigger our bound click handler to update elements to initial state.
-        $checkbox.triggerHandler('click.sitemapPluginsUpdate');
+        if (filterSettingsTab) {
+          filterSettingsTab.details.drupalSetSummary(function () {
+            return $checkbox.is(':checked') ? Drupal.t('Enabled') : Drupal.t('Disabled');
+          });
+        }
+
+        $checkbox.triggerHandler('click.filterUpdate');
       });
     }
   };
-
 })(jQuery, Drupal);
diff --git a/src/Form/SitemapSettingsForm.php b/src/Form/SitemapSettingsForm.php
index 41689ee..bf9859b 100644
--- a/src/Form/SitemapSettingsForm.php
+++ b/src/Form/SitemapSettingsForm.php
@@ -101,25 +101,25 @@ class SitemapSettingsForm extends ConfigFormBase {
     // Plugin status.
     $form['plugins']['enabled'] = [
       '#type' => 'item',
-      '#title' => $this->t('Available plugins'),
-      '#prefix' => '<div id="plugins-enabled-wrapper">',
+      '#title' => $this->t('Enabled plugins'),
+      '#prefix' => '<div id="sitemap-enabled-wrapper">',
       '#suffix' => '</div>',
       // This item is used as a pure wrapping container with heading. Ignore its
       // value, since 'plugins' should only contain plugin definitions.
       // See https://www.drupal.org/node/1829202.
       '#input' => FALSE,
     ];
-    // SitemapMap order (tabledrag).
+    // Plugin order (tabledrag).
     $form['plugins']['order'] = [
       '#type' => 'table',
       // For sitemap.admin.js.
       '#attributes' => ['id' => 'sitemap-order'],
-      '#title' => $this->t('Plugin order'),
+      '#title' => $this->t('Plugin display order'),
       '#tabledrag' => [
         [
           'action' => 'order',
           'relationship' => 'sibling',
-          'group' => 'sitemap-plugin-order-weight',
+          'group' => 'plugin-order-weight',
         ],
       ],
       '#tree' => FALSE,
@@ -132,31 +132,24 @@ class SitemapSettingsForm extends ConfigFormBase {
       '#title' => $this->t('Plugin settings'),
     ];
 
-    // Provide a default weight value.
-    $i = -50;
+    $defaultSort = $this->plugins;
+    $sorted =$this->sortPlugins($this->plugins);
 
-    foreach ($this->plugins as $id => $plugin) {
+    foreach ($sorted as $id => $plugin) {
       /* @var $plugin \Drupal\sitemap\SitemapBase */
 
-      if (!empty($plugin->weight)) {
-        $weight = $plugin->weight;
-        $i = $weight;
-      }
-      else {
-        $weight = $i;
-      }
-
       $form['plugins']['enabled'][$id] = [
         '#type' => 'checkbox',
         '#title' => $plugin->getLabel(),
         '#default_value' => $plugin->enabled,
         '#parents' => ['plugins', $id, 'enabled'],
         '#description' => $plugin->getDescription(),
-        '#weight' => $weight,
+        // Default sort groups by plugin type.
+        '#weight' => $defaultSort[$id]->weight,
       ];
 
       $form['plugins']['order'][$id]['#attributes']['class'][] = 'draggable';
-      $form['plugins']['order'][$id]['#weight'] = $weight;
+      $form['plugins']['order'][$id]['#weight'] = $plugin->weight;
       $form['plugins']['order'][$id]['filter'] = [
         '#markup' => $plugin->getLabel(),
       ];
@@ -165,12 +158,12 @@ class SitemapSettingsForm extends ConfigFormBase {
         '#title' => $this->t('Weight for @title', ['@title' => $plugin->getLabel()]),
         '#title_display' => 'invisible',
         '#delta' => 50,
-        '#default_value' => $weight,
+        '#default_value' => $plugin->weight,
         '#parents' => ['plugins', $id, 'weight'],
         '#attributes' => ['class' => ['plugin-order-weight']],
       ];
 
-      // Retrieve the settings form of the SitemapMap plugins.
+      // Retrieve the settings form of the Sitemap plugin.
       $settings_form = [
         '#parents' => ['plugins', $id, 'settings'],
         '#tree' => TRUE,
@@ -181,21 +174,12 @@ class SitemapSettingsForm extends ConfigFormBase {
           '#type' => 'details',
           '#title' => $plugin->getLabel(),
           '#open' => TRUE,
-          '#weight' => $weight,
+          '#weight' => $plugin->weight,
           '#parents' => ['plugins', $id, 'settings'],
           '#group' => 'plugin_settings',
         ];
         $form['plugins']['settings'][$id] += $settings_form;
-
-        if (isset($plugins[$id]['settings'])) {
-          foreach ($plugins[$id]['settings'] as $key => $value) {
-            $form['plugins']['settings'][$id][$key]['#default_value'] = $value;
-          }
-        }
       }
-
-      // Increment the default weight value.
-      $i++;
     }
     $form['#attached']['library'][] = 'sitemap/sitemap.admin';
 
@@ -249,4 +233,26 @@ class SitemapSettingsForm extends ConfigFormBase {
     return ['sitemap.settings'];
   }
 
+  /**
+   * Sort the plugins by weight.
+   *
+   * @param $plugins
+   *
+   * @return array
+   */
+  protected function sortPlugins($plugins) {
+    // We cannot use array_column here because pluginId is protected.
+    //$order = array_column($plugins, 'weight', 'publicId');
+    $order = [];
+    foreach ($plugins as $id => $plugin) {
+      $order[$id] = $plugin->weight;
+    }
+    asort($order);
+    foreach ($order as $id => $weight) {
+      $order[$id] = $plugins[$id];
+    }
+
+    return $order;
+  }
+
 }
diff --git a/src/Plugin/Sitemap/Vocabulary.php b/src/Plugin/Sitemap/Vocabulary.php
index 908456a..39ee8de 100644
--- a/src/Plugin/Sitemap/Vocabulary.php
+++ b/src/Plugin/Sitemap/Vocabulary.php
@@ -113,7 +113,7 @@ class Vocabulary extends SitemapBase {
       '#default_value' => $this->settings['term_count_threshold'],
       '#size' => 3,
       '#description' => $this->t(
-        'Only show taxonomy terms whose node counts are greater than this threshold. Set to <em>@disabled</em> to disable this threshold. Note that in hierarchical taxonomies, parent items will children will still be shown.',
+        'Only show taxonomy terms whose node counts are greater than this threshold. Set to <em>@disabled</em> to disable this threshold. Note that in hierarchical taxonomies, parent items with children will still be shown.',
         ['@disabled' => self::THRESHOLD_DISABLED]
       ),
     ];
