diff --git a/media.admin.inc b/media.admin.inc
index dbb5d64..f27f560 100644
--- a/media.admin.inc
+++ b/media.admin.inc
@@ -422,20 +422,38 @@ function media_admin_type_manage_form($form, &$form_state, $media_type) {
 
 function media_admin_type_manage_form_submit($form, &$form_state) {
   $media_type = media_type_load($form_state['values']['media_type']);
+  // Reset all values to empty.
+  $media_type->type_callback_args = array();
+
+  // What is the logic of the match (AND / OR).
   if ($form_state['values']['match_type']) {
     $media_type->type_callback_args['match_type'] = $form_state['values']['match_type'];
   }
   else {
     $media_type->type_callback_args['match_type'] = $form_state['values']['match_type_other'];
   }
+
+  // Which streams are valid for this type.
   $media_type->type_callback_args['streams'] = array();
   foreach ($form_state['values']['streams'] as $stream) {
     if ($stream) {
       $media_type->type_callback_args['streams'][] = $stream;
     }
   }
-  $media_type->type_callback_args['mimetypes'] = explode(' ', $form_state['values']['mimetypes']);
-  $media_type->type_callback_args['extensions'] = explode(' ', $form_state['values']['extensions']);
+
+  // Which mimetypes are valid for this type.
+  if (trim($form_state['values']['mimetypes'])) {
+    $media_type->type_callback_args['mimetypes'] = explode(' ', $form_state['values']['mimetypes']);
+    array_walk($media_type->type_callback_args['mimetypes'], 'trim');
+    array_filter($media_type->type_callback_args['mimetypes']);
+  }
+
+  // Which file extensions are valid for this type.
+  if (trim($form_state['values']['extensions'])) {
+    $media_type->type_callback_args['extensions'] = explode(' ', $form_state['values']['extensions']);
+    array_walk($media_type->type_callback_args['extensions'], 'trim');
+    array_filter($media_type->type_callback_args['extensions']);
+  }
 
   media_type_save($media_type);
   drupal_set_message(t('The @label media type has been saved.', array('@label' => $media_type->label)));
