diff --git a/honeypot.admin.inc b/honeypot.admin.inc
index f76edd4..2dcfdcd 100755
--- a/honeypot.admin.inc
+++ b/honeypot.admin.inc
@@ -30,13 +30,31 @@ function honeypot_admin_form($form, &$form_state) {
     '#default_value' => variable_get('honeypot_log', 0),
   );
   $form['configuration']['honeypot_element_name'] = array(
-    '#type' => 'textfield',
+    '#type' => 'textarea',
     '#title' => t('Honeypot element name'),
-    '#description' => t("The name of the Honeypot form field. It's usually most effective to use a generic name like email, homepage, or link, but this should be changed if it interferes with fields that are already in your forms. Must not contain spaces or special characters."),
+    '#description' => t("The name of the Honeypot form field. It's usually most effective to use a generic name like email, homepage, or name, but this should be changed if it interferes with fields that are already in your forms. Must not contain spaces or special characters. Add multiple options separated by line breaks and Honeypot will randomize the element name to make it harder to detect."),
     '#default_value' => variable_get('honeypot_element_name', 'url'),
     '#required' => TRUE,
     '#size' => 30,
   );
+  $form['configuration']['honeypot_element_description'] = array(
+    '#type' => 'textarea',
+    '#title' => t('Honeypot element description'),
+    '#description' => t("Help text for screen readers that pick up the honeypot field. Add multiple options separated by line breaks and Honeypot will randomize the description to make it harder to detect."),
+    '#default_value' => variable_get('honeypot_element_description', 'Please leave this field blank.'),
+  );
+  $form['configuration']['honeypot_element_randomize_placement'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Randomize Honeypot element placement'),
+    '#description' => t("Attempt to randomize placement of Honeypot element using form weight"),
+    '#default_value' => variable_get('honeypot_element_randomize_placement', 0),
+  );
+  $form['configuration']['honeypot_element_add_required_class'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Add required class to honey pot element'),
+    '#description' => t("Add the 'required' class to Honeypot element to try to fool spam bots. Note that this may break clientside form validation."),
+    '#default_value' => variable_get('honeypot_element_add_required_class', 0),
+   );
   $form['configuration']['honeypot_time_limit'] = array(
     '#type' => 'textfield',
     '#title' => t('Honeypot time limit'),
@@ -167,8 +185,11 @@ function honeypot_admin_form_validate($form, &$form_state) {
   }
 
   // Make sure Honeypot element name only contains A-Z, 0-9.
-  if (!preg_match("/^[-_a-zA-Z0-9]+$/", $form_state['values']['honeypot_element_name'])) {
-    form_set_error('honeypot_element_name', t("The element name cannot contain spaces or other special characters."));
+  $element_names = explode("\n", $form_state['values']['honeypot_element_name']);
+  foreach ($element_names as $name) {
+    if (!preg_match("/^[-_a-zA-Z0-9]+$/", trim($name))) {
+      form_set_error('honeypot_element_name', t("The element name cannot contain spaces or other special characters."));
+    }
   }
 
   // Make sure Honeypot element name isn't one of the reserved names.
diff --git a/honeypot.module b/honeypot.module
index e0b7599..6750aa0 100755
--- a/honeypot.module
+++ b/honeypot.module
@@ -190,12 +190,65 @@ function honeypot_add_form_protection(&$form, &$form_state, $options = array())
   // Build the honeypot element.
   if (in_array('honeypot', $options)) {
     // Get the element name (default is generic 'url').
-    $honeypot_element = variable_get('honeypot_element_name', 'url');
+    $honeypot_elements = explode("\n", variable_get('honeypot_element_name', 'url'));
+
+    //if there's more than one element name option, randomize the name
+    if (count($honeypot_elements) > 1) {
+      $rand = rand(0, count($honeypot_elements) - 1);
+      $honeypot_element = trim($honeypot_elements[$rand]);
+    }
+    else {
+      $honeypot_element = trim($honeypot_elements[0]);
+    }
+
+    //Get the element description
+    $honeypot_descriptions = explode("\n", variable_get('honeypot_element_description', 'Please leave this field blank.'));
+
+    //if there's more than one description, randomize the description
+    if (count($honeypot_descriptions) > 1) {
+      $rand = rand(0, count($honeypot_descriptions) - 1);
+      $honeypot_description = trim($honeypot_descriptions[$rand]);
+    }
+    else {
+      $honeypot_description = trim($honeypot_descriptions[0]);
+    }
+
+    //Try to randomize element placement
+    if (variable_get('honeypot_element_randomize_placement', 0)) {
+      $weights = array(0);
+      $form_children = element_children($form);
+      foreach ($form_children as $key) {
+        $child_el = $form[$key];
+        //only get weights of displayed elements
+        if (!isset($child_el['$access']) || (isset($child_el['#access']) && $child_el['#access'] != FALSE)) {
+          $weight = 0;
+          if (isset($child_el['#weight'])) {
+            $weight = $child_el['#weight'];
+          }
+          //add unique weights to array
+          $weights[$weight] = $weight;
+        }
+      }
+      $weight_max = max($weights) + 1;
+      $weight_min = min($weights) - 1;
+      $element_weight = rand($weight_min, $weight_max);
+    }
+    else {
+      $element_weight = 100;
+    }
+
+    $element_classes = array();
+    //Add required class to form element to try to fool spam bots
+    if(variable_get('honeypot_element_add_required_class', 0)) {
+      $element_classes = array('required');
+    }
 
     // Add 'autocomplete="off"' if configured.
-    $attributes = array();
+    $attributes = array(
+      'class' => $element_classes,
+    );
     if (variable_get('honeypot_autocomplete_attribute', 1)) {
-      $attributes = array('autocomplete' => 'off');
+      $attributes['autocomplete'] = 'off';
     }
 
     // Get the path to the honeypot css file.
@@ -205,9 +258,10 @@ function honeypot_add_form_protection(&$form, &$form_state, $options = array())
     $honeypot_class = $honeypot_element . '-textfield';
     $form[$honeypot_element] = array(
       '#type' => 'textfield',
-      '#title' => t('Leave this field blank'),
+      '#title' => $honeypot_description,
+      '#description' => $honeypot_description,
       '#size' => 20,
-      '#weight' => 100,
+      '#weight' => $element_weight,
       '#attributes' => $attributes,
       '#element_validate' => array('_honeypot_honeypot_validate'),
       '#prefix' => '<div class="' . $honeypot_class . '">',
@@ -417,7 +471,14 @@ function honeypot_create_css($element_name) {
   }
   else {
     $filename = $path . '/honeypot.css';
-    $data = '.' . $element_name . '-textfield { display: none !important; }';
+
+    // Split multiple elements.
+    $honeypot_elements = preg_split('/[\r\n]+/', $element_name);
+    // Create class names.
+    array_walk($honeypot_elements, function(&$value, $key) {$value = ".$value-textfield";});
+    $honeypot_elements = implode(",\n", $honeypot_elements);
+
+    $data = $honeypot_elements . ' { display: none !important; }';
     file_unmanaged_save_data($data, $filename, FILE_EXISTS_REPLACE);
   }
 }
