diff --git a/config/install/node_clone.settings.yml b/config/install/node_clone.settings.yml
index 02daf03..0397cad 100644
--- a/config/install/node_clone.settings.yml
+++ b/config/install/node_clone.settings.yml
@@ -2,3 +2,4 @@ node_clone_method: prepopulate
 node_clone_nodes_without_confirm: false
 node_clone_use_node_type_name: 0
 node_clone_menu_links: false
+node_clone_omitted: []
\ No newline at end of file
diff --git a/config/schema/node_clone.schema.yml b/config/schema/node_clone.schema.yml
index 37c851d..469c148 100644
--- a/config/schema/node_clone.schema.yml
+++ b/config/schema/node_clone.schema.yml
@@ -10,3 +10,9 @@ node_clone.settings:
       type: integer
     node_clone_menu_links:
       type: boolean
+    node_clone_omitted:
+          type: sequence
+          label: 'Content types to omit'
+          sequence:
+            - type: string
+              label: 'Content type machine name'
diff --git a/node_clone.module b/node_clone.module
index d899daf..67b5bf1 100644
--- a/node_clone.module
+++ b/node_clone.module
@@ -25,11 +25,7 @@ function node_clone_help($path, $arg) {
 }
 
 function node_clone_is_permitted($type) {
-  // @FIXME
-// Could not extract the default value because it is either indeterminate, or
-// not scalar. You'll need to provide a default value in
-// config/install/node_clone.settings.yml and config/schema/node_clone.schema.yml.
-$omitted = \Drupal::config('node_clone.settings')->get('node_clone_omitted');
+  $omitted = \Drupal::config('node_clone.settings')->get('node_clone_omitted');
   return empty($omitted[$type]);
 }
 
diff --git a/src/Controller/NodeCloneFormController.php b/src/Controller/NodeCloneFormController.php
index dda6871..3a3d58b 100644
--- a/src/Controller/NodeCloneFormController.php
+++ b/src/Controller/NodeCloneFormController.php
@@ -105,7 +105,11 @@ class NodeCloneFormController extends FormController {
    * @return bool
    */
   public function access(AccountInterface $account, NodeInterface $node) {
-    if ($account->hasPermission('clone node') || ($node->uid->value === $account->id() && $account->hasPermission('clone own nodes'))) {
+    $omitted = \Drupal::config('node_clone.settings')->get('node_clone_omitted');
+    if (in_array($node->getType(), $omitted)) {
+      $access = new AccessResultForbidden();
+    }
+    else if ($account->hasPermission('clone node') || ($node->uid->value === $account->id() && $account->hasPermission('clone own nodes'))) {
       $access = new AccessResultAllowed();
     }
     else {
diff --git a/src/Form/NodeCloneSettings.php b/src/Form/NodeCloneSettings.php
index 288dea9..652bdcc 100644
--- a/src/Form/NodeCloneSettings.php
+++ b/src/Form/NodeCloneSettings.php
@@ -21,8 +21,13 @@ class NodeCloneSettings extends ConfigFormBase {
   public function submitForm(array &$form, FormStateInterface $form_state) {
     $config = $this->config('node_clone.settings');
 
-    foreach (Element::children($form) as $variable) {
-      $config->set($variable, $form_state->getValue($form[$variable]['#parents']));
+    foreach ($form_state->getValues() as $key => $value) {
+      if (is_array($value)) {
+        $flipped = array_flip($value);
+        unset($flipped[0]);
+        $value = array_keys($flipped);
+      }
+      $config->set($key, $value);
     }
     $config->save();
 
@@ -111,16 +116,11 @@ class NodeCloneSettings extends ConfigFormBase {
 
     }
 
-    // Need the variable default key to be something that's never a valid node type.
     $form['omit'] = [
       '#type' => 'fieldset',
       '#title' => t('Content types that are not to be cloned - omitted due to incompatibility'),
     ];
-    // @FIXME
-    // Could not extract the default value because it is either indeterminate, or
-    // not scalar. You'll need to provide a default value in
-    // config/install/node_clone.settings.yml and config/schema/node_clone.schema.yml.
-    $form['omit']['clone_omitted'] = [
+    $form['omit']['node_clone_omitted'] = [
       '#type' => 'checkboxes',
       '#title' => t('Omitted content types'),
       '#default_value' => \Drupal::config('node_clone.settings')->get('node_clone_omitted'),
