diff --git a/src/Form/AdminForm.php b/src/Form/AdminForm.php
index 20bb5cb..bdc80d9 100644
--- a/src/Form/AdminForm.php
+++ b/src/Form/AdminForm.php
@@ -159,17 +159,30 @@ class AdminForm extends ConfigFormBase {
       '#default_value' => 'none',
     );
 
+    // Show and change all custom configurations.
+    $form['custom']['modules'] = array(
+      '#type' => 'table',
+      '#header' => array(
+        'module' => $this->t('Module'),
+        'key' => $this->t('Key'),
+        'formatter' => $this->t('Formatter'),
+        'sender' => $this->t('Sender'),
+        'remove' => $this->t('Remove'),
+      ),
+      '#empty' => $this->t('No special configuration yet...'),
+    );
+
     // Get all configured modules and show them in a list.
     $modules = $config->get(MailsystemManager::MAILSYSTEM_MODULES_CONFIG) ?: [];
-    $options = array();
     foreach ($modules as $module => $conf) {
       if (is_array($conf)) {
         // Main table structure.
-        $mod = array(
-          'module' => ucfirst($module),
+        $row = array(
+          'module' => ['#markup' => ucfirst($module)],
+          'key' => ['#markup' => ''],
           'formatter' => '',
           'sender' => '',
-          'key' => '',
+          'remove' => '',
         );
 
         foreach ($conf as $key => $val) {
@@ -179,43 +192,51 @@ class AdminForm extends ConfigFormBase {
           // with the types as keys - in both cases, the values are the Plugins.
           switch ($key) {
             case MailsystemManager::MAILSYSTEM_TYPE_FORMATTING:
-              $mod['formatter'] = $this->getPluginLabel($val);
+              $row['formatter'] = array(
+                '#type' => 'select',
+                '#options' => $this->getFormatterPlugins(TRUE),
+                '#default_value' => $val[MailsystemManager::MAILSYSTEM_TYPE_FORMATTING],
+              );
               break;
 
             case MailsystemManager::MAILSYSTEM_TYPE_SENDING:
-              $mod['sender'] = $this->getPluginLabel($val);
+              $row['sender'] = array(
+                '#type' => 'select',
+                '#options' => $this->getSenderPlugins(TRUE),
+                '#default_value' => $val[MailsystemManager::MAILSYSTEM_TYPE_SENDING],
+              );
               break;
 
             default:
               if (is_array($val)) {
-                $mod['key'] = ($key === 'none') ? '' : $key;
+                $row['key'] = ['#markup' => (($key === 'none') ? '' : $key)];
                 if (isset($val[MailsystemManager::MAILSYSTEM_TYPE_FORMATTING])) {
-                  $mod['formatter'] = $this->getPluginLabel($val[MailsystemManager::MAILSYSTEM_TYPE_FORMATTING]);
+                  $row['formatter'] = array(
+                    '#type' => 'select',
+                    '#options' => $this->getFormatterPlugins(TRUE),
+                    '#default_value' => $val[MailsystemManager::MAILSYSTEM_TYPE_FORMATTING],
+                  );
                 }
                 if (isset($val[MailsystemManager::MAILSYSTEM_TYPE_SENDING])) {
-                  $mod['sender'] = $this->getPluginLabel($val[MailsystemManager::MAILSYSTEM_TYPE_SENDING]);
+                  $row['sender'] = array(
+                    '#type' => 'select',
+                    '#options' => $this->getSenderPlugins(TRUE),
+                    '#default_value' => $val[MailsystemManager::MAILSYSTEM_TYPE_SENDING],
+                  );
                 }
+                $row['remove'] = array(
+                  '#type' => 'checkbox',
+                  '#default_value' => $module_key,
+                );
               }
               break;
           }
-          $options[$module_key] = $mod;
+
+          $form['custom']['modules'][$module_key] = $row;
         }
       }
     }
 
-    // Show and change all custom configurations.
-    $form['custom']['modules'] = array(
-      '#type' => 'tableselect',
-      '#header' => array(
-        'module' => $this->t('Module'),
-        'key' => $this->t('Key'),
-        'formatter' => $this->t('Formatter'),
-        'sender' => $this->t('Sender'),
-      ),
-      '#options' => $options,
-      '#empty' => $this->t('No special configuration yet...'),
-    );
-
     return parent::buildForm($form, $form_state);
   }
 
@@ -280,12 +301,16 @@ class AdminForm extends ConfigFormBase {
       }
     }
 
-    // If there are some selections in the tableselect, remove them.
-    if ($form_state->hasValue(['custom', 'modules']) && is_array($form_state->getValue(['custom', 'modules']))) {
-      foreach ($form_state->getValue(['custom', 'modules']) as $key => $val) {
-        if ($key === $val) {
-          $config->clear(MailsystemManager::MAILSYSTEM_MODULES_CONFIG . '.' . $key);
-        }
+    foreach ($form_state->getValue(['custom', 'modules'], []) as $module_key => $settings) {
+      $mailsystem_settings = MailsystemManager::MAILSYSTEM_MODULES_CONFIG . '.' . $module_key;
+      // If some checkboxs are checked, remove these rows.
+      if (!empty($settings['remove'])) {
+        $config->clear($mailsystem_settings);
+      }
+      else {
+        // Update formatter and sender.
+        $config->set($mailsystem_settings . '.' . MailsystemManager::MAILSYSTEM_TYPE_FORMATTING, $settings[MailsystemManager::MAILSYSTEM_TYPE_FORMATTING]);
+        $config->set($mailsystem_settings . '.' . MailsystemManager::MAILSYSTEM_TYPE_SENDING, $settings[MailsystemManager::MAILSYSTEM_TYPE_SENDING]);
       }
     }
 
