diff --git a/workbench_access.admin.inc b/workbench_access.admin.inc
index 5da9bd4..88a4fb1 100644
--- a/workbench_access.admin.inc
+++ b/workbench_access.admin.inc
@@ -65,6 +65,12 @@ function workbench_access_settings_form($form, &$form_state) {
     '#default_value' => variable_get('workbench_access_auto_assign', 1),
     '#description' => t('Enable all sections automatically for the active scheme.'),
   );
+  $form['workbench_access_custom_form'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Require a Workbench Access form element'),
+    '#default_value' => variable_get('workbench_access_custom_form', 1),
+    '#description' => t('If not selected, Workbench Access settings will inherit from the standard node form.'),
+  );
   $form = system_settings_form($form);
   $form['#validate'][] = 'workbench_access_settings_validate';
   $form['#submit'][] = 'workbench_access_settings_submit';
diff --git a/workbench_access.module b/workbench_access.module
index bae15df..9b1437e 100644
--- a/workbench_access.module
+++ b/workbench_access.module
@@ -1214,6 +1214,10 @@ function workbench_access_form_alter(&$form, $form_state, $form_id) {
   }
   // Fire the node form alter.
   else {
+    if ($native = workbench_access_force_native_form() || variable_get('workbench_access_custom_form', 1)) {
+      // Move our form to a helper function.
+    }
+    $elements = workbench_access_find_form_elements($form);
     // Make sure we prepared the user.
     if (!isset($user->workbench_access)) {
       workbench_access_user_load_data($user);
@@ -1274,6 +1278,48 @@ function workbench_access_form_alter(&$form, $form_state, $form_id) {
 }
 
 /**
+ * Check to see if the default form element is required.
+ */
+function workbench_access_force_native_form() {
+  $active = workbench_access_get_active_tree();
+  $ids = array_filter($active['access_scheme']['access_type_id']);
+  if (!empty($ids['workbench_access'])) {
+    return TRUE;
+  }
+  return FALSE;
+}
+
+/**
+ * Find form elements that control access.
+ */
+function workbench_access_find_form_elements($form) {
+  $form['workbench_access_fields'] = array(
+    '#type' => 'value',
+    '#value' => array(),
+  );
+  $active = workbench_access_get_active_tree();
+  $ids = array_filter($active['access_scheme']['access_type_id']);
+  // Find taxonomy and other fieldable entities.
+  foreach (element_children($form) as $item) {
+    if ($field = field_info_field($item)) {
+      // Find matching taxonomy fields.
+      if ($active['access_scheme']['access_type'] == 'taxonomy' && $field['type'] == 'taxonomy_term_reference') {
+        if (isset($field['settings']['allowed_values'][0]['vocabulary'])) {
+          if (!empty($ids[$field['settings']['allowed_values'][0]['vocabulary']])) {
+            $form['workbench_access_fields']['#value'][] = $item;
+          }
+        }
+      }
+    }
+  }
+  // Find the menu form.
+  if ($active['access_scheme']['access_type'] == 'menu') {
+    $form['workbench_access_fields']['#value'][] = 'mlid';
+  }
+  dsm($form);
+}
+
+/**
  * Call the alter hook for the active schema.
  */
 function workbench_access_alter_form($hook, &$form, &$form_state) {
