diff --git a/mupload.module b/mupload.module
index 324722c..1cf0635 100644
--- a/mupload.module
+++ b/mupload.module
@@ -240,6 +240,31 @@ function mupload_field_widget_process($element, &$form_state, &$form) {
  * wrapper around the entire group so it can be replaced all at once.
  */
 function mupload_field_widget_process_multiple($element, &$form_state, $form) {
+  $element_children = element_children($element, TRUE);
+  $count = count($element_children);
+
+  foreach ($element_children as $delta => $key) {
+    if ($key != $element['#file_upload_delta']) {
+      $description = _file_field_get_description_from_element($element[$key]);
+      $element[$key]['_weight'] = array(
+        '#type' => 'weight',
+        '#title' => $description ? t('Weight for @title', array('@title' => $description)) : t('Weight for new file'),
+        '#title_display' => 'invisible',
+        '#delta' => $count,
+        '#default_value' => $delta,
+      );
+    }
+    else {
+      // The title needs to be assigned to the upload field so that validation
+      // errors include the correct widget label.
+      $element[$key]['#title'] = $element['#title'];
+      $element[$key]['_weight'] = array(
+        '#type' => 'hidden',
+        '#default_value' => $delta,
+      );
+    }
+  }
+
   // Add a new wrapper around all the elements for AJAX replacement.
   $element['#prefix'] = '<div id="' . $element['#id'] . '-ajax-wrapper">';
   $element['#suffix'] = '</div>';
@@ -352,6 +377,8 @@ function mupload_managed_file_save_upload($element, $input, $form_state) {
 
   $files = plupload_element_value($element, $input, $form_state);
 
+  //get last weight
+  $weight = !empty($form_state['values'][$element['#field_name']][LANGUAGE_NONE]) ? count($form_state['values'][$element['#field_name']][LANGUAGE_NONE])  : 0 ;
   $return = array();
   foreach($files as $file_number => $file_info) {
     $destination = isset($element['#upload_location']) ? $element['#upload_location'] : NULL;
@@ -370,7 +397,9 @@ function mupload_managed_file_save_upload($element, $input, $form_state) {
       continue;
     }
 
+    $file->_weight = $weight;
     $return[] = $file;
+    $weight++;
   }
   return $return;
 }
