diff --git a/data/ui/import-dialog.ui b/data/ui/import-dialog.ui
index 0f1bf58..ed9eb34 100644
--- a/data/ui/import-dialog.ui
+++ b/data/ui/import-dialog.ui
@@ -96,6 +96,79 @@
             <property name="height">1</property>
           </packing>
         </child>
+        <child>
+          <object class="GtkInfoBar" id="removed-files-info-bar">
+            <property name="can_focus">False</property>
+            <property name="no_show_all">True</property>
+            <child internal-child="content_area">
+              <object class="GtkBox" id="infobar-content-area">
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkLabel" id="remove-file-label">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">This folder contains songs that have been deleted from the library.</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="show-removed-files-label">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Show removed files:</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child internal-child="action_area">
+              <object class="GtkButtonBox" id="infobar-action-area">
+                <property name="can_focus">False</property>
+                <child>
+                  <object class="GtkSwitch" id="show-removed-files-switch">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">1</property>
+            <property name="width">6</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <placeholder/>
+        </child>
       </object>
       <packing>
         <property name="left_attach">0</property>
diff --git a/sources/rb-library-source.c b/sources/rb-library-source.c
index 061b4bd..145eadb 100644
--- a/sources/rb-library-source.c
+++ b/sources/rb-library-source.c
@@ -73,6 +73,17 @@
 #define SOURCE_PAGE		0
 #define IMPORT_DIALOG_PAGE	1
 
+/* excluded entries type */
+typedef struct _RhythmDBEntryType RBLibrarySourceExcludedType;
+typedef struct _RhythmDBEntryTypeClass RBLibrarySourceExcludedTypeClass;
+
+static void rb_library_source_excluded_type_class_init (RBLibrarySourceExcludedTypeClass *klass);
+static void rb_library_source_excluded_type_init (RBLibrarySourceExcludedType *etype);
+GType rb_library_source_excluded_type_get_type (void);
+
+G_DEFINE_TYPE (RBLibrarySourceExcludedType, rb_library_source_excluded_type, RHYTHMDB_TYPE_ENTRY_TYPE);
+
+
 static void rb_library_source_class_init (RBLibrarySourceClass *klass);
 static void rb_library_source_init (RBLibrarySource *source);
 static void rb_library_source_constructed (GObject *object);
@@ -94,6 +105,7 @@ static void impl_add_uri (RBSource *source,
 			  RBSourceAddCallback callback,
 			  gpointer data,
 			  GDestroyNotify destroy_data);
+static void impl_delete (RBSource *source);
 static void impl_pack_content (RBBrowserSource *source, GtkWidget *content);
 
 static void library_settings_changed_cb (GSettings *settings, const char *key, RBLibrarySource *source);
@@ -116,6 +128,7 @@ static void rb_library_source_install_plugins_cb (GtkWidget *widget,
 static void update_layout_example_label (RBLibrarySource *source);
 static RhythmDBImportJob *maybe_create_import_job (RBLibrarySource *source);
 
+
 typedef struct {
 	char *title;
 	char *path;
@@ -205,6 +218,7 @@ rb_library_source_class_init (RBLibrarySourceClass *klass)
 	source_class->impl_paste = impl_paste;
 	source_class->impl_want_uri = impl_want_uri;
 	source_class->impl_add_uri = impl_add_uri;
+	source_class->impl_delete = impl_delete;
 
 	browser_source_class->has_drop_support = (RBBrowserSourceFeatureFunc) rb_true_function;
 	browser_source_class->pack_content = impl_pack_content;
@@ -398,10 +412,24 @@ RBSource *
 rb_library_source_new (RBShell *shell)
 {
 	RBSource *source;
+	RhythmDB *db;
+	RhythmDBEntryType *excluded_type;
 	GdkPixbuf *icon;
 	GSettings *settings;
 	gint size;
 
+	g_object_get (shell, "db", &db, NULL);
+
+	excluded_type = rhythmdb_entry_type_get_by_name (db, "excluded");
+	if (excluded_type == NULL) {
+		excluded_type = g_object_new (rb_library_source_excluded_type_get_type (),
+					      "db", db,
+					      "name", "excluded",
+					      "save-to-disk", TRUE,
+					      NULL); 
+		rhythmdb_register_entry_type (db, excluded_type);
+	}
+
 	gtk_icon_size_lookup (RB_SOURCE_ICON_SIZE, &size, NULL);
 	icon = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
 					 "audio-x-generic",
@@ -424,6 +452,8 @@ rb_library_source_new (RBShell *shell)
 
 	rb_shell_register_entry_type_for_source (shell, source, RHYTHMDB_ENTRY_TYPE_SONG);
 
+	g_object_unref (db);
+
 	return source;
 }
 
@@ -1942,6 +1972,32 @@ impl_get_status (RBDisplayPage *source, char **text, char **progress_text, float
 }
 
 static void
+impl_delete (RBSource *asource)
+{
+	RBLibrarySource *source = RB_LIBRARY_SOURCE (asource);
+	RBEntryView *songs;
+	GList *sel, *tem;
+	RhythmDBEntryType *excluded_type;
+	GValue v = {0};
+
+	songs = rb_source_get_entry_view (RB_SOURCE (source));
+	excluded_type = rhythmdb_entry_type_get_by_name (source->priv->db, "excluded");	
+	g_value_init (&v, RHYTHMDB_TYPE_ENTRY_TYPE);
+	g_value_set_object (&v, excluded_type);
+
+	sel = rb_entry_view_get_selected_entries (songs);
+	for (tem = sel; tem != NULL; tem = tem->next) {
+		rhythmdb_entry_set (source->priv->db,
+	 			    tem->data,
+	 			    RHYTHMDB_PROP_TYPE,
+	 			    &v);
+		rhythmdb_commit (source->priv->db);
+	}
+	g_list_foreach (sel, (GFunc)rhythmdb_entry_unref, NULL);
+	g_value_unset (&v);
+}
+
+static void
 import_dialog_closed_cb (RBImportDialog *dialog, RBLibrarySource *source)
 {
 	gtk_notebook_set_current_page (GTK_NOTEBOOK (source->priv->notebook), 0);
@@ -1985,3 +2041,16 @@ rb_library_source_show_import_dialog (RBLibrarySource *source)
 		rb_display_page_notify_status_changed (RB_DISPLAY_PAGE (source));
 	}
 }
+
+/* library excluded entry type class implementation */
+
+static void
+rb_library_source_excluded_type_class_init (RBLibrarySourceExcludedTypeClass *klass)
+{
+}
+
+static void
+rb_library_source_excluded_type_init (RBLibrarySourceExcludedType *etype)
+{
+}
+
diff --git a/widgets/rb-import-dialog.c b/widgets/rb-import-dialog.c
index 9fe7f98..8c42488 100644
--- a/widgets/rb-import-dialog.c
+++ b/widgets/rb-import-dialog.c
@@ -41,6 +41,7 @@
 #include "rhythmdb-entry-type.h"
 #include "rb-device-source.h"
 #include "rb-file-helpers.h"
+#include "rhythmdb-query-result-list.h"
 
 /* normal entries */
 typedef struct _RhythmDBEntryType RBImportDialogEntryType;
@@ -66,6 +67,10 @@ G_DEFINE_TYPE (RBImportDialogIgnoreType, rb_import_dialog_ignore_type, RHYTHMDB_
 static void rb_import_dialog_class_init (RBImportDialogClass *klass);
 static void rb_import_dialog_init (RBImportDialog *dialog);
 
+static void update_removed_files_info_bar_visibility (RBImportDialog *dialog);
+static uint count_excluded_entries_in_dir (const char *uri, RhythmDB *db);
+static void rb_import_dialog_reset_model (RBImportDialog *dialog);
+
 enum {
 	PROP_0,
 	PROP_SHELL,
@@ -94,6 +99,9 @@ struct RBImportDialogPrivate
 	GtkWidget *add_button;
 	GtkWidget *copy_button;
 	GtkWidget *remove_button;
+	GtkWidget *removed_files_info_bar;
+	GtkWidget *removed_files_label;
+	GtkWidget *show_removed_files_switch;
 
 	RhythmDBEntryType *entry_type;
 	RhythmDBEntryType *ignore_type;
@@ -343,6 +351,13 @@ close_clicked_cb (GtkButton *button, RBImportDialog *dialog)
 }
 
 static void
+removed_files_switched_cb (GtkSwitch *sw, GParamSpec *pspec, RBImportDialog *dialog)
+{
+	rb_import_dialog_reset_model (dialog);
+}
+
+
+static void
 import_status_changed_cb (RhythmDBImportJob *job, int total, int imported, RBImportDialog *dialog)
 {
 	if (dialog->priv->pulse_id == 0) {
@@ -516,6 +531,59 @@ current_folder_changed_cb (GtkFileChooser *chooser, RBImportDialog *dialog)
 	} else {
 		start_scanning (dialog);
 	}
+	update_removed_files_info_bar_visibility (dialog);
+	rb_import_dialog_reset_model (dialog);
+}
+
+static void
+update_removed_files_info_bar_visibility (RBImportDialog *dialog) {
+	GtkWidget *removed_files_info_bar = dialog->priv->removed_files_info_bar;
+	uint number_of_entries;
+	
+	number_of_entries = count_excluded_entries_in_dir (dialog->priv->current_uri,
+													   dialog->priv->db);
+	if (number_of_entries > 0) {
+		char *item_text = g_strdup_printf (_("This folder contains %d songs that have been deleted from the library."),
+										   number_of_entries);
+		GtkLabel *removed_files_label = GTK_LABEL (dialog->priv->removed_files_label);
+		gtk_label_set_text (removed_files_label, item_text);
+		gtk_widget_set_visible (removed_files_info_bar, TRUE);
+	} else {
+		gtk_widget_set_visible (removed_files_info_bar, FALSE);
+	}
+}
+
+static uint
+count_excluded_entries_in_dir (const char *uri, RhythmDB *db) {
+	RhythmDBEntryType *excluded_type;
+	RhythmDBQuery *query;
+	RhythmDBQueryResultList *excluded_entries;
+	GList *results;
+	uint ret_val = 0;
+
+	excluded_type = rhythmdb_entry_type_get_by_name (db, "excluded");
+	if (excluded_type == NULL) {
+		/* no type defined, just return 0 */
+		return 0;
+	}
+	query = rhythmdb_query_parse (db,
+					  RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TYPE, excluded_type,
+					  RHYTHMDB_QUERY_PROP_LIKE, RHYTHMDB_PROP_LOCATION, uri,
+					  RHYTHMDB_QUERY_END);
+
+	excluded_entries = rhythmdb_query_result_list_new ();
+	rhythmdb_do_full_query_parsed (db, RHYTHMDB_QUERY_RESULTS (excluded_entries), query);
+	rhythmdb_query_free (query);
+
+	results = rhythmdb_query_result_list_get_results (excluded_entries);
+	if (results != NULL) {
+		ret_val = g_list_length (results);
+	}
+
+	g_object_unref (results); 
+	g_object_unref (excluded_entries); 
+	return ret_val;
+	 
 }
 
 static void
@@ -549,10 +617,42 @@ have_selection_changed_cb (RBEntryView *view, gboolean have_selection, RBImportD
 }
 
 static void
+rb_import_dialog_reset_model (RBImportDialog *dialog) {
+	RhythmDBQuery *query;
+	RhythmDBEntryType *excluded_type; 
+	if (dialog->priv->query_model != NULL) {
+		g_object_unref (dialog->priv->query_model);
+		dialog->priv->query_model = NULL;
+	}
+
+	excluded_type = rhythmdb_entry_type_get_by_name (dialog->priv->db, "excluded");
+	dialog->priv->query_model = rhythmdb_query_model_new_empty (dialog->priv->db);
+	rb_entry_view_set_model (dialog->priv->entry_view, dialog->priv->query_model);
+		
+	if (excluded_type != NULL &&
+		gtk_switch_get_active (GTK_SWITCH (dialog->priv->show_removed_files_switch))) {
+		query = rhythmdb_query_parse (dialog->priv->db,
+							  RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TYPE, dialog->priv->entry_type,
+							  RHYTHMDB_QUERY_DISJUNCTION,
+							  RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TYPE, excluded_type,
+							  RHYTHMDB_QUERY_PROP_LIKE, RHYTHMDB_PROP_LOCATION, dialog->priv->current_uri,
+							  RHYTHMDB_QUERY_END);
+	} else { 
+		query = rhythmdb_query_parse (dialog->priv->db,
+							  RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TYPE, dialog->priv->entry_type,
+							  RHYTHMDB_QUERY_END);
+	}	
+	rhythmdb_do_full_query_async_parsed (dialog->priv->db, RHYTHMDB_QUERY_RESULTS (dialog->priv->query_model), query);
+	rhythmdb_query_free (query);
+
+	g_signal_connect (dialog->priv->query_model, "post-entry-delete", G_CALLBACK (entry_deleted_cb), dialog);
+	g_signal_connect (dialog->priv->query_model, "row-inserted", G_CALLBACK (entry_inserted_cb), dialog);
+}
+
+static void
 impl_constructed (GObject *object)
 {
 	RBImportDialog *dialog;
-	RhythmDBQuery *query;
 	GtkBuilder *builder;
 	GSettings *settings;
 	char **locations;
@@ -592,6 +692,14 @@ impl_constructed (GObject *object)
 	g_signal_connect_object (dialog->priv->remove_button, "clicked", G_CALLBACK (remove_clicked_cb), dialog, 0);
 	gtk_widget_set_sensitive (dialog->priv->remove_button, FALSE);
 
+	dialog->priv->removed_files_info_bar = GTK_WIDGET (gtk_builder_get_object (builder, "removed-files-info-bar"));
+
+	dialog->priv->removed_files_label = GTK_WIDGET (gtk_builder_get_object (builder, "remove-file-label"));
+
+	dialog->priv->show_removed_files_switch = GTK_WIDGET (gtk_builder_get_object (builder, "show-removed-files-switch"));
+	g_signal_connect_object (dialog->priv->show_removed_files_switch, "notify::active",
+							 G_CALLBACK (removed_files_switched_cb), dialog, 0);
+
 	g_signal_connect (gtk_builder_get_object (builder, "close-button"),
 			  "clicked",
 			  G_CALLBACK (close_clicked_cb),
@@ -652,16 +760,8 @@ impl_constructed (GObject *object)
 	gtk_container_add (GTK_CONTAINER (gtk_builder_get_object (builder, "entry-view-container")),
 			   GTK_WIDGET (dialog->priv->entry_view));
 
-	dialog->priv->query_model = rhythmdb_query_model_new_empty (dialog->priv->db);
-	rb_entry_view_set_model (dialog->priv->entry_view, dialog->priv->query_model);
-	query = rhythmdb_query_parse (dialog->priv->db,
-				      RHYTHMDB_QUERY_PROP_EQUALS, RHYTHMDB_PROP_TYPE, dialog->priv->entry_type,
-				      RHYTHMDB_QUERY_END);
-	rhythmdb_do_full_query_async_parsed (dialog->priv->db, RHYTHMDB_QUERY_RESULTS (dialog->priv->query_model), query);
-	rhythmdb_query_free (query);
-
-	g_signal_connect (dialog->priv->query_model, "post-entry-delete", G_CALLBACK (entry_deleted_cb), dialog);
-	g_signal_connect (dialog->priv->query_model, "row-inserted", G_CALLBACK (entry_inserted_cb), dialog);
+	update_removed_files_info_bar_visibility (dialog);
+	rb_import_dialog_reset_model (dialog);	
 
 	gtk_container_add (GTK_CONTAINER (dialog), GTK_WIDGET (gtk_builder_get_object (builder, "import-dialog")));
 
