diff -ru /tmp/banshee-1-1.6.0/src/Clients/Nereid/Nereid/PlayerInterface.cs src/Clients/Nereid/Nereid/PlayerInterface.cs
--- /tmp/banshee-1-1.6.0/src/Clients/Nereid/Nereid/PlayerInterface.cs	2010-03-21 18:30:41.000000000 -0500
+++ src/Clients/Nereid/Nereid/PlayerInterface.cs	2010-04-29 04:21:20.291421204 -0500
@@ -43,6 +43,7 @@
 using Banshee.Database;
 using Banshee.Collection;
 using Banshee.Collection.Database;
+using Banshee.Library;
 using Banshee.MediaEngine;
 using Banshee.Configuration;
 
@@ -336,6 +337,7 @@
 
             // Service events
             ServiceManager.SourceManager.ActiveSourceChanged += OnActiveSourceChanged;
+            ServiceManager.SourceManager.SourceAdded += OnSourceAdded;
             ServiceManager.SourceManager.SourceUpdated += OnSourceUpdated;
 
             ActionService.TrackActions ["SearchForSameArtistAction"].Activated += OnProgrammaticSearch;
@@ -505,6 +507,15 @@
             }
         }
 
+         private void OnSourceAdded (SourceEventArgs args)
+         {
+             if (args.Source is MusicLibrarySource) {
+                 (args.Source as MusicLibrarySource).FiltersChanged += OnFiltersChanged;
+                 OnFiltersChanged (args.Source, EventArgs.Empty);
+             }
+         }
+
+
         private void OnSourceUpdated (SourceEventArgs args)
         {
             if (args.Source == ServiceManager.SourceManager.ActiveSource) {
@@ -519,6 +530,16 @@
 
 #region UI Event Handlers
 
+         private void OnFiltersChanged (object sender, EventArgs e)
+         {
+             if (composite_view != null) {
+                 ThreadAssist.ProxyToMain (delegate {
+                     composite_view.ResetViews ();
+                 });
+             }
+         }
+
+
         private void OnSearchEntryChanged (object o, EventArgs args)
         {
             Source source = ServiceManager.SourceManager.ActiveSource;
diff -ru /tmp/banshee-1-1.6.0/src/Core/Banshee.Services/Banshee.Library/LibrarySchema.cs src/Core/Banshee.Services/Banshee.Library/LibrarySchema.cs
--- /tmp/banshee-1-1.6.0/src/Core/Banshee.Services/Banshee.Library/LibrarySchema.cs	2010-02-24 15:18:55.000000000 -0600
+++ src/Core/Banshee.Services/Banshee.Library/LibrarySchema.cs	2010-04-29 04:53:43.306526122 -0500
@@ -79,6 +79,14 @@
             "If enabled, metadata (tags) will be written back to audio files when using the track metadata editor."
         );
 
+        public static readonly SchemaEntry<bool> ShowGenre = new SchemaEntry<bool>(
+            "library", "show_genre",
+            true,
+            "Show genre in the browser",
+            "If enabled, the genre filter will be shown in the browser."
+        );
+
+
         public static readonly SchemaEntry<bool> WriteRatingsAndPlayCounts = new SchemaEntry<bool>(
             "library", "write_rating",
             false,
diff -ru /tmp/banshee-1-1.6.0/src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs
--- /tmp/banshee-1-1.6.0/src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs	2010-02-24 15:18:55.000000000 -0600
+++ src/Core/Banshee.Services/Banshee.Library/MusicLibrarySource.cs	2010-04-29 04:26:24.400400930 -0500
@@ -76,6 +76,12 @@
             Section misc = PreferencesPage.Add (new Section ("misc",
                 Catalog.GetString ("Miscellaneous"), 10));
 
+            misc.Add (new SchemaPreference<bool> (LibrarySchema.ShowGenre,
+                Catalog.GetString ("Show the list of genres"), null, delegate {
+                    OnFiltersChanged ();
+                }));
+
+
             misc.Add (new SchemaPreference<bool> (LibrarySchema.SortByAlbumYear,
                 Catalog.GetString ("_Sort an artist's albums by year, not title"), null,
                 delegate {
diff -ru /tmp/banshee-1-1.6.0/src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs
--- /tmp/banshee-1-1.6.0/src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs	2009-12-04 00:36:49.000000000 -0600
+++ src/Core/Banshee.Services/Banshee.Sources/DatabaseSource.cs	2010-04-29 04:28:57.447525945 -0500
@@ -152,9 +152,9 @@
                 this.genre_model = genre_model;
             }
 
+            yield return genre_model;
             yield return artist_model;
             yield return album_model;
-            yield return genre_model;
         }
 
         protected virtual void AfterInitialized ()
@@ -392,6 +392,11 @@
                 current_filters_schema.Set (filters);
             }
 
+            OnFiltersChanged ();
+        }
+
+        protected void OnFiltersChanged ()
+        {
             EventHandler handler = FiltersChanged;
             if (handler != null) {
                 handler (this, EventArgs.Empty);
diff -ru /tmp/banshee-1-1.6.0/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs
--- /tmp/banshee-1-1.6.0/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs	2009-11-22 10:19:34.000000000 -0600
+++ src/Core/Banshee.ThickClient/Banshee.Sources.Gui/CompositeTrackSourceContents.cs	2010-04-29 04:34:20.669400626 -0500
@@ -43,6 +43,7 @@
 using Banshee.Collection;
 using Banshee.Collection.Database;
 using Banshee.Configuration;
+using Banshee.Configuration.Schema;
 using Banshee.Gui;
 using Banshee.Collection.Gui;
 
@@ -50,7 +51,7 @@
 {
     public class CompositeTrackSourceContents : FilteredListSourceContents, ITrackModelSourceContents
     {
-        // private QueryFilterView<string> genre_view;
+        private QueryFilterView<string> genre_view;
         private ArtistListView artist_view;
         private AlbumListView album_view;
         private TrackListView track_view;
@@ -62,16 +63,19 @@
         protected override void InitializeViews ()
         {
             SetupMainView (track_view = new TrackListView ());
-            // SetupFilterView (genre_view = new QueryFilterView<string> (Catalog.GetString ("Not Set")));
+            SetupFilterView (genre_view = new QueryFilterView<string> (Catalog.GetString ("Not Set")));
             SetupFilterView (artist_view = new ArtistListView ());
             SetupFilterView (album_view = new AlbumListView ());
+            genre_view.Visible = LibrarySchema.ShowGenre.Get ();
+            artist_view.Visible = true;
+            album_view.Visible = true;
         }
 
         protected override void ClearFilterSelections ()
         {
-            // if (genre_view.Model != null) {
-            //     genre_view.Selection.Clear ();
-            // }
+            if (genre_view.Model != null) {
+                genre_view.Selection.Clear ();
+            }
 
             if (artist_view.Model != null) {
                 artist_view.Selection.Clear ();
@@ -82,12 +86,14 @@
             }
         }
 
-        public void SetModels (TrackListModel track, IListModel<ArtistInfo> artist, IListModel<AlbumInfo> album, IListModel<QueryFilterInfo<string>> genre)
+        public void ResetViews ()
         {
-            SetModel (track);
-            SetModel (artist);
-            SetModel (album);
-            // SetModel (genre);
+            bool show_genre = LibrarySchema.ShowGenre.Get ();
+            if (!show_genre && genre_view.Model != null) {
+                genre_view.Selection.Clear ();
+            }
+            genre_view.Visible = show_genre;
+            Layout ();
         }
 
         IListView<TrackInfo> ITrackModelSourceContents.TrackView {
@@ -132,10 +138,10 @@
                         SetModel (artist_view, (model as IListModel<ArtistInfo>));
                     else if (model is IListModel<AlbumInfo>)
                         SetModel (album_view, (model as IListModel<AlbumInfo>));
-                    // else if (model is IListModel<QueryFilterInfo<string>>)
-                    //    SetModel (genre_view, (model as IListModel<QueryFilterInfo<string>>));
+                    else if (model is IListModel<QueryFilterInfo<string>>)
+                       SetModel (genre_view, (model as IListModel<QueryFilterInfo<string>>));
                     // else
-                    //    Hyena.Log.DebugFormat ("CompositeTrackSourceContents got non-album/artist filter model: {0}", model);
+                    //    Hyena.Log.DebugFormat ("CompositeTrackSourceContents got non-genre/artist/album filter model: {0}", model);
                 }
             }
 
@@ -149,7 +155,7 @@
             SetModel (track_view, null);
             SetModel (artist_view, null);
             SetModel (album_view, null);
-            // SetModel (genre_view, null);
+            SetModel (genre_view, null);
             track_view.HeaderVisible = false;
         }
 
diff -ru /tmp/banshee-1-1.6.0/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/FilteredListSourceContents.cs src/Core/Banshee.ThickClient/Banshee.Sources.Gui/FilteredListSourceContents.cs
--- /tmp/banshee-1-1.6.0/src/Core/Banshee.ThickClient/Banshee.Sources.Gui/FilteredListSourceContents.cs	2010-02-05 23:34:32.000000000 -0600
+++ src/Core/Banshee.ThickClient/Banshee.Sources.Gui/FilteredListSourceContents.cs	2010-04-29 04:37:40.270151139 -0500
@@ -88,12 +88,7 @@
             this.name = name;
             InitializeViews ();
 
-            string position = ForcePosition == null ? BrowserPosition.Get () : ForcePosition;
-            if (position == "top") {
-                LayoutTop ();
-            } else {
-                LayoutLeft ();
-            }
+            string position = Layout ();
 
             if (ForcePosition != null) {
                 return;
@@ -206,6 +201,17 @@
             Layout (true);
         }
 
+        protected string Layout ()
+        {
+            string position = ForcePosition == null ? BrowserPosition.Get () : ForcePosition;
+            if (position == "top") {
+                LayoutTop ();
+            } else {
+                LayoutLeft ();
+            }
+            return position;
+        }
+
         private void Layout (bool top)
         {
             //Hyena.Log.Information ("ListBrowser LayoutLeft");
@@ -216,9 +222,10 @@
             filter_box.PositionSet = true;
             Paned current_pane = filter_box;
 
-            for (int i = 0; i < filter_scrolled_windows.Count; i++) {
-                ScrolledWindow window = filter_scrolled_windows[i];
-                bool last_even_filter = (i == filter_scrolled_windows.Count - 1 && filter_scrolled_windows.Count % 2 == 0);
+            var visible_windows = filter_scrolled_windows.FindAll (window => window.Child.Visible);
+            for (int i = 0; i < visible_windows.Count; i++) {
+                ScrolledWindow window = visible_windows[i];
+                bool last_even_filter = (i == visible_windows.Count - 1 && visible_windows.Count % 2 == 0);
                 if (i > 0 && !last_even_filter) {
                     Paned new_pane = GetPane (top);
                     current_pane.Pack2 (new_pane, true, false);
diff -ru /tmp/banshee-1-1.6.0/src/Extensions/Banshee.InternetRadio/Banshee.InternetRadio/InternetRadioSourceContents.cs src/Extensions/Banshee.InternetRadio/Banshee.InternetRadio/InternetRadioSourceContents.cs
--- /tmp/banshee-1-1.6.0/src/Extensions/Banshee.InternetRadio/Banshee.InternetRadio/InternetRadioSourceContents.cs	2009-11-22 10:19:34.000000000 -0600
+++ src/Extensions/Banshee.InternetRadio/Banshee.InternetRadio/InternetRadioSourceContents.cs	2010-04-29 04:38:44.073276025 -0500
@@ -60,6 +60,7 @@
         {
             SetupMainView (track_view = new TrackListView ());
             SetupFilterView (genre_view = new QueryFilterView<string> (Catalog.GetString ("Not Set")));
+            genre_view.Visible = true;
         }
 
         protected override void ClearFilterSelections ()
diff -ru /tmp/banshee-1-1.6.0/src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastSourceContents.cs src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastSourceContents.cs
--- /tmp/banshee-1-1.6.0/src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastSourceContents.cs	2009-11-22 10:19:34.000000000 -0600
+++ src/Extensions/Banshee.Podcasting/Banshee.Podcasting.Gui/PodcastSourceContents.cs	2010-04-29 04:39:27.403401012 -0500
@@ -68,6 +68,9 @@
             SetupFilterView (unheard_view = new PodcastUnheardFilterView ());
             SetupFilterView (download_view = new DownloadStatusFilterView ());
             SetupFilterView (feed_view = new PodcastFeedView ());
+            unheard_view.Visible = true;
+            download_view.Visible = true;
+            feed_view.Visible = true;
         }
 
         protected override void ClearFilterSelections ()
@@ -142,4 +145,4 @@
             "plugins.podcasting", "vpaned_position", 120, "VPaned Position", ""
         );
     }
-}
\ No newline at end of file
+}
