diff -rupN rhythmbox-original/data/org.gnome.rhythmbox.gschema.xml rhythmbox-testing/data/org.gnome.rhythmbox.gschema.xml
--- rhythmbox-original/data/org.gnome.rhythmbox.gschema.xml	2014-02-24 04:11:33.111706000 -0600
+++ rhythmbox-testing/data/org.gnome.rhythmbox.gschema.xml	2014-02-25 15:02:14.538024000 -0600
@@ -129,6 +129,7 @@
     <value nick="artists-albums" value="0"/>
     <value nick="genres-artists" value="1"/>
     <value nick="genres-artists-albums" value="2"/>
+    <value nick="albumArtists-albums" value="3"/>
   </enum>
   <schema id="org.gnome.rhythmbox.sources" path="/org/gnome/rhythmbox/sources/">
     <key name="browser-views" enum="org.gnome.rhythmbox.sources.browser-view-types">
diff -rupN rhythmbox-original/data/ui/browser-popup.ui rhythmbox-testing/data/ui/browser-popup.ui
--- rhythmbox-original/data/ui/browser-popup.ui	2014-02-24 04:11:33.112706000 -0600
+++ rhythmbox-testing/data/ui/browser-popup.ui	2014-02-25 14:54:12.106357000 -0600
@@ -36,11 +36,15 @@
 	<attribute name="action">app.browser-select-genre</attribute>
       </item>
       <item>
+  <attribute name="label" translatable="yes">Browse this Album artist</attribute>
+  <attribute name="action">app.browser-select-album-artist</attribute>
+      </item>
+      <item>
 	<attribute name="label" translatable="yes">Browse this Artist</attribute>
 	<attribute name="action">app.browser-select-artist</attribute>
       </item>
       <item>
-	<attribute name="label" translatable="yes">Browse this Album</attribute>
+  <attribute name="label" translatable="yes">Browse this Album</attribute>
 	<attribute name="action">app.browser-select-album</attribute>
       </item>
     </section>
diff -rupN rhythmbox-original/data/ui/general-prefs.ui rhythmbox-testing/data/ui/general-prefs.ui
--- rhythmbox-original/data/ui/general-prefs.ui	2014-02-24 04:11:33.113706000 -0600
+++ rhythmbox-testing/data/ui/general-prefs.ui	2014-02-25 14:49:51.772630000 -0600
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 2.12 -->
+  <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkVBox" id="general_vbox">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="valign">start</property>
     <property name="border_width">12</property>
     <property name="spacing">18</property>
     <child>
@@ -67,7 +67,6 @@
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="active">True</property>
                         <property name="draw_indicator">True</property>
@@ -85,7 +84,6 @@
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="draw_indicator">True</property>
                         <property name="group">library_browser_views_radio</property>
@@ -103,7 +101,6 @@
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="receives_default">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="draw_indicator">True</property>
                         <property name="group">library_browser_views_radio</property>
@@ -115,6 +112,23 @@
                         <property name="position">2</property>
                       </packing>
                     </child>
+                    <child>
+                      <object class="GtkRadioButton" id="radio4">
+                        <property name="label" translatable="yes">_Album artists and albums</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">False</property>
+                        <property name="use_underline">True</property>
+                        <property name="draw_indicator">True</property>
+                        <property name="group">library_browser_views_radio</property>
+                        <signal name="toggled" handler="rb_shell_preferences_browser_views_activated_cb" swapped="no"/>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                        <property name="position">3</property>
+                      </packing>
+                    </child>
                   </object>
                   <packing>
                     <property name="expand">True</property>
@@ -206,7 +220,7 @@
                           <object class="GtkTable" id="table1">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="n_rows">5</property>
+                            <property name="n_rows">6</property>
                             <property name="n_columns">3</property>
                             <property name="column_spacing">12</property>
                             <property name="row_spacing">6</property>
@@ -217,12 +231,11 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
                               <packing>
-                                <property name="y_options"></property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
@@ -231,46 +244,43 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
                               <packing>
                                 <property name="top_attach">1</property>
                                 <property name="bottom_attach">2</property>
-                                <property name="y_options"></property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
-                           <child>
+                            <child>
                               <object class="GtkCheckButton" id="composer_check">
                                 <property name="label" translatable="yes">_Composer</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
                               <packing>
-                                <property name="top_attach">2</property>
-                                <property name="bottom_attach">3</property>
-                                <property name="y_options"></property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
-                             <child>
+                            <child>
                               <object class="GtkCheckButton" id="album_check">
                                 <property name="label" translatable="yes">A_lbum</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
                               <packing>
-                                <property name="top_attach">3</property>
-                                <property name="bottom_attach">4</property>
-                                <property name="y_options"></property>
+                                <property name="top_attach">4</property>
+                                <property name="bottom_attach">5</property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
@@ -279,15 +289,14 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
                               <packing>
-                                <property name="top_attach">4</property>
-                                <property name="bottom_attach">5</property>
+                                <property name="top_attach">5</property>
+                                <property name="bottom_attach">6</property>
                                 <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
@@ -296,7 +305,6 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
@@ -304,7 +312,7 @@
                                 <property name="left_attach">1</property>
                                 <property name="right_attach">2</property>
                                 <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
@@ -313,15 +321,16 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
                               <packing>
-                                <property name="left_attach">2</property>
-                                <property name="right_attach">3</property>
+                                <property name="left_attach">1</property>
+                                <property name="right_attach">2</property>
+                                <property name="top_attach">5</property>
+                                <property name="bottom_attach">6</property>
                                 <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
@@ -330,17 +339,14 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
                               <packing>
                                 <property name="left_attach">2</property>
                                 <property name="right_attach">3</property>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
                                 <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
@@ -349,17 +355,16 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
                               <packing>
                                 <property name="left_attach">2</property>
                                 <property name="right_attach">3</property>
-                                <property name="top_attach">2</property>
-                                <property name="bottom_attach">3</property>
+                                <property name="top_attach">1</property>
+                                <property name="bottom_attach">2</property>
                                 <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
@@ -368,17 +373,16 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
                               <packing>
                                 <property name="left_attach">2</property>
                                 <property name="right_attach">3</property>
-                                <property name="top_attach">3</property>
-                                <property name="bottom_attach">4</property>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
                                 <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
@@ -387,17 +391,16 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
                               <packing>
                                 <property name="left_attach">2</property>
                                 <property name="right_attach">3</property>
-                                <property name="top_attach">4</property>
-                                <property name="bottom_attach">5</property>
+                                <property name="top_attach">3</property>
+                                <property name="bottom_attach">4</property>
                                 <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
@@ -406,7 +409,6 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
@@ -416,7 +418,7 @@
                                 <property name="top_attach">4</property>
                                 <property name="bottom_attach">5</property>
                                 <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
@@ -425,7 +427,6 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
@@ -435,7 +436,7 @@
                                 <property name="top_attach">3</property>
                                 <property name="bottom_attach">4</property>
                                 <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
@@ -444,7 +445,6 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
@@ -454,7 +454,7 @@
                                 <property name="top_attach">2</property>
                                 <property name="bottom_attach">3</property>
                                 <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
@@ -463,7 +463,6 @@
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
                                 <property name="receives_default">False</property>
-                                <property name="use_action_appearance">False</property>
                                 <property name="use_underline">True</property>
                                 <property name="draw_indicator">True</property>
                               </object>
@@ -473,11 +472,30 @@
                                 <property name="top_attach">1</property>
                                 <property name="bottom_attach">2</property>
                                 <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"></property>
+                                <property name="y_options"/>
+                              </packing>
+                            </child>
+                            <child>
+                              <object class="GtkCheckButton" id="album_artist_check">
+                                <property name="label" translatable="yes">_Album artist</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="top_attach">2</property>
+                                <property name="bottom_attach">3</property>
+                                <property name="x_options">GTK_FILL</property>
+                                <property name="y_options"/>
                               </packing>
                             </child>
                             <child>
                               <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
                             </child>
                           </object>
                           <packing>
diff -rupN rhythmbox-original/rhythmdb/rhythmdb-property-model.c rhythmbox-testing/rhythmdb/rhythmdb-property-model.c
--- rhythmbox-original/rhythmdb/rhythmdb-property-model.c	2014-02-24 04:11:33.403696000 -0600
+++ rhythmbox-testing/rhythmdb/rhythmdb-property-model.c	2014-02-25 15:12:54.146984000 -0600
@@ -132,6 +132,7 @@ static gboolean rhythmdb_property_model_
 enum {
 	TARGET_ALBUMS,
 	TARGET_GENRE,
+	TARGET_ALBUM_ARTISTS,
 	TARGET_ARTISTS,
 	TARGET_LOCATION,
 	TARGET_ENTRIES,
@@ -149,6 +150,11 @@ static const GtkTargetEntry targets_genr
 	{ "application/x-rhythmbox-entry", 0, TARGET_ENTRIES },
 	{ "text/uri-list", 0, TARGET_URIS },
 };
+static const GtkTargetEntry targets_album_artist [] = {
+	{ "text/x-rhythmbox-album-artist", 0, TARGET_ALBUM_ARTISTS },
+	{ "application/x-rhythmbox-entry", 0, TARGET_ENTRIES },
+	{ "text/uri-list", 0, TARGET_URIS },
+};
 static const GtkTargetEntry targets_artist [] = {
 	{ "text/x-rhythmbox-artist", 0, TARGET_ARTISTS },
 	{ "application/x-rhythmbox-entry", 0, TARGET_ENTRIES },
@@ -166,6 +172,7 @@ static const GtkTargetEntry targets_comp
 };
 
 static GtkTargetList *rhythmdb_property_model_album_drag_target_list = NULL;
+static GtkTargetList *rhythmdb_property_model_album_artist_drag_target_list = NULL;
 static GtkTargetList *rhythmdb_property_model_artist_drag_target_list = NULL;
 static GtkTargetList *rhythmdb_property_model_genre_drag_target_list = NULL;
 static GtkTargetList *rhythmdb_property_model_location_drag_target_list = NULL;
@@ -417,6 +424,10 @@ rhythmdb_property_model_set_property (GO
 		case RHYTHMDB_PROP_GENRE:
 			append_sort_property (model, RHYTHMDB_PROP_GENRE);
 			break;
+		case RHYTHMDB_PROP_ALBUM_ARTIST:
+			append_sort_property (model, RHYTHMDB_PROP_ALBUM_ARTIST_SORTNAME);
+			append_sort_property (model, RHYTHMDB_PROP_ALBUM_ARTIST);
+			break;
 		case RHYTHMDB_PROP_ARTIST:
 			append_sort_property (model, RHYTHMDB_PROP_ARTIST_SORTNAME);
 			append_sort_property (model, RHYTHMDB_PROP_ARTIST);
@@ -478,6 +489,10 @@ rhythmdb_property_model_get_property (GO
 static void
 rhythmdb_property_model_init (RhythmDBPropertyModel *model)
 {
+	if (!rhythmdb_property_model_album_artist_drag_target_list)
+		rhythmdb_property_model_album_artist_drag_target_list =
+			gtk_target_list_new (targets_album_artist,
+					     G_N_ELEMENTS (targets_album_artist));
 	if (!rhythmdb_property_model_artist_drag_target_list)
 		rhythmdb_property_model_artist_drag_target_list =
 			gtk_target_list_new (targets_artist,
@@ -1224,6 +1239,9 @@ rhythmdb_property_model_drag_data_get (R
 	case RHYTHMDB_PROP_ALBUM:
 		drag_target_list = rhythmdb_property_model_album_drag_target_list;
 		break;
+	case RHYTHMDB_PROP_ALBUM_ARTIST:
+		drag_target_list = rhythmdb_property_model_album_artist_drag_target_list;
+		break;
 	case RHYTHMDB_PROP_ARTIST:
 		drag_target_list = rhythmdb_property_model_artist_drag_target_list;
 		break;
@@ -1394,6 +1412,10 @@ rhythmdb_property_model_enable_drag (Rhy
 		targets = targets_album;
 		n_elements = G_N_ELEMENTS (targets_album);
 		break;
+	case RHYTHMDB_PROP_ALBUM_ARTIST:
+		targets = targets_album_artist;
+		n_elements = G_N_ELEMENTS (targets_album_artist);
+		break;
 	case RHYTHMDB_PROP_ARTIST:
 		targets = targets_artist;
 		n_elements = G_N_ELEMENTS (targets_artist);
diff -rupN rhythmbox-original/rhythmdb/rhythmdb-query.c rhythmbox-testing/rhythmdb/rhythmdb-query.c
--- rhythmbox-original/rhythmdb/rhythmdb-query.c	2014-02-24 04:11:33.405696000 -0600
+++ rhythmbox-testing/rhythmdb/rhythmdb-query.c	2014-02-25 15:14:50.254827000 -0600
@@ -755,6 +755,7 @@ rhythmdb_query_preprocess (RhythmDB *db,
 		} else switch (data->propid) {
 			case RHYTHMDB_PROP_TITLE_FOLDED:
 			case RHYTHMDB_PROP_GENRE_FOLDED:
+			case RHYTHMDB_PROP_ALBUM_ARTIST_FOLDED:
 			case RHYTHMDB_PROP_ARTIST_FOLDED:
 			case RHYTHMDB_PROP_COMPOSER_FOLDED:
 			case RHYTHMDB_PROP_ALBUM_FOLDED:
diff -rupN rhythmbox-original/rhythmdb/rhythmdb-query-model.c rhythmbox-testing/rhythmdb/rhythmdb-query-model.c
--- rhythmbox-original/rhythmdb/rhythmdb-query-model.c	2014-02-24 04:11:33.404696000 -0600
+++ rhythmbox-testing/rhythmdb/rhythmdb-query-model.c	2014-02-25 15:23:54.973565000 -0600
@@ -2987,6 +2987,51 @@ rhythmdb_query_model_album_sort_func (Rh
 }
 
 /**
+ * rhythmdb_query_model_album_artist_sort_func:
+ * @a: a #RhythmDBEntry
+ * @b: a #RhythmDBEntry
+ * @data: nothing
+ *
+ * Sort function for sorting by album artist.  Sorts by album artist, then
+ * album, then disc number, then track number, then title.
+ *
+ * Returns: result of sort comparison between a and b.
+ */
+gint
+rhythmdb_query_model_album_artist_sort_func (RhythmDBEntry *a,
+				       RhythmDBEntry *b,
+				       gpointer data)
+{
+	const char *a_val;
+	const char *b_val;
+	gint ret;
+
+	a_val = rhythmdb_entry_get_string (a, RHYTHMDB_PROP_ALBUM_ARTIST_SORTNAME_SORT_KEY);
+	if (a_val[0] == '\0') {
+		a_val = rhythmdb_entry_get_string (a, RHYTHMDB_PROP_ALBUM_ARTIST_SORT_KEY);
+	}
+	b_val = rhythmdb_entry_get_string (b, RHYTHMDB_PROP_ALBUM_ARTIST_SORTNAME_SORT_KEY);
+	if (b_val[0] == '\0') {
+		b_val = rhythmdb_entry_get_string (b, RHYTHMDB_PROP_ALBUM_ARTIST_SORT_KEY);
+	}
+
+	if (a_val == NULL) {
+		if (b_val == NULL)
+			ret = 0;
+		else
+			ret = -1;
+	} else if (b_val == NULL)
+		ret = 1;
+	else
+		ret = strcmp (a_val, b_val);
+
+	if (ret != 0)
+		return ret;
+	else
+		return rhythmdb_query_model_album_sort_func (a, b, data);
+}
+
+/**
  * rhythmdb_query_model_artist_sort_func:
  * @a: a #RhythmDBEntry
  * @b: a #RhythmDBEntry
diff -rupN rhythmbox-original/rhythmdb/rhythmdb-query-model.h rhythmbox-testing/rhythmdb/rhythmdb-query-model.h
--- rhythmbox-original/rhythmdb/rhythmdb-query-model.h	2014-02-24 04:11:33.404696000 -0600
+++ rhythmbox-testing/rhythmdb/rhythmdb-query-model.h	2014-02-25 15:24:22.122606000 -0600
@@ -168,6 +168,10 @@ gint 			rhythmdb_query_model_album_sort_
 								 RhythmDBEntry *b,
 								 gpointer data);
 
+gint 			rhythmdb_query_model_album_artist_sort_func	(RhythmDBEntry *a,
+								 RhythmDBEntry *b,
+								 gpointer data);
+
 gint 			rhythmdb_query_model_artist_sort_func	(RhythmDBEntry *a,
 								 RhythmDBEntry *b,
 								 gpointer data);
diff -rupN rhythmbox-original/shell/rb-shell-preferences.c rhythmbox-testing/shell/rb-shell-preferences.c
--- rhythmbox-original/shell/rb-shell-preferences.c	2014-02-24 04:11:33.417695000 -0600
+++ rhythmbox-testing/shell/rb-shell-preferences.c	2014-02-25 14:55:01.337606000 -0600
@@ -96,6 +96,7 @@ struct {
 	RhythmDBPropType prop;
 } column_checks[] = {
 	{ "track_check",	RHYTHMDB_PROP_TRACK_NUMBER },
+	{ "album_artist_check",	RHYTHMDB_PROP_ALBUM_ARTIST },
 	{ "artist_check",	RHYTHMDB_PROP_ARTIST },
 	{ "composer_check",	RHYTHMDB_PROP_COMPOSER },
 	{ "album_check",	RHYTHMDB_PROP_ALBUM },
diff -rupN rhythmbox-original/sources/rb-browser-source.c rhythmbox-testing/sources/rb-browser-source.c
--- rhythmbox-original/sources/rb-browser-source.c	2014-02-24 04:11:33.421695000 -0600
+++ rhythmbox-testing/sources/rb-browser-source.c	2014-02-25 14:57:48.530664000 -0600
@@ -79,6 +79,7 @@ static void rb_browser_source_get_proper
 			                  GValue *value,
 			                  GParamSpec *pspec);
 static void select_genre_action_cb (GSimpleAction *action, GVariant *parameters, gpointer data);
+static void select_album_artist_action_cb (GSimpleAction *action, GVariant *parameters, gpointer data);
 static void select_artist_action_cb (GSimpleAction *action, GVariant *parameters, gpointer data);
 static void select_album_action_cb (GSimpleAction *action, GVariant *parameters, gpointer data);
 
@@ -282,6 +283,7 @@ rb_browser_source_constructed (GObject *
 	GMenu *section;
 	GActionEntry actions[] = {
 		{ "browser-select-genre", select_genre_action_cb },
+		{ "browser-select-album-artist", select_album_artist_action_cb },
 		{ "browser-select-artist", select_artist_action_cb },
 		{ "browser-select-album", select_album_action_cb }
 	};
@@ -312,6 +314,7 @@ rb_browser_source_constructed (GObject *
 
 	/* ensure search instances exist */
 	rb_source_search_basic_register (RHYTHMDB_PROP_SEARCH_MATCH, "search-match", _("Search all fields"));
+	rb_source_search_basic_register (RHYTHMDB_PROP_ALBUM_ARTIST_FOLDED, "album-artist", _("Search album artists"));
 	rb_source_search_basic_register (RHYTHMDB_PROP_ARTIST_FOLDED, "artist", _("Search artists"));
 	rb_source_search_basic_register (RHYTHMDB_PROP_COMPOSER_FOLDED, "composer", _("Search composers"));
 	rb_source_search_basic_register (RHYTHMDB_PROP_ALBUM_FOLDED, "album", _("Search albums"));
@@ -319,6 +322,7 @@ rb_browser_source_constructed (GObject *
 	
 	section = g_menu_new ();
 	rb_source_search_add_to_menu (section, "app", source->priv->search_action, "search-match");
+	rb_source_search_add_to_menu (section, "app", source->priv->search_action, "album-artist");
 	rb_source_search_add_to_menu (section, "app", source->priv->search_action, "artist");
 	rb_source_search_add_to_menu (section, "app", source->priv->search_action, "composer");
 	rb_source_search_add_to_menu (section, "app", source->priv->search_action, "album");
@@ -349,6 +353,7 @@ rb_browser_source_constructed (GObject *
 	rb_entry_view_append_column (source->priv->songs, RB_ENTRY_VIEW_COL_TRACK_NUMBER, FALSE);
 	rb_entry_view_append_column (source->priv->songs, RB_ENTRY_VIEW_COL_TITLE, TRUE);
 	rb_entry_view_append_column (source->priv->songs, RB_ENTRY_VIEW_COL_GENRE, FALSE);
+	rb_entry_view_append_column (source->priv->songs, RB_ENTRY_VIEW_COL_ALBUM_ARTIST, FALSE);
 	rb_entry_view_append_column (source->priv->songs, RB_ENTRY_VIEW_COL_ARTIST, FALSE);
 	rb_entry_view_append_column (source->priv->songs, RB_ENTRY_VIEW_COL_ALBUM, FALSE);
 	rb_entry_view_append_column (source->priv->songs, RB_ENTRY_VIEW_COL_COMPOSER, FALSE);
@@ -541,6 +546,16 @@ select_genre_action_cb (GSimpleAction *a
 	}
 }
 
+static void
+select_album_artist_action_cb (GSimpleAction *action, GVariant *parameters, gpointer data)
+{
+	rb_debug ("choosing album artist");
+
+	if (RB_IS_BROWSER_SOURCE (data)) {
+		browse_property (RB_BROWSER_SOURCE (data), RHYTHMDB_PROP_ALBUM_ARTIST);
+	}
+}
+
 static void
 select_artist_action_cb (GSimpleAction *action, GVariant *parameters, gpointer data)
 {
diff -rupN rhythmbox-original/widgets/rb-entry-view.c rhythmbox-testing/widgets/rb-entry-view.c
--- rhythmbox-original/widgets/rb-entry-view.c	2014-02-24 04:11:33.436695000 -0600
+++ rhythmbox-testing/widgets/rb-entry-view.c	2014-02-25 15:20:44.259302000 -0600
@@ -48,6 +48,7 @@
  * RBEntryViewColumn:
  * @RB_ENTRY_VIEW_COL_TRACK_NUMBER: the track number column
  * @RB_ENTRY_VIEW_COL_TITLE: the title column
+ * @RB_ENTRY_VIEW_COL_ALBUM_ARTIST: the album artist column
  * @RB_ENTRY_VIEW_COL_ARTIST: the artist column
  * @RB_ENTRY_VIEW_COL_COMPOSER: the composer column
  * @RB_ENTRY_VIEW_COL_ALBUM: the album column
@@ -1281,6 +1282,9 @@ rb_entry_view_get_column (RBEntryView *v
 	case RB_ENTRY_VIEW_COL_TITLE:
 		propid = RHYTHMDB_PROP_TITLE;
 		break;
+	case RB_ENTRY_VIEW_COL_ALBUM_ARTIST:
+		propid = RHYTHMDB_PROP_ALBUM_ARTIST;
+		break;
 	case RB_ENTRY_VIEW_COL_ARTIST:
 		propid = RHYTHMDB_PROP_ARTIST;
 		break;
@@ -1355,6 +1359,7 @@ rb_entry_view_cell_edited_cb (GtkCellRen
 	switch (propid) {
 	case RHYTHMDB_PROP_TITLE:
 	case RHYTHMDB_PROP_GENRE:
+	case RHYTHMDB_PROP_ALBUM_ARTIST:
 	case RHYTHMDB_PROP_ARTIST:
 	case RHYTHMDB_PROP_ALBUM:
 	case RHYTHMDB_PROP_COMMENT:
@@ -1442,6 +1447,16 @@ rb_entry_view_append_column (RBEntryView
 		key = "Title";
 		ellipsize = TRUE;
 		break;
+	case RB_ENTRY_VIEW_COL_ALBUM_ARTIST:
+		propid = RHYTHMDB_PROP_ALBUM_ARTIST;
+		cell_data->propid = propid;
+		cell_data_func = (GtkTreeCellDataFunc) rb_entry_view_string_cell_data_func;
+		sort_propid = RHYTHMDB_PROP_ALBUM_ARTIST_SORT_KEY;
+		sort_func = (GCompareDataFunc) rhythmdb_query_model_album_artist_sort_func;
+		title = _("Album Artist");
+		key = "AlbumArtist";
+		ellipsize = TRUE;
+		break;
 	case RB_ENTRY_VIEW_COL_ARTIST:
 		propid = RHYTHMDB_PROP_ARTIST;
 		cell_data->propid = propid;
@@ -2612,6 +2627,7 @@ rb_entry_view_column_get_type (void)
 		static const GEnumValue values[] = {
 			ENUM_ENTRY (RB_ENTRY_VIEW_COL_TRACK_NUMBER, "track-number"),
 			ENUM_ENTRY (RB_ENTRY_VIEW_COL_TITLE, "title"),
+			ENUM_ENTRY (RB_ENTRY_VIEW_COL_ALBUM_ARTIST, "album-artist"),
 			ENUM_ENTRY (RB_ENTRY_VIEW_COL_ARTIST, "artist"),
 			ENUM_ENTRY (RB_ENTRY_VIEW_COL_ALBUM, "album"),
 			ENUM_ENTRY (RB_ENTRY_VIEW_COL_GENRE, "genre"),
diff -rupN rhythmbox-original/widgets/rb-entry-view.h rhythmbox-testing/widgets/rb-entry-view.h
--- rhythmbox-original/widgets/rb-entry-view.h	2014-02-24 04:11:33.437695000 -0600
+++ rhythmbox-testing/widgets/rb-entry-view.h	2014-02-25 15:00:37.565545000 -0600
@@ -46,6 +46,7 @@ G_BEGIN_DECLS
 typedef enum {
 	RB_ENTRY_VIEW_COL_TRACK_NUMBER,
 	RB_ENTRY_VIEW_COL_TITLE,
+	RB_ENTRY_VIEW_COL_ALBUM_ARTIST,
 	RB_ENTRY_VIEW_COL_ARTIST,
 	RB_ENTRY_VIEW_COL_ALBUM,
 	RB_ENTRY_VIEW_COL_GENRE,
diff -rupN rhythmbox-original/widgets/rb-library-browser.c rhythmbox-testing/widgets/rb-library-browser.c
--- rhythmbox-original/widgets/rb-library-browser.c	2014-02-24 04:11:33.438694000 -0600
+++ rhythmbox-testing/widgets/rb-library-browser.c	2014-02-25 15:00:19.837190000 -0600
@@ -132,6 +132,7 @@ typedef struct {
 
 static BrowserPropertyInfo browser_properties[] = {
 	{RHYTHMDB_PROP_GENRE, N_("Genre")},
+	{RHYTHMDB_PROP_ALBUM_ARTIST, N_("Album Artist")},
 	{RHYTHMDB_PROP_ARTIST, N_("Artist")},
 	{RHYTHMDB_PROP_ALBUM, N_("Album")}
 };
@@ -428,7 +429,10 @@ update_browser_views_visibility (RBLibra
 
 	if (strstr (priv->browser_views, "albums") != NULL)
 		properties = g_list_prepend (properties, (gpointer)RHYTHMDB_PROP_ALBUM);
-	properties = g_list_prepend (properties, (gpointer)RHYTHMDB_PROP_ARTIST);
+	if (strstr (priv->browser_views, "albumArtists") != NULL)
+		properties = g_list_prepend (properties, (gpointer)RHYTHMDB_PROP_ALBUM_ARTIST);
+	if (strstr (priv->browser_views, "artists") != NULL)
+		properties = g_list_prepend (properties, (gpointer)RHYTHMDB_PROP_ARTIST);
 	if (strstr (priv->browser_views, "genres") != NULL)
 		properties = g_list_prepend (properties, (gpointer)RHYTHMDB_PROP_GENRE);
 
