diff --git a/multiselect.module b/multiselect.module
index 8966df0..d5d04cd 100644
--- a/multiselect.module
+++ b/multiselect.module
@@ -202,8 +202,8 @@ function _multiselect_build_widget_code($options, $items, $element, $required =
   }
 
   // Set up useful variables.
-  $selfield = $element['#field_name'] . "_sel";
-  $unselfield = $element['#field_name'] . "_unsel";
+  $selfield = $element['#id'] . "_sel";
+  $unselfield = $element['#id'] . "_unsel";
 
   // Call methods to create prefix. (ie the non-selected table, etc)
   $prefix_pre = '<div class="form-item multiselect"><label for="edit-title">' . t($element['#title']) . ':';
@@ -220,12 +220,12 @@ function _multiselect_build_widget_code($options, $items, $element, $required =
   else {
     $size = '10'; // Default size.
   }
-  $prefix_pre .= "<select name=\"" . $unselfield . "\" multiple=\"multiple\" class=\"form-multiselect " . $unselfield . " multiselect_unsel\" id=\"" . $element['#field_name'] . "\" size=\"" . $size . "\">\n";
+  $prefix_pre .= "<select name=\"" . $unselfield . "\" multiple=\"multiple\" class=\"form-multiselect " . $unselfield . " multiselect_unsel\" id=\"" . $element['#id'] . "\" size=\"" . $size . "\">\n";
   $prefix_options = _multiselect_html_for_box_options($unselected_options);
   $prefix_post = "</select>\n</div>\n";
   $prefix_post .= "<ul id=\"multiselect_btns" . "_" . $element['#field_name'] . "\" class=\"multiselect_btns\">
-<li class=\"multiselect_add\" id=\"" . $element['#field_name'] . "\"><a href=\"javascript:;\">Add</a></li>
-<li class=\"multiselect_remove\" id=\"" . $element['#field_name'] . "\"><a href=\"javascript:;\">Remove</a></li>
+<li class=\"multiselect_add\" id=\"" . $element['#id'] . "\"><a href=\"javascript:;\">Add</a></li>
+<li class=\"multiselect_remove\" id=\"" . $element['#id'] . "\"><a href=\"javascript:;\">Remove</a></li>
 </ul>";
 
   $widget['selected_options'] = $selected_options;
@@ -299,7 +299,11 @@ function theme_multiselect($variables) {
   // Add a couple of things into the attributes.
   $element['#attributes']['class'][] = $widget['selfield'];
   $element['#attributes']['class'][] = "multiselect_sel";
-  $element['#attributes']['id'] = $element['#field_name'];
+//  $element['#attributes']['id'] = $element['#field_name'];
+
+  if (isset($element['#attributes']['required']) && !$element['#attributes']['required']) {
+    unset($element['#attributes']['required']);
+  }
 
   return $widget['prefix_pre'] . $widget['prefix_options'] . $widget['prefix_post'] . '<div class="form-item form-type-select"><select' . drupal_attributes($element['#attributes']) . '>' . _multiselect_html_for_box_options($widget['selected_options']) . '</select></div>' . "\n</div>\n";
 }
@@ -311,4 +315,4 @@ function form_type_multiselect_value($element, $edit = FALSE) {
   if (func_num_args() == 1) {
     return $element['#default_value'];
   }
-}
\ No newline at end of file
+}
