diff --git a/multiselect.css b/multiselect.css
index 426815f..9ffa465 100644
--- a/multiselect.css
+++ b/multiselect.css
@@ -1,3 +1,30 @@
+form .multiselect {
+    display: flex;
+    flex-direction: column;
+    width: 640px;
+}
+form .multiselect .multiselect_labels,
+form .multiselect .multiselect-selector {
+    display: flex;
+    flex-direction: row;
+}
+form .multiselect .multiselect_labels > div {
+    flex-basis: 50%;
+}
+form .multiselect .multiselect-selector > div {
+    flex-basis: 35%;
+}
+form .multiselect .multiselect-selector > ul {
+    flex-basis: 15%;
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+    list-style: none;
+    padding: 0;
+    margin: 0;
+}
+
 select.multiselect_unsel {
   width: 250px;
 }
@@ -8,14 +35,6 @@ select.multiselect_sel {
 .multiselect_labels {
 	font-weight: bold;
 	color: #999;
-	width: 575px;
-}
-.multiselect_labels .label_unselected {
-	float: left;
-}
-.multiselect_labels .label_selected {
-	float: right;
-	margin-right: 145px;
 }
 td .multiselect_labels .label_selected { /* Fix for field collection display */
   float: none;
@@ -42,36 +61,38 @@ select.form-multiselect:focus {
   border-color: #ace;
 }
 /* BUTTONS */
-ul.multiselect_btns {
-  list-style: none;
-  margin: 10px 10px 0px 20px;
-	padding: 0px;
-	float: left;
-}
-li.multiselect_add, li.multiselect_remove {
-	background: none;
-  height: 38px;
-  overflow: hidden;
+li.multiselect_add,
+li.multiselect_remove,
+li.multiselect_move_up,
+li.multiselect_move_down {
+    background: none;
+    height: 38px;
+    overflow: hidden;
 	width: 33px;
 	margin: 0px;
 	padding: 0px;
+    margin-bottom: 15px;
 }
-li.multiselect_add {
-	margin-bottom: 15px;
+.multiselect_add a,
+.multiselect_remove a,
+.multiselect_move_up a,
+.multiselect_move_down a {
+    display: block;
+    height: 38px;
+    text-indent: -9999px;
+    background-position: 0 0;
 }
 .multiselect_add a {
-  display: block;
-  height: 38px;
-  text-indent: -9999px;
   background: url(images/add.png) no-repeat;
-  background-position: 0 0;
 }
 .multiselect_remove a {
-  display: block;
-  height: 38px;
-  text-indent: -9999px;
   background: url(images/remove.png) no-repeat;
-  background-position: 0 0;
+}
+.multiselect_move_up a {
+     background: url(images/move_up.png) no-repeat;
+ }
+.multiselect_move_down a {
+    background: url(images/move_down.png) no-repeat;
 }
 .multiselect_add a:hover,
 .multiselect_add a:focus {
diff --git a/multiselect.js b/multiselect.js
index 47ad4f3..4ec9063 100644
--- a/multiselect.js
+++ b/multiselect.js
@@ -45,6 +45,19 @@
         selclass = '.' + this.id + '_sel';
         $(selclass).moveSelectionTo($(unselclass));
       });
+
+      // Moves up selection if move up is clicked to selected box
+      $('li.multiselect_move_up:not(.multiselect-move-up-processed)', context).addClass('multiselect-move-up-processed').click(function() {
+          selclass = '.' + this.id + '_sel';
+          $(selclass).moveUp();
+      });
+
+      // Moves down selection if move down is clicked to selected box
+      $('li.multiselect_move_down:not(.multiselect-move-down-processed)', context).addClass('multiselect-move-down-processed').click(function() {
+          selclass = '.' + this.id + '_sel';
+          $(selclass).moveDown();
+      });
+
       if (typeof Drupal.settings.multiselect !== 'undefined' && Drupal.settings.multiselect.widths != '') {
         var widths = Drupal.settings.multiselect.widths + 'px';
         var label_change_px = Drupal.settings.multiselect.widths - 95; // How much right margin?
@@ -126,4 +139,32 @@ jQuery.fn.removeOption = function() {
       }
     }
   });
+}
+
+// Move up an option
+// usage $('nameofselectbox').moveUp();
+jQuery.fn.moveUp = function() {
+  this.each(function() {
+    for (var x=this.options.length-1;x>=0;x--) {
+      option = this.options[x];
+      if (option.selected) {
+        jQuery(option).insertBefore(jQuery(option).prev());
+        return;
+      }
+    }
+  });
+}
+
+// Move down an option
+// usage $('nameofselectbox').moveDown();
+jQuery.fn.moveDown = function() {
+  this.each(function() {
+    for (var x=this.options.length-1;x>=0;x--) {
+      option = this.options[x];
+      if (option.selected) {
+        jQuery(option).insertAfter(jQuery(option).next());
+        return;
+      }
+    }
+  });
 }
\ No newline at end of file
diff --git a/multiselect.module b/multiselect.module
index 7f9ec52..11cc956 100644
--- a/multiselect.module
+++ b/multiselect.module
@@ -141,7 +141,7 @@ function multiselect_field_widget_form(&$form, &$form_state, $field, $instance,
     //'#options' => $selected_options,
     '#size' => 10,
     '#prefix' => $widget['prefix_pre'] . $widget['prefix_options'] . $widget['prefix_post'],
-    '#suffix' => "\n</div>\n",
+    '#suffix' => $widget['suffix_post'],
     '#attributes' => array('class' => array($widget['selfield'], 'multiselect_sel'), 'id' => array($element['#field_name'])),
     '#default_value' => $default_value,
     '#value_key' => $value_key,
@@ -186,6 +186,7 @@ function _multiselect_after_build($element, $form_state) {
 
   $widget = _multiselect_build_widget_code($element['#options'], $items, $element, $element['#required']);
   $element['#prefix'] = $widget['prefix_pre'] . $widget['prefix_options'] . $widget['prefix_post'];
+  $element['#suffix'] = $widget['suffix_post'];
   return $element;
 }
 
@@ -298,7 +299,7 @@ function _multiselect_build_widget_code($options, $items, $element, $required =
   $prefix_pre .= "</label>\n";
   $prefix_pre .= "<div id=\"multiselect_labels" . "_" . $element['#field_name'] . "\" class=\"multiselect_labels\"><div id=\"label_unselected" . "_" . $element['#field_name'] . "\" class=\"label_unselected\">" . t('Available Options') . ":</div>\n";
   $prefix_pre .= "<div id=\"label_selected" . "_" . $element['#field_name'] . "\" class=\"label_selected\">" . t('Selected Options') . ":</div>\n</div>\n";
-  $prefix_pre .= "<div id=\"multiselect_available" . "_" . $element['#field_name'] . "\" class=\"multiselect_available\">";
+  $prefix_pre .= "<div class=\"multiselect-selector\"><div id=\"multiselect_available" . "_" . $element['#field_name'] . "\" class=\"multiselect_available\">";
   if (array_key_exists('#size', $element)) {
     $size = $element['#size']; // Modules can pass in the size of the select boxes.
   }
@@ -312,6 +313,10 @@ function _multiselect_build_widget_code($options, $items, $element, $required =
 <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>
 </ul>";
+  $suffix_post = "<ul id=\"multiselect_order_btns" . "_" . $element['#field_name'] . "\" class=\"multiselect_btns\">
+<li class=\"multiselect_move_up\" id=\"" . $element['#field_name'] . "\"><a href=\"javascript:;\">Move Up</a></li>
+<li class=\"multiselect_move_down\" id=\"" . $element['#field_name'] . "\"><a href=\"javascript:;\">Move Down</a></li>
+</ul></div></div>";
 
   $widget['selected_options'] = $selected_options;
   $widget['unselected_options'] = $unselected_options;
@@ -320,6 +325,7 @@ function _multiselect_build_widget_code($options, $items, $element, $required =
   $widget['prefix_pre'] = $prefix_pre;
   $widget['prefix_options'] = $prefix_options;
   $widget['prefix_post'] = $prefix_post;
+  $widget['suffix_post'] = $suffix_post;
 
   return $widget;
 }
@@ -380,13 +386,12 @@ function theme_multiselect($variables) {
   $required = $element['#required'];
 
   $widget = _multiselect_build_widget_code($options, $items, $element, $required);
-
   // Add a couple of things into the attributes.
   $element['#attributes']['class'][] = $widget['selfield'];
   $element['#attributes']['class'][] = "multiselect_sel";
   $element['#attributes']['id'] = $element['#field_name'];
 
-  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";
+  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>' . $widget['suffix_post'];
 }
 
 /**I