diff --git a/src/nautilus-places-sidebar.c b/src/nautilus-places-sidebar.c
index 49ff2ef..2ef5bd6 100644
--- a/src/nautilus-places-sidebar.c
+++ b/src/nautilus-places-sidebar.c
@@ -114,10 +114,10 @@ enum {
 	PLACES_SIDEBAR_COLUMN_ICON,
 	PLACES_SIDEBAR_COLUMN_INDEX,
 	PLACES_SIDEBAR_COLUMN_EJECT,
-	PLACES_SIDEBAR_COLUMN_NO_EJECT,
-	PLACES_SIDEBAR_COLUMN_BOOKMARK,
-	PLACES_SIDEBAR_COLUMN_NO_BOOKMARK,
+	PLACES_SIDEBAR_COLUMN_UNMOUNTING,
+	PLACES_SIDEBAR_COLUMN_EDITABLE,
 	PLACES_SIDEBAR_COLUMN_TOOLTIP,
+	PLACES_SIDEBAR_COLUMN_SPINNER,
 	
 	PLACES_SIDEBAR_COLUMN_COUNT
 };
@@ -249,10 +249,10 @@ add_place (NautilusPlacesSidebar *sidebar,
 			    PLACES_SIDEBAR_COLUMN_ROW_TYPE, place_type,
 			    PLACES_SIDEBAR_COLUMN_INDEX, index,
 			    PLACES_SIDEBAR_COLUMN_EJECT, show_eject_button,
-			    PLACES_SIDEBAR_COLUMN_NO_EJECT, !show_eject_button,
-			    PLACES_SIDEBAR_COLUMN_BOOKMARK, place_type != PLACES_BOOKMARK,
-			    PLACES_SIDEBAR_COLUMN_NO_BOOKMARK, place_type == PLACES_BOOKMARK,
+			    PLACES_SIDEBAR_COLUMN_UNMOUNTING, FALSE,
+			    PLACES_SIDEBAR_COLUMN_EDITABLE, place_type == PLACES_BOOKMARK,
 			    PLACES_SIDEBAR_COLUMN_TOOLTIP, tooltip,
+			    PLACES_SIDEBAR_COLUMN_SPINNER, 0,
 			    -1);
 
 	if (pixbuf != NULL) {
@@ -1293,6 +1293,48 @@ drag_drop_callback (GtkTreeView *tree_view,
 	return retval;
 }
 
+static gboolean
+spin_timeout (gpointer *data)
+{
+	GtkListStore *store;
+	GtkTreeIter   iter;
+	gboolean      valid;
+	gboolean      ret;
+	
+	if (!NAUTILUS_IS_PLACES_SIDEBAR (data)) {
+		return FALSE;
+	}
+
+	ret = FALSE;
+
+	NautilusPlacesSidebar *sidebar;
+	sidebar = NAUTILUS_PLACES_SIDEBAR (data);
+
+	store = sidebar->store;
+ 
+	/* Get first row in list store */
+	valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter);
+ 
+	while (valid) {
+		gboolean active;
+		gint spin;
+
+		gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
+				    PLACES_SIDEBAR_COLUMN_UNMOUNTING, &active,
+				    PLACES_SIDEBAR_COLUMN_SPINNER, &spin,
+				    -1);
+		if (active) {
+			gtk_list_store_set (store, &iter, PLACES_SIDEBAR_COLUMN_SPINNER, spin + 1, -1);
+			ret = TRUE;
+		}		
+
+		/* Make iter point to the next row in the list store */
+		valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(store), &iter);
+	}
+
+	return ret;
+}
+
 /* Callback used when the file list's popup menu is detached */
 static void
 bookmarks_popup_menu_detach_cb (GtkWidget *attach_widget,
@@ -1612,6 +1654,14 @@ open_selected_bookmark (NautilusPlacesSidebar *sidebar,
 
 			sidebar->go_to_after_mount_flags = flags;
 
+			gtk_tree_model_get_iter (GTK_TREE_MODEL (sidebar->store), &iter, path);
+			gtk_list_store_set (sidebar->store, &iter,
+					    PLACES_SIDEBAR_COLUMN_UNMOUNTING, TRUE,
+					    PLACES_SIDEBAR_COLUMN_EJECT, FALSE,
+					    -1);
+
+			g_timeout_add (80, (GSourceFunc)spin_timeout, sidebar);
+
 			nautilus_file_operations_mount_volume_full (NULL, volume, FALSE,
 								    volume_mounted_cb,
 								    G_OBJECT (sidebar));
@@ -1681,7 +1731,7 @@ rename_selected_bookmark (NautilusPlacesSidebar *sidebar)
 		path = gtk_tree_model_get_path (GTK_TREE_MODEL (sidebar->store), &iter);
 		column = gtk_tree_view_get_column (GTK_TREE_VIEW (sidebar->tree_view), 0);
 		renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
-		cell = g_list_nth_data (renderers, 3);
+		cell = g_list_nth_data (renderers, 1);
 		g_list_free (renderers);
 		g_object_set (cell, "editable", TRUE, NULL);
 		gtk_tree_view_set_cursor_on_cell (GTK_TREE_VIEW (sidebar->tree_view),
@@ -1970,6 +2020,14 @@ eject_or_unmount_bookmark (NautilusPlacesSidebar *sidebar,
 		do_eject (mount, volume, drive, sidebar);
 		ret = TRUE;
 	} else if (can_unmount) {
+		gtk_tree_model_get_iter (GTK_TREE_MODEL (sidebar->store), &iter, path);
+		gtk_list_store_set (sidebar->store, &iter,
+				    PLACES_SIDEBAR_COLUMN_UNMOUNTING, TRUE,
+				    PLACES_SIDEBAR_COLUMN_EJECT, FALSE,
+				    -1);
+
+		g_timeout_add (80, (GSourceFunc)spin_timeout, sidebar);
+
 		do_unmount (mount, sidebar);
 		ret = TRUE;
 	}
@@ -2516,21 +2574,29 @@ nautilus_places_sidebar_init (NautilusPlacesSidebar *sidebar)
 	cell = gtk_cell_renderer_text_new ();
 	sidebar->eject_text_cell_renderer = cell;
 	gtk_tree_view_column_pack_start (col, cell, TRUE);
+	g_object_set (G_OBJECT (cell), "editable", FALSE, NULL);
 	gtk_tree_view_column_set_attributes (col, cell,
 					     "text", PLACES_SIDEBAR_COLUMN_NAME,
-					     "visible", PLACES_SIDEBAR_COLUMN_EJECT,
+					     //"visible", PLACES_SIDEBAR_COLUMN_NO_EJECT,
+					     "editable-set", PLACES_SIDEBAR_COLUMN_EDITABLE,
 					     NULL);
 	g_object_set (cell,
 		      "ellipsize", PANGO_ELLIPSIZE_END,
 		      "ellipsize-set", TRUE,
 		      NULL);
 
+	g_signal_connect (cell, "edited", 
+			  G_CALLBACK (bookmarks_edited), sidebar);
+	g_signal_connect (cell, "editing-canceled", 
+			  G_CALLBACK (bookmarks_editing_canceled), sidebar);
+
 
 	cell = gtk_cell_renderer_pixbuf_new ();
 	g_object_set (cell,
 		      "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE,
 		      "icon-name", "media-eject",
 		      "stock-size", GTK_ICON_SIZE_MENU,
+		      "follow-state", TRUE, //wait for gtk patch
 		      "xpad", EJECT_BUTTON_XPAD,
 		      NULL);
 	gtk_tree_view_column_pack_start (col, cell, FALSE);
@@ -2538,23 +2604,14 @@ nautilus_places_sidebar_init (NautilusPlacesSidebar *sidebar)
 					     "visible", PLACES_SIDEBAR_COLUMN_EJECT,
 					     NULL);
 
-	cell = gtk_cell_renderer_text_new ();
-	gtk_tree_view_column_pack_start (col, cell, TRUE);
-	g_object_set (G_OBJECT (cell), "editable", FALSE, NULL);
+	cell = gtk_cell_renderer_spinner_new ();
+
+	gtk_tree_view_column_pack_start (col, cell, FALSE);
 	gtk_tree_view_column_set_attributes (col, cell,
-					     "text", PLACES_SIDEBAR_COLUMN_NAME,
-					     "visible", PLACES_SIDEBAR_COLUMN_NO_EJECT,
-					     "editable-set", PLACES_SIDEBAR_COLUMN_BOOKMARK,
+					     "active", PLACES_SIDEBAR_COLUMN_UNMOUNTING,
+					     "visible", PLACES_SIDEBAR_COLUMN_UNMOUNTING,
+					     "pulse", PLACES_SIDEBAR_COLUMN_SPINNER,
 					     NULL);
-	g_object_set (cell,
-		      "ellipsize", PANGO_ELLIPSIZE_END,
-		      "ellipsize-set", TRUE,
-		      NULL);
-
-	g_signal_connect (cell, "edited", 
-			  G_CALLBACK (bookmarks_edited), sidebar);
-	g_signal_connect (cell, "editing-canceled", 
-			  G_CALLBACK (bookmarks_editing_canceled), sidebar);
 
 	gtk_tree_view_set_row_separator_func (tree_view,
 					      nautilus_shortcuts_row_separator_func,
@@ -2577,8 +2634,8 @@ nautilus_places_sidebar_init (NautilusPlacesSidebar *sidebar)
 					     G_TYPE_BOOLEAN,
 					     G_TYPE_BOOLEAN,
 					     G_TYPE_BOOLEAN,
-					     G_TYPE_BOOLEAN,
-					     G_TYPE_STRING
+					     G_TYPE_STRING,
+					     G_TYPE_INT
 					     );
 
 	gtk_tree_view_set_tooltip_column (tree_view, PLACES_SIDEBAR_COLUMN_TOOLTIP);
