diff --git workbench_access.module workbench_access.module
index e5c7c17..20fbcc0 100644
--- workbench_access.module
+++ workbench_access.module
@@ -1227,8 +1227,7 @@ function workbench_access_form_taxonomy_form_vocabulary_alter(&$form, &$form_sta
   $vocabulary = $form['#vocabulary'];
   $active = array_filter(variable_get('workbench_access_taxonomy', array()));
   if (!in_array($vocabulary->machine_name, $active)) {
-    // TODO: allow this to be made a category.
-    return;
+    workbench_access_add_scheme_form(&$form, &$form_state, 'taxonomy', $vocabulary->machine_name);
   }
   $access_id = isset($vocabulary->machine_name) ? $vocabulary->machine_name : NULL;
   workbench_access_edit_form_alter($form, $access_id, 'vocabulary');
@@ -1348,8 +1347,7 @@ function workbench_access_form_menu_edit_menu_alter(&$form, &$form_state, $form_
   $menu = $form['menu_name']['#default_value'];
   $active = array_filter(variable_get('workbench_access_menu', array()));
   if (!in_array($menu, $active)) {
-    // TODO: allow this to be made a category.
-    return;
+    workbench_access_add_scheme_form(&$form, &$form_state, 'menu', $menu);
   }
   $access_id = $menu;
   workbench_access_edit_form_alter($form, $access_id, 'menu');
@@ -1360,6 +1358,21 @@ function workbench_access_form_menu_edit_menu_alter(&$form, &$form_state, $form_
  */
 function workbench_access_menu_submit($form, &$form_state) {
   $values = $form_state['values'];
+  // Are we trying to add a new scheme?
+  if (isset($values['workbench_access_add_type']) && empty($values['workbench_access_add_type'])) {
+    return;
+  }
+  elseif (!empty($values['workbench_access_add_type'])) {
+    $schemes = variable_get('workbench_access_' . $values['workbench_access_type'], array());
+    $schemes[$values['workbench_access_add_type']] = $values['workbench_access_add_type'];
+    variable_set('workbench_access_' . $values['workbench_access_type'], $schemes);
+    drupal_set_message(t('This @type has been made an active access scheme', array('@type' => $values['workbench_access_type'])));
+    // If the user did not specify section assignment, then stop.
+    if (empty($values['workbench_access'])) {
+      return;
+    }
+    // TODO: auto-assign elements. Remove redundancy.
+  }
   if (!isset($values['workbench_access'])) {
     return;
   }
@@ -1408,6 +1421,20 @@ function workbench_access_menu_link_submit($form, &$form_state) {
 }
 
 /**
+ * Helper function to create form elements to add schemes.
+ */
+function workbench_access_add_scheme_form(&$form, &$form_state, $type, $type_id) {
+  $form['workbench_access_type'] = array('#type' => 'value', '#value' => $type);
+  $form['workbench_access_add_type'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Enable Workbench Access scheme'),
+    '#description' => t('Add this @type as an active access scheme', array('@type' => $type)),
+    '#value' => $type_id,
+    '#default_value' => FALSE,
+  );
+}
+
+/**
  * Implements hook_block_view_workbench_block_alter().
  *
  * Show the editorial status of this node.
