diff -ur nautilus-2.16.3-orig/src/file-manager/fm-directory-view.c nautilus-2.16.3/src/file-manager/fm-directory-view.c
--- nautilus-2.16.3-orig/src/file-manager/fm-directory-view.c	2006-10-31 09:25:05.000000000 +0100
+++ nautilus-2.16.3/src/file-manager/fm-directory-view.c	2007-01-27 14:16:19.000000000 +0100
@@ -7402,10 +7402,14 @@
 
 	/* We don't want both eject and unmount, since eject
 	   unmounts too */
+	/* Oh yes, we do - how else could we unmount a CD-RW
+	   before erasing and/or burning something new onto
+	   it, using only Nautilus? Exactly, we couldn't! */
+	/*
 	if (show_eject) {
 		show_unmount = FALSE;
 	}
-
+	*/
 	action = gtk_action_group_get_action (view->details->dir_action_group,
 					      FM_ACTION_CONNECT_TO_SERVER_LINK);
 	gtk_action_set_visible (action, show_connect);
diff -ur nautilus-2.16.3-orig/src/file-manager/fm-tree-view.c nautilus-2.16.3/src/file-manager/fm-tree-view.c
--- nautilus-2.16.3-orig/src/file-manager/fm-tree-view.c	2006-08-07 12:34:31.000000000 +0200
+++ nautilus-2.16.3/src/file-manager/fm-tree-view.c	2007-01-27 02:21:48.000000000 +0100
@@ -108,6 +108,7 @@
 	GtkWidget *popup_properties;
 	GtkWidget *popup_unmount_separator;
 	GtkWidget *popup_unmount;
+	GtkWidget *popup_eject;
 	NautilusFile *popup_file;
 	
 	guint selection_changed_timer;
@@ -746,16 +747,18 @@
 			unmount_is_eject = eject_for_type (gnome_vfs_volume_get_device_type (volume));
 		} 
 		
-		gtk_label_set_text (GTK_LABEL (GTK_BIN (GTK_MENU_ITEM (view->details->popup_unmount))->child),
-				    unmount_is_eject? _("E_ject"):_("_Unmount Volume"));
-		gtk_label_set_use_underline (GTK_LABEL (GTK_BIN (GTK_MENU_ITEM (view->details->popup_unmount))->child),
-				    TRUE);
 		if (show_unmount) {
 			gtk_widget_show (view->details->popup_unmount_separator);
 			gtk_widget_show (view->details->popup_unmount);
+			if (unmount_is_eject) {
+				gtk_widget_show (view->details->popup_eject);
+			} else {
+				gtk_widget_hide (view->details->popup_eject);
+			}
 		} else {
 			gtk_widget_hide (view->details->popup_unmount_separator);
 			gtk_widget_hide (view->details->popup_unmount);
+			gtk_widget_hide (view->details->popup_eject);
 		}		
 
 		g_object_ref (view);
@@ -1055,15 +1058,8 @@
 				    char *detailed_error,
 				    gpointer data)
 {
-	gboolean eject;
-
-	eject = GPOINTER_TO_INT (data);
 	if (!succeeded) {
-		if (eject) {
-			eel_show_error_dialog_with_details (error, NULL, detailed_error, NULL);
-		} else {
-			eel_show_error_dialog_with_details (error, NULL, detailed_error, NULL);
-		}
+		eel_show_error_dialog_with_details (error, NULL, detailed_error, NULL);
 	}
 }
 
@@ -1082,11 +1078,25 @@
 	volume = fm_tree_model_get_volume_for_root_node_file (view->details->child_model, file);
 	
 	if (volume != NULL) {
-		if (eject_for_type (gnome_vfs_volume_get_device_type (volume))) {
-			gnome_vfs_volume_eject (volume, volume_or_drive_unmounted_callback, GINT_TO_POINTER (TRUE));
-		} else {
-			gnome_vfs_volume_unmount (volume, volume_or_drive_unmounted_callback, GINT_TO_POINTER (FALSE));
-		}
+		gnome_vfs_volume_unmount (volume, volume_or_drive_unmounted_callback, GINT_TO_POINTER (FALSE));
+	}
+}
+
+static void
+fm_tree_view_eject_cb (GtkWidget *menu_item,
+			    FMTreeView *view)
+{
+	NautilusFile *file = view->details->popup_file;
+	GnomeVFSVolume *volume;
+	
+	if (file == NULL) {
+		return;
+	}
+
+	volume = fm_tree_model_get_volume_for_root_node_file (view->details->child_model, file);
+	
+	if (volume != NULL) {
+		gnome_vfs_volume_eject (volume, volume_or_drive_unmounted_callback, GINT_TO_POINTER (TRUE));
 	}
 }
 
@@ -1184,7 +1194,7 @@
 	eel_gtk_menu_append_separator (GTK_MENU (popup));
 
 	/* add the "Unmount" menu item */
-	menu_item = gtk_image_menu_item_new_with_label ("eject label");
+	menu_item = gtk_image_menu_item_new_with_mnemonic (_("_Unmount Volume"));
 	g_signal_connect (menu_item, "activate",
 			  G_CALLBACK (fm_tree_view_unmount_cb),
 			  view);
@@ -1192,6 +1202,15 @@
 	gtk_menu_shell_append (GTK_MENU_SHELL (popup), menu_item);
 	view->details->popup_unmount = menu_item;
 
+	/* add the "Eject" menu item */
+	menu_item = gtk_image_menu_item_new_with_mnemonic (_("_Eject"));
+	g_signal_connect (menu_item, "activate",
+			  G_CALLBACK (fm_tree_view_eject_cb),
+			  view);
+	gtk_widget_show (menu_item);
+	gtk_menu_shell_append (GTK_MENU_SHELL (popup), menu_item);
+	view->details->popup_eject = menu_item;
+
 	/* add the unmount separator menu item */
 	view->details->popup_unmount_separator =
 		GTK_WIDGET (eel_gtk_menu_append_separator (GTK_MENU (popup)));
