diff --git a/fix-536383.patch b/fix-536383.patch
new file mode 100644
index 0000000..bc65ca9
--- /dev/null
+++ b/fix-536383.patch
@@ -0,0 +1,466 @@
+diff --git a/data/empathy.schemas.in b/data/empathy.schemas.in
+index 81ea5e8..8820da1 100644
+--- a/data/empathy.schemas.in
++++ b/data/empathy.schemas.in
+@@ -172,7 +172,7 @@
+          </long>
+       </locale>
+     </schema>
+-    
++
+     <schema>
+       <key>/schemas/apps/empathy/sounds/sounds_contact_logout</key>
+       <applyto>/apps/empathy/sounds/sounds_contact_logout</applyto>
+@@ -201,7 +201,7 @@
+          </long>
+       </locale>
+     </schema>
+-    
++
+     <schema>
+       <key>/schemas/apps/empathy/sounds/sounds_service_logout</key>
+       <applyto>/apps/empathy/sounds/sounds_service_logout</applyto>
+@@ -290,6 +290,20 @@
+     </schema>
+ 
+     <schema>
++      <key>/schemas/apps/empathy/conversation/show_contacts_in_rooms</key>
++      <applyto>/apps/empathy/conversation/show_contacts_in_rooms</applyto>
++      <owner>empathy</owner>
++      <type>bool</type>
++      <default>true</default>
++      <locale name="C">
++         <short>Show contact list in rooms</short>
++         <long>
++         Whether or not to show the contact list in chat rooms.
++         </long>
++      </locale>
++    </schema>
++
++    <schema>
+       <key>/schemas/apps/empathy/conversation/theme</key>
+       <applyto>/apps/empathy/conversation/theme</applyto>
+       <owner>empathy</owner>
+@@ -372,7 +386,7 @@
+         Character to add after nickname when using nick completion (tab)
+         in group chat.
+         </long>
+-        
++
+       </locale>
+     </schema>
+ 
+@@ -434,7 +448,7 @@
+         </long>
+       </locale>
+     </schema>
+-    
++
+     <schema>
+       <key>/schemas/apps/empathy/autoconnect</key>
+       <applyto>/apps/empathy/autoconnect</applyto>
+diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
+index 0fb77f2..92659dc 100644
+--- a/libempathy-gtk/empathy-chat.c
++++ b/libempathy-gtk/empathy-chat.c
+@@ -69,6 +69,7 @@ typedef struct {
+ 	gchar             *name;
+ 	gchar             *subject;
+ 	EmpathyContact    *remote_contact;
++	gboolean           show_contacts;
+ 
+ 	EmpathyLogManager *log_manager;
+ 	EmpathyAccountManager *account_manager;
+@@ -107,6 +108,7 @@ enum {
+ 	PROP_NAME,
+ 	PROP_SUBJECT,
+ 	PROP_REMOTE_CONTACT,
++	PROP_SHOW_CONTACTS,
+ };
+ 
+ static guint signals[LAST_SIGNAL] = { 0 };
+@@ -141,6 +143,9 @@ chat_get_property (GObject    *object,
+ 	case PROP_REMOTE_CONTACT:
+ 		g_value_set_object (value, priv->remote_contact);
+ 		break;
++	case PROP_SHOW_CONTACTS:
++		g_value_set_boolean (value, priv->show_contacts);
++		break;
+ 	default:
+ 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ 		break;
+@@ -159,6 +164,9 @@ chat_set_property (GObject      *object,
+ 	case PROP_TP_CHAT:
+ 		empathy_chat_set_tp_chat (chat, EMPATHY_TP_CHAT (g_value_get_object (value)));
+ 		break;
++	case PROP_SHOW_CONTACTS:
++		empathy_chat_set_show_contacts (chat, g_value_get_boolean (value));
++		break;
+ 	default:
+ 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
+ 		break;
+@@ -1188,15 +1196,16 @@ chat_reset_size_request (gpointer widget)
+ }
+ 
+ static void
+-chat_set_show_contacts (EmpathyChat *chat, gboolean show)
++chat_update_contacts_visibility (EmpathyChat *chat)
+ {
+ 	EmpathyChatPriv *priv = GET_PRIV (chat);
++	gboolean show = priv->remote_contact == NULL && priv->show_contacts;
+ 
+ 	if (!priv->scrolled_window_contacts) {
+ 		return;
+ 	}
+ 
+-	if (show) {
++	if (show && priv->contact_list_view == NULL) {
+ 		EmpathyContactListStore *store;
+ 		gint                     min_width;
+ 
+@@ -1230,31 +1239,44 @@ chat_set_show_contacts (EmpathyChat *chat, gboolean show)
+ 	} else {
+ 		priv->contacts_width = gtk_paned_get_position (GTK_PANED (priv->hpaned));
+ 		gtk_widget_hide (priv->scrolled_window_contacts);
+-		if (priv->contact_list_view) {
++		if (priv->contact_list_view != NULL) {
+ 			gtk_widget_destroy (priv->contact_list_view);
+ 			priv->contact_list_view = NULL;
+ 		}
+ 	}
+ }
+ 
++void
++empathy_chat_set_show_contacts (EmpathyChat *chat,
++				gboolean     show)
++{
++	EmpathyChatPriv *priv = GET_PRIV (chat);
++
++	priv->show_contacts = show;
++
++	chat_update_contacts_visibility (chat);
++
++	g_object_notify (G_OBJECT (chat), "show-contacts");
++}
++
+ static void
+ chat_remote_contact_changed_cb (EmpathyChat *chat)
+ {
+ 	EmpathyChatPriv *priv = GET_PRIV (chat);
+ 
+-	if (priv->remote_contact) {
++	if (priv->remote_contact != NULL) {
+ 		g_object_unref (priv->remote_contact);
+ 		priv->remote_contact = NULL;
+ 	}
+ 
+ 	priv->remote_contact = empathy_tp_chat_get_remote_contact (priv->tp_chat);
+-	if (priv->remote_contact) {
++	if (priv->remote_contact != NULL) {
+ 		g_object_ref (priv->remote_contact);
+ 		priv->handle_type = TP_HANDLE_TYPE_CONTACT;
+ 		g_free (priv->id);
+ 		priv->id = g_strdup (empathy_contact_get_id (priv->remote_contact));
+ 	}
+-	else if (priv->tp_chat) {
++	else if (priv->tp_chat != NULL) {
+ 		TpChannel *channel;
+ 
+ 		channel = empathy_tp_chat_get_channel (priv->tp_chat);
+@@ -1263,7 +1285,7 @@ chat_remote_contact_changed_cb (EmpathyChat *chat)
+ 		priv->id = g_strdup (empathy_tp_chat_get_id (priv->tp_chat));
+ 	}
+ 
+-	chat_set_show_contacts (chat, priv->remote_contact == NULL);
++	chat_update_contacts_visibility (chat);
+ 
+ 	g_object_notify (G_OBJECT (chat), "remote-contact");
+ 	g_object_notify (G_OBJECT (chat), "id");
+@@ -1288,7 +1310,7 @@ chat_destroy_cb (EmpathyTpChat *tp_chat,
+ 
+ 	empathy_chat_view_append_event (chat->view, _("Disconnected"));
+ 	gtk_widget_set_sensitive (chat->input_text_view, FALSE);
+-	chat_set_show_contacts (chat, FALSE);
++	empathy_chat_set_show_contacts (chat, FALSE);
+ }
+ 
+ static void
+@@ -1373,7 +1395,7 @@ chat_create_ui (EmpathyChat *chat)
+ 	gtk_widget_show (chat->input_text_view);
+ 
+ 	/* Create contact list */
+-	chat_set_show_contacts (chat, priv->remote_contact == NULL);
++	chat_update_contacts_visibility (chat);
+ 
+ 	/* Initialy hide the topic, will be shown if not empty */
+ 	gtk_widget_hide (priv->hbox_topic);
+@@ -1531,42 +1553,56 @@ empathy_chat_class_init (EmpathyChatClass *klass)
+ 							      "The tp chat object",
+ 							      EMPATHY_TYPE_TP_CHAT,
+ 							      G_PARAM_CONSTRUCT |
+-							      G_PARAM_READWRITE));
++							      G_PARAM_READWRITE |
++							      G_PARAM_STATIC_STRINGS));
+ 	g_object_class_install_property (object_class,
+ 					 PROP_ACCOUNT,
+ 					 g_param_spec_object ("account",
+ 							      "Account of the chat",
+ 							      "The account of the chat",
+ 							      MC_TYPE_ACCOUNT,
+-							      G_PARAM_READABLE));
++							      G_PARAM_READABLE |
++							      G_PARAM_STATIC_STRINGS));
+ 	g_object_class_install_property (object_class,
+ 					 PROP_ID,
+ 					 g_param_spec_string ("id",
+ 							      "Chat's id",
+ 							      "The id of the chat",
+ 							      NULL,
+-							      G_PARAM_READABLE));
++							      G_PARAM_READABLE |
++							      G_PARAM_STATIC_STRINGS));
+ 	g_object_class_install_property (object_class,
+ 					 PROP_NAME,
+ 					 g_param_spec_string ("name",
+ 							      "Chat's name",
+ 							      "The name of the chat",
+ 							      NULL,
+-							      G_PARAM_READABLE));
++							      G_PARAM_READABLE |
++							      G_PARAM_STATIC_STRINGS));
+ 	g_object_class_install_property (object_class,
+ 					 PROP_SUBJECT,
+ 					 g_param_spec_string ("subject",
+ 							      "Chat's subject",
+ 							      "The subject or topic of the chat",
+ 							      NULL,
+-							      G_PARAM_READABLE));
++							      G_PARAM_READABLE |
++							      G_PARAM_STATIC_STRINGS));
+ 	g_object_class_install_property (object_class,
+ 					 PROP_REMOTE_CONTACT,
+ 					 g_param_spec_object ("remote-contact",
+ 							      "The remote contact",
+ 							      "The remote contact is any",
+ 							      EMPATHY_TYPE_CONTACT,
+-							      G_PARAM_READABLE));
++							      G_PARAM_READABLE |
++							      G_PARAM_STATIC_STRINGS));
++	g_object_class_install_property (object_class,
++					 PROP_SHOW_CONTACTS,
++					 g_param_spec_boolean ("show-contacts",
++							       "Contacts' visibility",
++							       "The visibility of the contacts' list",
++							       TRUE,
++							       G_PARAM_READWRITE |
++							       G_PARAM_STATIC_STRINGS));
+ 
+ 	signals[COMPOSING] =
+ 		g_signal_new ("composing",
+@@ -1619,6 +1655,10 @@ empathy_chat_init (EmpathyChat *chat)
+ 			  G_CALLBACK (chat_new_connection_cb),
+ 			  chat);
+ 
++	empathy_conf_get_bool (empathy_conf_get (),
++			       EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS,
++			       &priv->show_contacts);
++
+ 	/* Block events for some time to avoid having "has come online" or
+ 	 * "joined" messages. */
+ 	priv->block_events_timeout_id =
+diff --git a/libempathy-gtk/empathy-chat.h b/libempathy-gtk/empathy-chat.h
+index 12fac96..c38fd64 100644
+--- a/libempathy-gtk/empathy-chat.h
++++ b/libempathy-gtk/empathy-chat.h
+@@ -82,6 +82,8 @@ void               empathy_chat_correct_word         (EmpathyChat   *chat,
+ 						      GtkTextIter   *end,
+ 						      const gchar   *new_word);
+ gboolean           empathy_chat_is_room              (EmpathyChat   *chat);
++void               empathy_chat_set_show_contacts    (EmpathyChat *chat,
++                                                      gboolean     show);
+ G_END_DECLS
+ 
+ #endif /* __EMPATHY_CHAT_H__ */
+diff --git a/libempathy-gtk/empathy-conf.h b/libempathy-gtk/empathy-conf.h
+index 4794913..e40c228 100644
+--- a/libempathy-gtk/empathy-conf.h
++++ b/libempathy-gtk/empathy-conf.h
+@@ -59,6 +59,7 @@ struct _EmpathyConfClass {
+ #define EMPATHY_PREFS_SOUNDS_CONTACT_LOGOUT        EMPATHY_PREFS_PATH "/sounds/sounds_contact_logout"
+ #define EMPATHY_PREFS_POPUPS_WHEN_AVAILABLE        EMPATHY_PREFS_PATH "/notifications/popups_when_available"
+ #define EMPATHY_PREFS_CHAT_SHOW_SMILEYS            EMPATHY_PREFS_PATH "/conversation/graphical_smileys"
++#define EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS  EMPATHY_PREFS_PATH "/conversation/show_contacts_in_rooms"
+ #define EMPATHY_PREFS_CHAT_THEME                   EMPATHY_PREFS_PATH "/conversation/theme"
+ #define EMPATHY_PREFS_CHAT_ADIUM_PATH              EMPATHY_PREFS_PATH "/conversation/adium_path"
+ #define EMPATHY_PREFS_CHAT_SPELL_CHECKER_LANGUAGES EMPATHY_PREFS_PATH "/conversation/spell_checker_languages"
+diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
+index 118c737..09f945f 100644
+--- a/src/empathy-chat-window.c
++++ b/src/empathy-chat-window.c
+@@ -77,6 +77,7 @@ typedef struct {
+ 	GtkUIManager *ui_manager;
+ 	GtkAction   *menu_conv_insert_smiley;
+ 	GtkAction   *menu_conv_favorite;
++	GtkAction   *menu_conv_toggle_contacts;
+ 
+ 	GtkAction   *menu_edit_cut;
+ 	GtkAction   *menu_edit_copy;
+@@ -547,6 +548,8 @@ chat_window_conv_activate_cb (GtkAction         *action,
+ {
+ 	EmpathyChatWindowPriv *priv = GET_PRIV (window);
+ 	gboolean               is_room;
++	gboolean               active;
++	EmpathyContact        *remote_contact = NULL;
+ 
+ 	/* Favorite room menu */
+ 	is_room = empathy_chat_is_room (priv->current_chat);
+@@ -565,6 +568,22 @@ chat_window_conv_activate_cb (GtkAction         *action,
+ 			GTK_TOGGLE_ACTION (priv->menu_conv_favorite), found);
+ 	}
+ 	gtk_action_set_visible (priv->menu_conv_favorite, is_room);
++
++	/* Show contacts menu */
++	g_object_get (priv->current_chat,
++		      "remote-contact", &remote_contact,
++		      "show-contacts", &active,
++		      NULL);
++	if (remote_contact == NULL) {
++		gtk_toggle_action_set_active (
++			GTK_TOGGLE_ACTION (priv->menu_conv_toggle_contacts),
++					   active);
++	}
++	gtk_action_set_visible (priv->menu_conv_toggle_contacts,
++				(remote_contact == NULL));
++	if (remote_contact != NULL) {
++		g_object_unref (remote_contact);
++	}
+ }
+ 
+ static void
+@@ -608,6 +627,18 @@ chat_window_favorite_toggled_cb (GtkToggleAction   *toggle_action,
+ 	}
+ }
+ 
++static void
++chat_window_contacts_toggled_cb (GtkToggleAction   *toggle_action,
++				 EmpathyChatWindow *window)
++{
++	EmpathyChatWindowPriv *priv = GET_PRIV (window);
++	gboolean               active;
++
++	active = gtk_toggle_action_get_active (toggle_action);
++
++	empathy_chat_set_show_contacts (priv->current_chat, active);
++}
++
+ static const gchar *
+ chat_get_window_id_for_geometry (EmpathyChat *chat)
+ {
+@@ -1368,6 +1399,7 @@ empathy_chat_window_init (EmpathyChatWindow *window)
+ 				       "ui_manager", &priv->ui_manager,
+ 				       "menu_conv_insert_smiley", &priv->menu_conv_insert_smiley,
+ 				       "menu_conv_favorite", &priv->menu_conv_favorite,
++				       "menu_conv_toggle_contacts", &priv->menu_conv_toggle_contacts,
+ 				       "menu_edit_cut", &priv->menu_edit_cut,
+ 				       "menu_edit_copy", &priv->menu_edit_copy,
+ 				       "menu_edit_paste", &priv->menu_edit_paste,
+@@ -1384,6 +1416,7 @@ empathy_chat_window_init (EmpathyChatWindow *window)
+ 			      "menu_conv", "activate", chat_window_conv_activate_cb,
+ 			      "menu_conv_clear", "activate", chat_window_clear_activate_cb,
+ 			      "menu_conv_favorite", "toggled", chat_window_favorite_toggled_cb,
++			      "menu_conv_toggle_contacts", "toggled", chat_window_contacts_toggled_cb,
+ 			      "menu_conv_close", "activate", chat_window_close_activate_cb,
+ 			      "menu_edit", "activate", chat_window_edit_activate_cb,
+ 			      "menu_edit_cut", "activate", chat_window_cut_activate_cb,
+diff --git a/src/empathy-chat-window.ui b/src/empathy-chat-window.ui
+index 0d5a831..8c8ea7d 100644
+--- a/src/empathy-chat-window.ui
++++ b/src/empathy-chat-window.ui
+@@ -32,6 +32,13 @@
+           </object>
+         </child>
+         <child>
++          <object class="GtkToggleAction" id="menu_conv_toggle_contacts">
++            <property name="name">menu_conv_toggle_contacts</property>
++            <property name="active">TRUE</property>
++            <property name="label" translatable="yes">_Show Contact List</property>
++          </object>
++        </child>
++        <child>
+           <object class="GtkAction" id="menu_conv_close">
+             <property name="stock_id">gtk-close</property>
+             <property name="name">menu_conv_close</property>
+@@ -137,6 +144,7 @@
+           <menuitem action="menu_conv_clear"/>
+           <menuitem action="menu_conv_insert_smiley"/>
+           <menuitem action="menu_conv_favorite"/>
++          <menuitem action="menu_conv_toggle_contacts"/>
+           <separator/>
+           <menuitem action="menu_conv_close"/>
+         </menu>
+diff --git a/src/empathy-preferences.c b/src/empathy-preferences.c
+index 4c88db6..dfdf2a8 100644
+--- a/src/empathy-preferences.c
++++ b/src/empathy-preferences.c
+@@ -52,6 +52,7 @@ typedef struct {
+ 	GtkWidget *checkbutton_show_avatars;
+ 	GtkWidget *checkbutton_compact_contact_list;
+ 	GtkWidget *checkbutton_show_smileys;
++	GtkWidget *checkbutton_show_contacts_in_rooms;
+ 	GtkWidget *combobox_chat_theme;
+ 	GtkWidget *hbox_adium_theme;
+ 	GtkWidget *filechooserbutton_adium_theme;
+@@ -237,6 +238,10 @@ preferences_setup_widgets (EmpathyPreferences *preferences)
+ 					  EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
+ 					  preferences->checkbutton_show_smileys);
+ 
++	preferences_hookup_toggle_button (preferences,
++					  EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS,
++					  preferences->checkbutton_show_contacts_in_rooms);
++
+ 	preferences_hookup_radio_button (preferences,
+ 					 EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
+ 					 preferences->radiobutton_contact_list_sort_by_name);
+@@ -1190,6 +1195,7 @@ empathy_preferences_show (GtkWindow *parent)
+ 		"checkbutton_show_avatars", &preferences->checkbutton_show_avatars,
+ 		"checkbutton_compact_contact_list", &preferences->checkbutton_compact_contact_list,
+ 		"checkbutton_show_smileys", &preferences->checkbutton_show_smileys,
++		"checkbutton_show_contacts_in_rooms", &preferences->checkbutton_show_contacts_in_rooms,
+ 		"combobox_chat_theme", &preferences->combobox_chat_theme,
+ 		"hbox_adium_theme", &preferences->hbox_adium_theme,
+ 		"filechooserbutton_adium_theme", &preferences->filechooserbutton_adium_theme,
+diff --git a/src/empathy-preferences.ui b/src/empathy-preferences.ui
+index 6ae92d1..ed0cb54 100644
+--- a/src/empathy-preferences.ui
++++ b/src/empathy-preferences.ui
+@@ -37,7 +37,6 @@
+                         <child>
+                           <object class="GtkVBox" id="vbox199">
+                             <property name="visible">True</property>
+-                            <property name="spacing">6</property>
+                             <child>
+                               <object class="GtkCheckButton" id="checkbutton_compact_contact_list">
+                                 <property name="label" translatable="yes">Show co_mpact contact list</property>
+@@ -86,6 +85,22 @@
+                                 <property name="position">2</property>
+                               </packing>
+                             </child>
++                            <child>
++                              <object class="GtkCheckButton" id="checkbutton_show_contacts_in_rooms">
++                                <property name="label" translatable="yes">Show contact _list in rooms</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="active">True</property>
++                                <property name="draw_indicator">True</property>
++                              </object>
++                              <packing>
++                                <property name="expand">False</property>
++                                <property name="fill">False</property>
++                                <property name="position">3</property>
++                              </packing>
++                            </child>
+                           </object>
+                         </child>
+                       </object>
diff --git a/fix-562468.patch b/fix-562468.patch
new file mode 100644
index 0000000..51b81ab
--- /dev/null
+++ b/fix-562468.patch
@@ -0,0 +1,298 @@
+diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c
+index 5830d2b..b983da8 100644
+--- a/src/empathy-main-window.c
++++ b/src/empathy-main-window.c
+@@ -717,6 +717,67 @@ main_window_view_show_offline_cb (GtkToggleAction   *action,
+ }
+ 
+ static void
++main_window_view_sort_contacts_cb (GtkRadioAction    *action,
++				   GtkRadioAction    *current,
++				   EmpathyMainWindow *window)
++{
++	EmpathyContactListStoreSort value;
++	const gchar *valueStr = NULL;
++
++	value = gtk_radio_action_get_current_value (action);
++
++	GSList      *group;
++	GType        type;
++	GEnumClass  *enum_class;
++	GEnumValue  *enum_value;
++
++	group = gtk_radio_action_get_group (action);
++
++	/* Get string from index */
++	type = empathy_contact_list_store_sort_get_type ();
++	enum_class = G_ENUM_CLASS (g_type_class_peek (type));
++	enum_value = g_enum_get_value (enum_class, g_slist_index (group, current));
++
++	if (!enum_value) {
++		g_warning ("No GEnumValue for EmpathyContactListSort with GtkRadioButton index:%d",
++			   g_slist_index (group, action));
++	} else {
++		valueStr = enum_value->value_nick;
++
++		empathy_conf_set_string (empathy_conf_get (),
++					 EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
++					 valueStr);
++	}
++
++	empathy_contact_list_store_set_sort_criterium (window->list_store, value);
++}
++
++/* Matches GtkRadioAction values set in empathy-main-window.ui */
++#define CONTACT_LIST_NORMAL_SIZE		0
++#define CONTACT_LIST_NORMAL_WITHOUT_ICONS	1
++#define CONTACT_LIST_COMPACT_SIZE		2
++
++static void
++main_window_view_contacts_list_size_cb (GtkRadioAction    *action,
++					GtkRadioAction    *current,
++					EmpathyMainWindow *window)
++{
++	gint     value;
++
++	value = gtk_radio_action_get_current_value (action);
++
++	empathy_conf_set_bool (empathy_conf_get (),
++			      EMPATHY_PREFS_UI_SHOW_AVATARS,
++			      value == CONTACT_LIST_NORMAL_SIZE);
++	empathy_conf_set_bool (empathy_conf_get (),
++			      EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
++			      value == CONTACT_LIST_COMPACT_SIZE);
++
++	empathy_contact_list_store_set_show_avatars (window->list_store, value == CONTACT_LIST_NORMAL_SIZE);
++	empathy_contact_list_store_set_is_compact (window->list_store, value == CONTACT_LIST_COMPACT_SIZE);
++}
++
++static void
+ main_window_view_show_map_cb (GtkCheckMenuItem  *item,
+ 			      EmpathyMainWindow *window)
+ {
+@@ -1027,36 +1088,15 @@ main_window_notify_show_offline_cb (EmpathyConf *conf,
+ 	}
+ }
+ 
+-static void
+-main_window_notify_show_avatars_cb (EmpathyConf        *conf,
+-				    const gchar       *key,
+-				    EmpathyMainWindow *window)
+-{
+-	gboolean show_avatars;
+-
+-	if (empathy_conf_get_bool (conf, key, &show_avatars)) {
+-		empathy_contact_list_store_set_show_avatars (window->list_store,
+-							    show_avatars);
+-	}
+-}
++/* Matches GtkRadioAction values set in empathy-main-window.ui */
++#define CONTACT_LIST_SORT_BY_STATUS		0
++#define CONTACT_LIST_SORT_BY_NAME		1
+ 
+ static void
+-main_window_notify_compact_contact_list_cb (EmpathyConf        *conf,
+-					    const gchar       *key,
+-					    EmpathyMainWindow *window)
+-{
+-	gboolean compact_contact_list;
+-
+-	if (empathy_conf_get_bool (conf, key, &compact_contact_list)) {
+-		empathy_contact_list_store_set_is_compact (window->list_store,
+-							  compact_contact_list);
+-	}
+-}
+-
+-static void
+-main_window_notify_sort_criterium_cb (EmpathyConf       *conf,
+-				      const gchar       *key,
+-				      EmpathyMainWindow *window)
++main_window_conf_sort_criterium (EmpathyConf       *conf,
++				 const gchar       *key,
++				 EmpathyMainWindow *window,
++				 GtkRadioAction    *action)
+ {
+ 	gchar *str = NULL;
+ 
+@@ -1070,9 +1110,10 @@ main_window_notify_sort_criterium_cb (EmpathyConf       *conf,
+ 		enum_value = g_enum_get_value_by_nick (enum_class, str);
+ 		g_free (str);
+ 
+-		if (enum_value) {
+-			empathy_contact_list_store_set_sort_criterium (window->list_store,
+-								       enum_value->value);
++		if (enum_value->value == EMPATHY_CONTACT_LIST_STORE_SORT_STATE) {
++			gtk_radio_action_set_current_value (action, CONTACT_LIST_SORT_BY_STATUS);
++		} else {
++			gtk_radio_action_set_current_value (action, CONTACT_LIST_SORT_BY_NAME);
+ 		}
+ 	}
+ }
+@@ -1114,6 +1155,11 @@ empathy_main_window_show (void)
+ 	EmpathyConf              *conf;
+ 	GtkWidget                *sw;
+ 	GtkToggleAction          *show_offline_widget;
++	GtkRadioAction           *sort_by_name;
++	GtkRadioAction           *sort_by_status;
++	GtkRadioAction           *normal_size;
++	GtkRadioAction           *normal_without_icons;
++	GtkRadioAction           *compact_size;
+ 	GtkWidget                *ebox;
+ 	GtkAction                *show_map_widget;
+ 	GtkToolItem              *item;
+@@ -1121,6 +1167,7 @@ empathy_main_window_show (void)
+ 	gboolean                  show_avatars;
+ 	gboolean                  compact_contact_list;
+ 	gint                      x, y, w, h;
++	gint			  value = 1;
+ 	gchar                    *filename;
+ 	GSList                   *l;
+ 
+@@ -1139,6 +1186,11 @@ empathy_main_window_show (void)
+ 				       "errors_vbox", &window->errors_vbox,
+ 				       "ui_manager", &window->ui_manager,
+ 				       "view_show_offline", &show_offline_widget,
++				       "view_sort_by_name", &sort_by_name,
++				       "view_sort_by_status", &sort_by_status,
++				       "view_normal_size", &normal_size,
++				       "view_normal_without_icons", &normal_without_icons,
++				       "view_compact_size", &compact_size,
+ 				       "view_history", &window->view_history,
+ 				       "view_show_map", &show_map_widget,
+ 				       "room_join_favorites", &window->room_join_favorites,
+@@ -1159,6 +1211,8 @@ empathy_main_window_show (void)
+ 			      "chat_add_contact", "activate", main_window_chat_add_contact_cb,
+ 			      "view_show_ft_manager", "activate", main_window_view_show_ft_manager,
+ 			      "view_show_offline", "toggled", main_window_view_show_offline_cb,
++			      "view_sort_by_name", "changed", main_window_view_sort_contacts_cb,
++			      "view_normal_size", "changed", main_window_view_contacts_list_size_cb,
+ 			      "view_show_map", "activate", main_window_view_show_map_cb,
+ 			      "edit", "activate", main_window_edit_cb,
+ 			      "edit_accounts", "activate", main_window_edit_accounts_cb,
+@@ -1310,34 +1364,30 @@ empathy_main_window_show (void)
+ 
+ 	gtk_toggle_action_set_active (show_offline_widget, show_offline);
+ 
+-	/* Show avatars ? */
++	/* Sort by name / by status ? */
++	main_window_conf_sort_criterium (conf,
++					 EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
++					 window,
++					 sort_by_name);
++
++
++	/* Contacts list size */
+ 	empathy_conf_get_bool (conf,
+ 			      EMPATHY_PREFS_UI_SHOW_AVATARS,
+ 			      &show_avatars);
+-	empathy_conf_notify_add (conf,
+-				EMPATHY_PREFS_UI_SHOW_AVATARS,
+-				(EmpathyConfNotifyFunc) main_window_notify_show_avatars_cb,
+-				window);
+-	empathy_contact_list_store_set_show_avatars (window->list_store, show_avatars);
+-
+-	/* Is compact ? */
+ 	empathy_conf_get_bool (conf,
+ 			      EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
+ 			      &compact_contact_list);
+-	empathy_conf_notify_add (conf,
+-				EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
+-				(EmpathyConfNotifyFunc) main_window_notify_compact_contact_list_cb,
+-				window);
+-	empathy_contact_list_store_set_is_compact (window->list_store, compact_contact_list);
+ 
+-	/* Sort criterium */
+-	empathy_conf_notify_add (conf,
+-				EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
+-				(EmpathyConfNotifyFunc) main_window_notify_sort_criterium_cb,
+-				window);
+-	main_window_notify_sort_criterium_cb (conf,
+-					      EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
+-					      window);
++	if (compact_contact_list) {
++		value = CONTACT_LIST_COMPACT_SIZE;
++	} else if (show_avatars) {
++		value = CONTACT_LIST_NORMAL_SIZE;
++	} else {
++		value = CONTACT_LIST_NORMAL_WITHOUT_ICONS;
++	}
++	gtk_radio_action_set_current_value (normal_size, value);
++
+ 
+ 	main_window_update_status (window, window->account_manager);
+ 
+diff --git a/src/empathy-main-window.ui b/src/empathy-main-window.ui
+index f914979..d6fcb1e 100644
+--- a/src/empathy-main-window.ui
++++ b/src/empathy-main-window.ui
+@@ -99,6 +99,56 @@
+           </object>
+         </child>
+         <child>
++          <object class="GtkRadioAction" id="view_sort_by_name">
++            <property name="name">view_sort_by_name</property>
++            <property name="visible">True</property>
++            <property name="label" translatable="yes">Sort by _Name</property>
++            <property name="draw_as_radio">True</property>
++            <property name="value">1</property>
++            <property name="current-value">1</property>
++          </object>
++        </child>
++        <child>
++          <object class="GtkRadioAction" id="view_sort_by_status">
++            <property name="name">view_sort_by_status</property>
++            <property name="visible">True</property>
++            <property name="label" translatable="yes">Sort by _Status</property>
++            <property name="draw_as_radio">True</property>
++            <property name="group">view_sort_by_name</property>
++            <property name="value">0</property>
++          </object>
++        </child>
++        <child>
++          <object class="GtkRadioAction" id="view_normal_size">
++            <property name="name">view_normal_size</property>
++            <property name="visible">True</property>
++            <property name="label" translatable="yes">N_ormal Size</property>
++            <property name="draw_as_radio">True</property>
++            <property name="value">0</property>
++            <property name="current-value">0</property>
++          </object>
++        </child>
++        <child>
++          <object class="GtkRadioAction" id="view_normal_without_icons">
++            <property name="name">view_normal_without_icons</property>
++            <property name="visible">True</property>
++            <property name="label" translatable="yes">Normal Size _Without Icons</property>
++            <property name="draw_as_radio">True</property>
++            <property name="group">view_normal_size</property>
++            <property name="value">1</property>
++          </object>
++        </child>
++        <child>
++          <object class="GtkRadioAction" id="view_compact_size">
++            <property name="name">view_compact_size</property>
++            <property name="visible">True</property>
++            <property name="label" translatable="yes">_Compact Size</property>
++            <property name="draw_as_radio">True</property>
++            <property name="group">view_normal_size</property>
++            <property name="value">2</property>
++          </object>
++        </child>
++        <child>
+           <object class="GtkAction" id="room">
+             <property name="name">room</property>
+             <property name="label" translatable="yes">_Room</property>
+@@ -172,6 +222,13 @@
+         <menu action="view">
+           <menuitem action="view_show_offline"/>
+           <separator/>
++          <menuitem action="view_sort_by_name"/>
++          <menuitem action="view_sort_by_status"/>
++          <separator/>
++          <menuitem action="view_normal_size"/>
++          <menuitem action="view_normal_without_icons"/>
++          <menuitem action="view_compact_size"/>
++          <separator/>
+           <menuitem action="view_history"/>
+           <menuitem action="view_show_ft_manager"/>
+           <menuitem action="view_show_map"/>
diff --git a/fix-564259.patch b/fix-564259.patch
new file mode 100644
index 0000000..96381e7
--- /dev/null
+++ b/fix-564259.patch
@@ -0,0 +1,13 @@
+diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
+index 248fd11..0fb77f2 100644
+--- a/libempathy-gtk/empathy-chat.c
++++ b/libempathy-gtk/empathy-chat.c
+@@ -1217,7 +1217,7 @@ chat_set_show_contacts (EmpathyChat *chat, gboolean show)
+ 
+ 		store = empathy_contact_list_store_new (EMPATHY_CONTACT_LIST (priv->tp_chat));
+ 		priv->contact_list_view = GTK_WIDGET (empathy_contact_list_view_new (store,
+-			EMPATHY_CONTACT_LIST_FEATURE_NONE,
++			EMPATHY_CONTACT_LIST_FEATURE_CONTACT_TOOLTIP,
+ 			EMPATHY_CONTACT_FEATURE_CHAT |
+ 			EMPATHY_CONTACT_FEATURE_CALL |
+ 			EMPATHY_CONTACT_FEATURE_LOG |
diff --git a/fix-579484.patch b/fix-579484.patch
new file mode 100644
index 0000000..721f34f
--- /dev/null
+++ b/fix-579484.patch
@@ -0,0 +1,111 @@
+diff --git a/libempathy/empathy-tp-roomlist.c b/libempathy/empathy-tp-roomlist.c
+index 5999663..ab29f62 100644
+--- a/libempathy/empathy-tp-roomlist.c
++++ b/libempathy/empathy-tp-roomlist.c
+@@ -42,6 +42,7 @@ typedef struct {
+ 	TpChannel    *channel;
+ 	McAccount    *account;
+ 	gboolean      is_listing;
++	gboolean      start_requested;
+ } EmpathyTpRoomlistPriv;
+ 
+ enum {
+@@ -236,6 +237,28 @@ tp_roomlist_invalidated_cb (TpChannel         *channel,
+ }
+ 
+ static void
++call_list_rooms_cb (TpChannel *proxy,
++		    const GError *error,
++		    gpointer user_data,
++		    GObject *weak_object)
++{
++	if (error != NULL) {
++		DEBUG ("Error listing rooms: %s", error->message);
++	}
++}
++
++static void
++stop_listing_cb (TpChannel *proxy,
++		 const GError *error,
++		 gpointer user_data,
++		 GObject *weak_object)
++{
++	if (error != NULL) {
++		DEBUG ("Error on stop listing: %s", error->message);
++	}
++}
++
++static void
+ channel_ready_cb (TpChannel *channel,
+ 		  const GError *error,
+ 		  gpointer user_data)
+@@ -269,6 +292,11 @@ channel_ready_cb (TpChannel *channel,
+ 							      NULL, NULL,
+ 							      G_OBJECT (list));
+ 
++	if (priv->start_requested == TRUE) {
++		tp_cli_channel_type_room_list_call_list_rooms (priv->channel, -1,
++			call_list_rooms_cb, NULL, NULL, NULL);
++		priv->start_requested = FALSE;
++	}
+ }
+ 
+ static void
+@@ -434,6 +462,8 @@ empathy_tp_roomlist_init (EmpathyTpRoomlist *list)
+ 		EMPATHY_TYPE_TP_ROOMLIST, EmpathyTpRoomlistPriv);
+ 
+ 	list->priv = priv;
++	priv->start_requested = FALSE;
++	priv->is_listing = FALSE;
+ }
+ 
+ EmpathyTpRoomlist *
+@@ -474,10 +504,12 @@ empathy_tp_roomlist_start (EmpathyTpRoomlist *list)
+ 	EmpathyTpRoomlistPriv *priv = GET_PRIV (list);
+ 
+ 	g_return_if_fail (EMPATHY_IS_TP_ROOMLIST (list));
+-	g_return_if_fail (TP_IS_CHANNEL (priv->channel));
+-
+-	tp_cli_channel_type_room_list_call_list_rooms (priv->channel, -1,
+-						       NULL, NULL, NULL, NULL);
++	if (priv->channel != NULL) {
++		tp_cli_channel_type_room_list_call_list_rooms (priv->channel, -1,
++			call_list_rooms_cb, NULL, NULL, NULL);
++	} else {
++		priv->start_requested = TRUE;
++	}
+ }
+ 
+ void
+@@ -489,6 +521,6 @@ empathy_tp_roomlist_stop (EmpathyTpRoomlist *list)
+ 	g_return_if_fail (TP_IS_CHANNEL (priv->channel));
+ 
+ 	tp_cli_channel_type_room_list_call_stop_listing (priv->channel, -1,
+-							 NULL, NULL, NULL, NULL);
++							 stop_listing_cb, NULL, NULL, NULL);
+ }
+ 
+diff --git a/src/empathy-new-chatroom-dialog.c b/src/empathy-new-chatroom-dialog.c
+index 837d9ac..11b8f7f 100644
+--- a/src/empathy-new-chatroom-dialog.c
++++ b/src/empathy-new-chatroom-dialog.c
+@@ -379,6 +379,7 @@ new_chatroom_dialog_account_changed_cb (GtkComboBox             *combobox,
+ 	EmpathyAccountChooser *account_chooser;
+ 	McAccount             *account;
+ 	gboolean               listing = FALSE;
++	gboolean               expanded = FALSE;
+ 
+ 	if (dialog->room_list) {
+ 		g_object_unref (dialog->room_list);
+@@ -402,6 +403,11 @@ new_chatroom_dialog_account_changed_cb (GtkComboBox             *combobox,
+ 				  G_CALLBACK (new_chatroom_dialog_listing_cb),
+ 				  dialog);
+ 
++		expanded = gtk_expander_get_expanded (GTK_EXPANDER (dialog->expander_browse));
++		if (expanded) {
++			new_chatroom_dialog_browse_start (dialog);
++		}
++
+ 		listing = empathy_tp_roomlist_is_listing (dialog->room_list);
+ 		if (listing) {
+ 			ephy_spinner_start (EPHY_SPINNER (dialog->throbber));
diff --git a/fix-581871.patch b/fix-581871.patch
new file mode 100644
index 0000000..3108e79
--- /dev/null
+++ b/fix-581871.patch
@@ -0,0 +1,458 @@
+diff --git a/libempathy/empathy-tp-roomlist.c b/libempathy/empathy-tp-roomlist.c
+index ab29f62..c5c42b7 100644
+--- a/libempathy/empathy-tp-roomlist.c
++++ b/libempathy/empathy-tp-roomlist.c
+@@ -48,6 +48,7 @@ typedef struct {
+ enum {
+ 	NEW_ROOM,
+ 	DESTROY,
++	ERROR,
+ 	LAST_SIGNAL
+ };
+ 
+@@ -239,22 +240,24 @@ tp_roomlist_invalidated_cb (TpChannel         *channel,
+ static void
+ call_list_rooms_cb (TpChannel *proxy,
+ 		    const GError *error,
+-		    gpointer user_data,
++		    gpointer list,
+ 		    GObject *weak_object)
+ {
+ 	if (error != NULL) {
+ 		DEBUG ("Error listing rooms: %s", error->message);
++		g_signal_emit_by_name (list, "error::start", error);
+ 	}
+ }
+ 
+ static void
+ stop_listing_cb (TpChannel *proxy,
+ 		 const GError *error,
+-		 gpointer user_data,
++		 gpointer list,
+ 		 GObject *weak_object)
+ {
+ 	if (error != NULL) {
+ 		DEBUG ("Error on stop listing: %s", error->message);
++		g_signal_emit_by_name (list, "error::stop", error);
+ 	}
+ }
+ 
+@@ -294,7 +297,7 @@ channel_ready_cb (TpChannel *channel,
+ 
+ 	if (priv->start_requested == TRUE) {
+ 		tp_cli_channel_type_room_list_call_list_rooms (priv->channel, -1,
+-			call_list_rooms_cb, NULL, NULL, NULL);
++			call_list_rooms_cb, list, NULL, NULL);
+ 		priv->start_requested = FALSE;
+ 	}
+ }
+@@ -452,6 +455,16 @@ empathy_tp_roomlist_class_init (EmpathyTpRoomlistClass *klass)
+ 			      G_TYPE_NONE,
+ 			      0);
+ 
++	signals[ERROR] =
++		g_signal_new ("error",
++			      G_TYPE_FROM_CLASS (klass),
++			      G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
++			      0,
++			      NULL, NULL,
++			      g_cclosure_marshal_VOID__POINTER,
++			      G_TYPE_NONE,
++			      1, G_TYPE_POINTER);
++
+ 	g_type_class_add_private (object_class, sizeof (EmpathyTpRoomlistPriv));
+ }
+ 
+@@ -506,7 +519,7 @@ empathy_tp_roomlist_start (EmpathyTpRoomlist *list)
+ 	g_return_if_fail (EMPATHY_IS_TP_ROOMLIST (list));
+ 	if (priv->channel != NULL) {
+ 		tp_cli_channel_type_room_list_call_list_rooms (priv->channel, -1,
+-			call_list_rooms_cb, NULL, NULL, NULL);
++			call_list_rooms_cb, list, NULL, NULL);
+ 	} else {
+ 		priv->start_requested = TRUE;
+ 	}
+@@ -521,6 +534,6 @@ empathy_tp_roomlist_stop (EmpathyTpRoomlist *list)
+ 	g_return_if_fail (TP_IS_CHANNEL (priv->channel));
+ 
+ 	tp_cli_channel_type_room_list_call_stop_listing (priv->channel, -1,
+-							 stop_listing_cb, NULL, NULL, NULL);
++							 stop_listing_cb, list, NULL, NULL);
+ }
+ 
+diff --git a/src/empathy-new-chatroom-dialog.c b/src/empathy-new-chatroom-dialog.c
+index 257ff69..0bd649e 100644
+--- a/src/empathy-new-chatroom-dialog.c
++++ b/src/empathy-new-chatroom-dialog.c
+@@ -30,6 +30,7 @@
+ #include <gtk/gtk.h>
+ #include <glib.h>
+ #include <glib/gi18n.h>
++#include <glib/gprintf.h>
+ 
+ #include <libmissioncontrol/mission-control.h>
+ #include <libmissioncontrol/mc-account.h>
+@@ -66,7 +67,8 @@ typedef struct {
+ 	GtkWidget         *treeview;
+ 	GtkTreeModel      *model;
+ 	GtkWidget         *button_join;
+-	GtkWidget         *button_close;
++	GtkWidget         *label_error_message;
++	GtkWidget         *viewport_error;
+ } EmpathyNewChatroomDialog;
+ 
+ enum {
+@@ -98,6 +100,12 @@ static void     new_chatroom_dialog_new_room_cb                     (EmpathyTpRo
+ static void     new_chatroom_dialog_listing_cb                      (EmpathyTpRoomlist        *room_list,
+ 								     gpointer                  unused,
+ 								     EmpathyNewChatroomDialog *dialog);
++static void     start_listing_error_cb                              (EmpathyTpRoomlist        *room_list,
++								     GError                   *error,
++								     EmpathyNewChatroomDialog *dialog);
++static void     stop_listing_error_cb                               (EmpathyTpRoomlist        *room_list,
++								     GError                   *error,
++								     EmpathyNewChatroomDialog *dialog);
+ static void     new_chatroom_dialog_model_clear                     (EmpathyNewChatroomDialog *dialog);
+ static void     new_chatroom_dialog_model_row_activated_cb          (GtkTreeView             *tree_view,
+ 								     GtkTreePath             *path,
+@@ -117,6 +125,8 @@ static void     new_chatroom_dialog_expander_browse_activate_cb     (GtkWidget
+ static gboolean new_chatroom_dialog_entry_server_focus_out_cb       (GtkWidget               *widget,
+ 								     GdkEventFocus           *event,
+ 								     EmpathyNewChatroomDialog *dialog);
++static void	new_chatroom_dialog_button_close_error_clicked_cb   (GtkButton                *button,
++								     EmpathyNewChatroomDialog *dialog);
+ 
+ static EmpathyNewChatroomDialog *dialog_p = NULL;
+ 
+@@ -147,6 +157,8 @@ empathy_new_chatroom_dialog_show (GtkWindow *parent)
+ 				       "treeview", &dialog->treeview,
+ 				       "button_join", &dialog->button_join,
+ 				       "expander_browse", &dialog->expander_browse,
++				       "label_error_message", &dialog->label_error_message,
++				       "viewport_error", &dialog->viewport_error,
+ 				       NULL);
+ 	g_free (filename);
+ 
+@@ -158,6 +170,7 @@ empathy_new_chatroom_dialog_show (GtkWindow *parent)
+ 			      "entry_server", "focus-out-event", new_chatroom_dialog_entry_server_focus_out_cb,
+ 			      "entry_room", "changed", new_chatroom_dialog_entry_changed_cb,
+ 			      "expander_browse", "activate", new_chatroom_dialog_expander_browse_activate_cb,
++			      "button_close_error", "clicked", new_chatroom_dialog_button_close_error_clicked_cb,
+ 			      NULL);
+ 
+ 	g_object_unref (gui);
+@@ -411,9 +424,17 @@ new_chatroom_dialog_account_changed_cb (GtkComboBox             *combobox,
+ 		g_signal_connect (dialog->room_list, "notify::is-listing",
+ 				  G_CALLBACK (new_chatroom_dialog_listing_cb),
+ 				  dialog);
++		g_signal_connect (dialog->room_list, "error::start",
++				  G_CALLBACK (start_listing_error_cb),
++				  dialog);
++		g_signal_connect (dialog->room_list, "error::stop",
++				  G_CALLBACK (stop_listing_error_cb),
++				  dialog);
+ 
+ 		expanded = gtk_expander_get_expanded (GTK_EXPANDER (dialog->expander_browse));
+ 		if (expanded) {
++			gtk_widget_hide (dialog->viewport_error);
++			gtk_widget_set_sensitive (dialog->treeview, TRUE);
+ 			new_chatroom_dialog_browse_start (dialog);
+ 		}
+ 
+@@ -429,6 +450,13 @@ new_chatroom_dialog_account_changed_cb (GtkComboBox             *combobox,
+ }
+ 
+ static void
++new_chatroom_dialog_button_close_error_clicked_cb   (GtkButton                *button,
++						     EmpathyNewChatroomDialog *dialog)
++{
++	gtk_widget_hide (dialog->viewport_error);
++}
++
++static void
+ new_chatroom_dialog_roomlist_destroy_cb (EmpathyTpRoomlist        *room_list,
+ 					 EmpathyNewChatroomDialog *dialog)
+ {
+@@ -487,6 +515,26 @@ new_chatroom_dialog_new_room_cb (EmpathyTpRoomlist        *room_list,
+ }
+ 
+ static void
++start_listing_error_cb (EmpathyTpRoomlist        *room_list,
++			GError                   *error,
++			EmpathyNewChatroomDialog *dialog)
++{
++	gtk_label_set_text (GTK_LABEL (dialog->label_error_message), "Could not start room listing");
++	gtk_widget_show_all (dialog->viewport_error);
++	gtk_widget_set_sensitive (dialog->treeview, FALSE);
++}
++
++static void
++stop_listing_error_cb (EmpathyTpRoomlist        *room_list,
++		       GError                   *error,
++		       EmpathyNewChatroomDialog *dialog)
++{
++	gtk_label_set_text (GTK_LABEL (dialog->label_error_message), "Could not stop room listing");
++	gtk_widget_show_all (dialog->viewport_error);
++	gtk_widget_set_sensitive (dialog->treeview, FALSE);
++}
++
++static void
+ new_chatroom_dialog_listing_cb (EmpathyTpRoomlist        *room_list,
+ 				gpointer                  unused,
+ 				EmpathyNewChatroomDialog *dialog)
+@@ -622,6 +670,8 @@ new_chatroom_dialog_expander_browse_activate_cb (GtkWidget               *widget
+ 		new_chatroom_dialog_browse_stop (dialog);
+ 		gtk_window_set_resizable (GTK_WINDOW (dialog->window), FALSE);
+ 	} else {
++		gtk_widget_hide (dialog->viewport_error);
++		gtk_widget_set_sensitive (dialog->treeview, TRUE);
+ 		new_chatroom_dialog_browse_start (dialog);
+ 		gtk_window_set_resizable (GTK_WINDOW (dialog->window), TRUE);
+ 	}
+diff --git a/src/empathy-new-chatroom-dialog.ui b/src/empathy-new-chatroom-dialog.ui
+index ba7a326..a8fccf4 100644
+--- a/src/empathy-new-chatroom-dialog.ui
++++ b/src/empathy-new-chatroom-dialog.ui
+@@ -1,13 +1,14 @@
+ <?xml version="1.0"?>
+-<!--*- mode: xml -*-->
+ <interface>
++  <requires lib="gtk+" version="2.16"/>
++  <!-- interface-naming-policy toplevel-contextual -->
+   <object class="GtkDialog" id="new_chatroom_dialog">
+     <property name="visible">True</property>
+     <property name="border_width">5</property>
+     <property name="title" translatable="yes">Join Room</property>
+     <property name="role">join_new_chatroom</property>
+     <property name="default_width">350</property>
+-    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
++    <property name="type_hint">dialog</property>
+     <property name="has_separator">False</property>
+     <child internal-child="vbox">
+       <object class="GtkVBox" id="dialog-vbox4">
+@@ -25,16 +26,10 @@
+                 <property name="column_spacing">5</property>
+                 <property name="row_spacing">5</property>
+                 <child>
+-                  <placeholder/>
+-                </child>
+-                <child>
+-                  <placeholder/>
+-                </child>
+-                <child>
+                   <object class="GtkEntry" id="entry_room">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+-                    <property name="tooltip-text" translatable="yes">Enter the room name to join here or click on one or more rooms in the list.</property>
++                    <property name="tooltip_text" translatable="yes">Enter the room name to join here or click on one or more rooms in the list.</property>
+                     <property name="activates_default">True</property>
+                     <property name="width_chars">25</property>
+                   </object>
+@@ -64,7 +59,7 @@
+                   <object class="GtkEntry" id="entry_server">
+                     <property name="visible">True</property>
+                     <property name="can_focus">True</property>
+-                    <property name="tooltip-text" translatable="yes">Enter the server which hosts the room, or leave it empty if the room is on the current account's server</property>
++                    <property name="tooltip_text" translatable="yes">Enter the server which hosts the room, or leave it empty if the room is on the current account's server</property>
+                     <property name="width_chars">25</property>
+                   </object>
+                   <packing>
+@@ -73,7 +68,7 @@
+                     <property name="top_attach">1</property>
+                     <property name="bottom_attach">2</property>
+                     <property name="x_options">GTK_FILL</property>
+-                    <property name="y_options"/>
++                    <property name="y_options"></property>
+                   </packing>
+                 </child>
+                 <child>
+@@ -88,7 +83,7 @@
+                     <property name="top_attach">1</property>
+                     <property name="bottom_attach">2</property>
+                     <property name="x_options">GTK_FILL</property>
+-                    <property name="y_options"/>
++                    <property name="y_options"></property>
+                   </packing>
+                 </child>
+                 <child>
+@@ -99,13 +94,20 @@
+                   </object>
+                   <packing>
+                     <property name="x_options">GTK_FILL</property>
+-                    <property name="y_options"/>
++                    <property name="y_options"></property>
+                   </packing>
+                 </child>
++                <child>
++                  <placeholder/>
++                </child>
++                <child>
++                  <placeholder/>
++                </child>
+               </object>
+               <packing>
+                 <property name="expand">False</property>
+                 <property name="fill">False</property>
++                <property name="position">0</property>
+               </packing>
+             </child>
+             <child>
+@@ -113,21 +115,90 @@
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <child>
+-                  <object class="GtkScrolledWindow" id="scrolledwindow2">
+-                    <property name="width_request">350</property>
+-                    <property name="height_request">150</property>
++                  <object class="GtkVBox" id="vbox1">
+                     <property name="visible">True</property>
+-                    <property name="can_focus">True</property>
+-                    <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+-                    <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+-                    <property name="shadow_type">GTK_SHADOW_IN</property>
++                    <property name="orientation">vertical</property>
++                    <property name="spacing">2</property>
++                    <child>
++                      <object class="GtkViewport" id="viewport_error">
++                        <property name="resize_mode">queue</property>
++                        <child>
++                          <object class="GtkHBox" id="hbox1">
++                            <property name="visible">True</property>
++                            <child>
++                              <object class="GtkImage" id="image1">
++                                <property name="visible">True</property>
++                                <property name="stock">gtk-dialog-error</property>
++                                <property name="icon-size">1</property>
++                              </object>
++                              <packing>
++                                <property name="expand">False</property>
++                                <property name="fill">False</property>
++                                <property name="padding">5</property>
++                                <property name="position">0</property>
++                              </packing>
++                            </child>
++                            <child>
++                              <object class="GtkLabel" id="label_error_message">
++                                <property name="visible">True</property>
++                                <property name="xalign">0</property>
++                                <property name="xpad">10</property>
++                                <property name="label" translatable="yes">Couldn't load room list</property>
++                              </object>
++                              <packing>
++                                <property name="position">1</property>
++                              </packing>
++                            </child>
++                            <child>
++                              <object class="GtkButton" id="button_close_error">
++                                <property name="visible">True</property>
++                                <property name="can_focus">True</property>
++                                <property name="receives_default">True</property>
++                                <property name="relief">none</property>
++                                <child>
++                                  <object class="GtkImage" id="image2">
++                                    <property name="visible">True</property>
++                                    <property name="stock">gtk-close</property>
++                                    <property name="icon-size">1</property>
++                                  </object>
++                                </child>
++                              </object>
++                              <packing>
++                                <property name="expand">False</property>
++                                <property name="fill">False</property>
++                                <property name="position">2</property>
++                              </packing>
++                            </child>
++                          </object>
++                        </child>
++                      </object>
++                      <packing>
++                        <property name="expand">False</property>
++                        <property name="fill">False</property>
++                        <property name="position">0</property>
++                      </packing>
++                    </child>
+                     <child>
+-                      <object class="GtkTreeView" id="treeview">
++                      <object class="GtkScrolledWindow" id="scrolledwindow2">
++                        <property name="width_request">350</property>
++                        <property name="height_request">150</property>
+                         <property name="visible">True</property>
+                         <property name="can_focus">True</property>
+-                        <property name="search_column">0</property>
+-                        <property name="show_expanders">False</property>
++                        <property name="hscrollbar_policy">never</property>
++                        <property name="vscrollbar_policy">automatic</property>
++                        <property name="shadow_type">in</property>
++                        <child>
++                          <object class="GtkTreeView" id="treeview">
++                            <property name="visible">True</property>
++                            <property name="can_focus">True</property>
++                            <property name="search_column">0</property>
++                            <property name="show_expanders">False</property>
++                          </object>
++                        </child>
+                       </object>
++                      <packing>
++                        <property name="position">1</property>
++                      </packing>
+                     </child>
+                   </object>
+                 </child>
+@@ -150,15 +221,21 @@
+         <child internal-child="action_area">
+           <object class="GtkHButtonBox" id="dialog-action_area4">
+             <property name="visible">True</property>
+-            <property name="layout_style">GTK_BUTTONBOX_END</property>
++            <property name="layout_style">end</property>
+             <child>
+               <object class="GtkButton" id="button_cancel">
++                <property name="label">gtk-cancel</property>
+                 <property name="visible">True</property>
+                 <property name="can_focus">True</property>
+                 <property name="can_default">True</property>
+-                <property name="label">gtk-cancel</property>
++                <property name="receives_default">False</property>
+                 <property name="use_stock">True</property>
+               </object>
++              <packing>
++                <property name="expand">False</property>
++                <property name="fill">False</property>
++                <property name="position">0</property>
++              </packing>
+             </child>
+             <child>
+               <object class="GtkButton" id="button_join">
+@@ -167,6 +244,7 @@
+                 <property name="can_focus">True</property>
+                 <property name="can_default">True</property>
+                 <property name="has_default">True</property>
++                <property name="receives_default">False</property>
+                 <child>
+                   <object class="GtkAlignment" id="alignment4">
+                     <property name="visible">True</property>
+@@ -184,6 +262,7 @@
+                           <packing>
+                             <property name="expand">False</property>
+                             <property name="fill">False</property>
++                            <property name="position">0</property>
+                           </packing>
+                         </child>
+                         <child>
+@@ -204,13 +283,16 @@
+                 </child>
+               </object>
+               <packing>
++                <property name="expand">False</property>
++                <property name="fill">False</property>
+                 <property name="position">1</property>
+               </packing>
+             </child>
+           </object>
+           <packing>
+             <property name="expand">False</property>
+-            <property name="pack_type">GTK_PACK_END</property>
++            <property name="pack_type">end</property>
++            <property name="position">0</property>
+           </packing>
+         </child>
+       </object>
diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c
index 5830d2b..6a99060 100644
--- a/src/empathy-main-window.c
+++ b/src/empathy-main-window.c
@@ -94,6 +94,12 @@ typedef struct {
 	GtkWidget              *presence_chooser;
 	GtkWidget              *errors_vbox;
 
+	GtkRadioAction         *sort_by_name;
+	GtkRadioAction         *sort_by_status;
+	GtkRadioAction         *normal_size;
+	GtkRadioAction         *normal_without_icons;
+	GtkRadioAction         *compact_size;
+
 	GtkUIManager           *ui_manager;
 	GtkAction              *view_history;
 	GtkAction              *room_join_favorites;
@@ -717,6 +723,68 @@ main_window_view_show_offline_cb (GtkToggleAction   *action,
 }
 
 static void
+main_window_view_sort_contacts_cb (GtkRadioAction    *action,
+				   GtkRadioAction    *current,
+				   EmpathyMainWindow *window)
+{
+	EmpathyContactListStoreSort value;
+	const gchar *valueStr = NULL;
+
+	value = gtk_radio_action_get_current_value (action);
+
+	GSList      *group;
+	GType        type;
+	GEnumClass  *enum_class;
+	GEnumValue  *enum_value;
+
+	group = gtk_radio_action_get_group (action);
+
+	/* Get string from index */
+	type = empathy_contact_list_store_sort_get_type ();
+	enum_class = G_ENUM_CLASS (g_type_class_peek (type));
+	enum_value = g_enum_get_value (enum_class, g_slist_index (group, current));
+
+	if (!enum_value) {
+		g_warning ("No GEnumValue for EmpathyContactListSort with GtkRadioButton index:%d",
+			   g_slist_index (group, action));
+	} else {
+		valueStr = enum_value->value_nick;
+
+		empathy_conf_set_string (empathy_conf_get (),
+					 EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
+					 valueStr);
+	}
+	empathy_contact_list_store_set_sort_criterium (window->list_store, value);
+}
+
+/* Matches GtkRadioAction values set in empathy-main-window.ui */
+#define CONTACT_LIST_NORMAL_SIZE		0
+#define CONTACT_LIST_NORMAL_WITHOUT_ICONS	1
+#define CONTACT_LIST_COMPACT_SIZE		2
+
+static void
+main_window_view_contacts_list_size_cb (GtkRadioAction    *action,
+					GtkRadioAction    *current,
+					EmpathyMainWindow *window)
+{
+	gint     value;
+
+	value = gtk_radio_action_get_current_value (action);
+
+	empathy_conf_set_bool (empathy_conf_get (),
+			       EMPATHY_PREFS_UI_SHOW_AVATARS,
+			       value == CONTACT_LIST_NORMAL_SIZE);
+	empathy_conf_set_bool (empathy_conf_get (),
+			       EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
+			       value == CONTACT_LIST_COMPACT_SIZE);
+
+	empathy_contact_list_store_set_show_avatars (window->list_store,
+						     value == CONTACT_LIST_NORMAL_SIZE);
+	empathy_contact_list_store_set_is_compact (window->list_store,
+						   value == CONTACT_LIST_COMPACT_SIZE);
+}
+
+static void
 main_window_view_show_map_cb (GtkCheckMenuItem  *item,
 			      EmpathyMainWindow *window)
 {
@@ -1028,35 +1096,40 @@ main_window_notify_show_offline_cb (EmpathyConf *conf,
 }
 
 static void
-main_window_notify_show_avatars_cb (EmpathyConf        *conf,
-				    const gchar       *key,
-				    EmpathyMainWindow *window)
+main_window_notify_contact_list_size_cb (EmpathyConf       *conf,
+					 const gchar       *key,
+					 EmpathyMainWindow *window)
 {
 	gboolean show_avatars;
-
-	if (empathy_conf_get_bool (conf, key, &show_avatars)) {
-		empathy_contact_list_store_set_show_avatars (window->list_store,
-							    show_avatars);
+	gboolean compact_contact_list;
+	gint value = CONTACT_LIST_NORMAL_SIZE;
+
+	if (empathy_conf_get_bool (conf,
+				   EMPATHY_PREFS_UI_SHOW_AVATARS,
+				   &show_avatars)
+	    && empathy_conf_get_bool (conf,
+				      EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
+				      &compact_contact_list)) {
+		if (compact_contact_list) {
+			value = CONTACT_LIST_COMPACT_SIZE;
+		} else if (show_avatars) {
+			value = CONTACT_LIST_NORMAL_SIZE;
+		} else {
+			value = CONTACT_LIST_NORMAL_WITHOUT_ICONS;
+		}
 	}
+	gtk_radio_action_set_current_value (window->normal_size, value);
 }
 
-static void
-main_window_notify_compact_contact_list_cb (EmpathyConf        *conf,
-					    const gchar       *key,
-					    EmpathyMainWindow *window)
-{
-	gboolean compact_contact_list;
 
-	if (empathy_conf_get_bool (conf, key, &compact_contact_list)) {
-		empathy_contact_list_store_set_is_compact (window->list_store,
-							  compact_contact_list);
-	}
-}
+/* Matches GtkRadioAction values set in empathy-main-window.ui */
+#define CONTACT_LIST_SORT_BY_STATUS		0
+#define CONTACT_LIST_SORT_BY_NAME		1
 
 static void
-main_window_notify_sort_criterium_cb (EmpathyConf       *conf,
-				      const gchar       *key,
-				      EmpathyMainWindow *window)
+main_window_notify_sort_contact_cb (EmpathyConf       *conf,
+				    const gchar       *key,
+				    EmpathyMainWindow *window)
 {
 	gchar *str = NULL;
 
@@ -1068,12 +1141,19 @@ main_window_notify_sort_criterium_cb (EmpathyConf       *conf,
 		type = empathy_contact_list_store_sort_get_type ();
 		enum_class = G_ENUM_CLASS (g_type_class_peek (type));
 		enum_value = g_enum_get_value_by_nick (enum_class, str);
-		g_free (str);
 
 		if (enum_value) {
-			empathy_contact_list_store_set_sort_criterium (window->list_store,
-								       enum_value->value);
+			if (enum_value->value == EMPATHY_CONTACT_LIST_STORE_SORT_STATE) {
+				gtk_radio_action_set_current_value (window->sort_by_name,
+								    CONTACT_LIST_SORT_BY_STATUS);
+			} else {
+				gtk_radio_action_set_current_value (window->sort_by_name,
+								    CONTACT_LIST_SORT_BY_NAME);
+			}
+		} else {
+			g_warning ("Wrong value for sort_criterium configuration : %s", str);
 		}
+		g_free (str);
 	}
 }
 
@@ -1118,8 +1198,6 @@ empathy_main_window_show (void)
 	GtkAction                *show_map_widget;
 	GtkToolItem              *item;
 	gboolean                  show_offline;
-	gboolean                  show_avatars;
-	gboolean                  compact_contact_list;
 	gint                      x, y, w, h;
 	gchar                    *filename;
 	GSList                   *l;
@@ -1139,6 +1217,11 @@ empathy_main_window_show (void)
 				       "errors_vbox", &window->errors_vbox,
 				       "ui_manager", &window->ui_manager,
 				       "view_show_offline", &show_offline_widget,
+				       "view_sort_by_name", &window->sort_by_name,
+				       "view_sort_by_status", &window->sort_by_status,
+				       "view_normal_size", &window->normal_size,
+				       "view_normal_without_icons", &window->normal_without_icons,
+				       "view_compact_size", &window->compact_size,
 				       "view_history", &window->view_history,
 				       "view_show_map", &show_map_widget,
 				       "room_join_favorites", &window->room_join_favorites,
@@ -1159,6 +1242,8 @@ empathy_main_window_show (void)
 			      "chat_add_contact", "activate", main_window_chat_add_contact_cb,
 			      "view_show_ft_manager", "activate", main_window_view_show_ft_manager,
 			      "view_show_offline", "toggled", main_window_view_show_offline_cb,
+			      "view_sort_by_name", "changed", main_window_view_sort_contacts_cb,
+			      "view_normal_size", "changed", main_window_view_contacts_list_size_cb,
 			      "view_show_map", "activate", main_window_view_show_map_cb,
 			      "edit", "activate", main_window_edit_cb,
 			      "edit_accounts", "activate", main_window_edit_accounts_cb,
@@ -1310,34 +1395,29 @@ empathy_main_window_show (void)
 
 	gtk_toggle_action_set_active (show_offline_widget, show_offline);
 
-	/* Show avatars ? */
-	empathy_conf_get_bool (conf,
-			      EMPATHY_PREFS_UI_SHOW_AVATARS,
-			      &show_avatars);
+	/* Sort by name / by status ? */
 	empathy_conf_notify_add (conf,
-				EMPATHY_PREFS_UI_SHOW_AVATARS,
-				(EmpathyConfNotifyFunc) main_window_notify_show_avatars_cb,
-				window);
-	empathy_contact_list_store_set_show_avatars (window->list_store, show_avatars);
+				 EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
+				 (EmpathyConfNotifyFunc) main_window_notify_sort_contact_cb,
+				 window);
 
-	/* Is compact ? */
-	empathy_conf_get_bool (conf,
-			      EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
-			      &compact_contact_list);
-	empathy_conf_notify_add (conf,
-				EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
-				(EmpathyConfNotifyFunc) main_window_notify_compact_contact_list_cb,
-				window);
-	empathy_contact_list_store_set_is_compact (window->list_store, compact_contact_list);
+	main_window_notify_sort_contact_cb (conf,
+					    EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
+					    window);
 
-	/* Sort criterium */
+	/* Contacts list size */
 	empathy_conf_notify_add (conf,
-				EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
-				(EmpathyConfNotifyFunc) main_window_notify_sort_criterium_cb,
-				window);
-	main_window_notify_sort_criterium_cb (conf,
-					      EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
-					      window);
+				 EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
+				 (EmpathyConfNotifyFunc) main_window_notify_contact_list_size_cb,
+				 window);
+	empathy_conf_notify_add (conf,
+				 EMPATHY_PREFS_UI_SHOW_AVATARS,
+				 (EmpathyConfNotifyFunc) main_window_notify_contact_list_size_cb,
+				 window);
+
+	main_window_notify_contact_list_size_cb (conf,
+						 EMPATHY_PREFS_UI_SHOW_AVATARS,
+						 window);
 
 	main_window_update_status (window, window->account_manager);
 
diff --git a/src/empathy-main-window.ui b/src/empathy-main-window.ui
index f914979..d6fcb1e 100644
--- a/src/empathy-main-window.ui
+++ b/src/empathy-main-window.ui
@@ -99,6 +99,56 @@
           </object>
         </child>
         <child>
+          <object class="GtkRadioAction" id="view_sort_by_name">
+            <property name="name">view_sort_by_name</property>
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Sort by _Name</property>
+            <property name="draw_as_radio">True</property>
+            <property name="value">1</property>
+            <property name="current-value">1</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkRadioAction" id="view_sort_by_status">
+            <property name="name">view_sort_by_status</property>
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Sort by _Status</property>
+            <property name="draw_as_radio">True</property>
+            <property name="group">view_sort_by_name</property>
+            <property name="value">0</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkRadioAction" id="view_normal_size">
+            <property name="name">view_normal_size</property>
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">N_ormal Size</property>
+            <property name="draw_as_radio">True</property>
+            <property name="value">0</property>
+            <property name="current-value">0</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkRadioAction" id="view_normal_without_icons">
+            <property name="name">view_normal_without_icons</property>
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">Normal Size _Without Icons</property>
+            <property name="draw_as_radio">True</property>
+            <property name="group">view_normal_size</property>
+            <property name="value">1</property>
+          </object>
+        </child>
+        <child>
+          <object class="GtkRadioAction" id="view_compact_size">
+            <property name="name">view_compact_size</property>
+            <property name="visible">True</property>
+            <property name="label" translatable="yes">_Compact Size</property>
+            <property name="draw_as_radio">True</property>
+            <property name="group">view_normal_size</property>
+            <property name="value">2</property>
+          </object>
+        </child>
+        <child>
           <object class="GtkAction" id="room">
             <property name="name">room</property>
             <property name="label" translatable="yes">_Room</property>
@@ -172,6 +222,13 @@
         <menu action="view">
           <menuitem action="view_show_offline"/>
           <separator/>
+          <menuitem action="view_sort_by_name"/>
+          <menuitem action="view_sort_by_status"/>
+          <separator/>
+          <menuitem action="view_normal_size"/>
+          <menuitem action="view_normal_without_icons"/>
+          <menuitem action="view_compact_size"/>
+          <separator/>
           <menuitem action="view_history"/>
           <menuitem action="view_show_ft_manager"/>
           <menuitem action="view_show_map"/>
diff --git a/src/empathy-preferences.c b/src/empathy-preferences.c
index dfdf2a8..acd70db 100644
--- a/src/empathy-preferences.c
+++ b/src/empathy-preferences.c
@@ -49,8 +49,6 @@ typedef struct {
 
 	GtkWidget *notebook;
 
-	GtkWidget *checkbutton_show_avatars;
-	GtkWidget *checkbutton_compact_contact_list;
 	GtkWidget *checkbutton_show_smileys;
 	GtkWidget *checkbutton_show_contacts_in_rooms;
 	GtkWidget *combobox_chat_theme;
@@ -59,8 +57,6 @@ typedef struct {
 	GtkWidget *label_invalid_adium_theme;
 	GtkWidget *checkbutton_separate_chat_windows;
 	GtkWidget *checkbutton_autoconnect;
-	GtkWidget *radiobutton_contact_list_sort_by_name;
-	GtkWidget *radiobutton_contact_list_sort_by_state;
 
 	GtkWidget *checkbutton_sounds_enabled;
 	GtkWidget *checkbutton_sounds_disabled_away;
@@ -99,11 +95,6 @@ static void     preferences_languages_cell_toggled_cb    (GtkCellRendererToggle
 							  EmpathyPreferences      *preferences);
 static void     preferences_widget_sync_bool             (const gchar            *key,
 							  GtkWidget              *widget);
-static void     preferences_widget_sync_string           (const gchar            *key,
-							  GtkWidget              *widget);
-static void     preferences_notify_string_cb             (EmpathyConf             *conf,
-							  const gchar            *key,
-							  gpointer                user_data);
 static void     preferences_notify_bool_cb               (EmpathyConf             *conf,
 							  const gchar            *key,
 							  gpointer                user_data);
@@ -113,16 +104,11 @@ static void     preferences_notify_sensitivity_cb        (EmpathyConf
 static void     preferences_hookup_toggle_button         (EmpathyPreferences      *preferences,
 							  const gchar            *key,
 							  GtkWidget              *widget);
-static void     preferences_hookup_radio_button          (EmpathyPreferences      *preferences,
-							  const gchar            *key,
-							  GtkWidget              *widget);
 static void     preferences_hookup_sensitivity           (EmpathyPreferences      *preferences,
 							  const gchar            *key,
 							  GtkWidget              *widget);
 static void     preferences_toggle_button_toggled_cb     (GtkWidget              *button,
 							  gpointer                user_data);
-static void     preferences_radio_button_toggled_cb      (GtkWidget              *button,
-							  gpointer                user_data);
 static void     preferences_destroy_cb                   (GtkWidget              *widget,
 							  EmpathyPreferences      *preferences);
 static void     preferences_response_cb                  (GtkWidget              *widget,
@@ -173,24 +159,8 @@ preferences_add_id (EmpathyPreferences *preferences, guint id)
 }
 
 static void
-preferences_compact_contact_list_changed_cb (EmpathyConf *conf,
-					     const gchar *key,
-					     gpointer     user_data)
-{
-	EmpathyPreferences *preferences = user_data;
-	gboolean            value;
-
-	if (empathy_conf_get_bool (empathy_conf_get (), key, &value)) {
-		gtk_widget_set_sensitive (preferences->checkbutton_show_avatars,
-					  !value);
-	}
-}
-
-static void
 preferences_setup_widgets (EmpathyPreferences *preferences)
 {
-	guint id;
-
 	preferences_hookup_toggle_button (preferences,
 					  EMPATHY_PREFS_NOTIFICATIONS_ENABLED,
 					  preferences->checkbutton_notifications_enabled);
@@ -227,14 +197,6 @@ preferences_setup_widgets (EmpathyPreferences *preferences)
 					  preferences->checkbutton_separate_chat_windows);
 
 	preferences_hookup_toggle_button (preferences,
-					  EMPATHY_PREFS_UI_SHOW_AVATARS,
-					  preferences->checkbutton_show_avatars);
-
-	preferences_hookup_toggle_button (preferences,
-					  EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
-					  preferences->checkbutton_compact_contact_list);
-
-	preferences_hookup_toggle_button (preferences,
 					  EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
 					  preferences->checkbutton_show_smileys);
 
@@ -242,10 +204,6 @@ preferences_setup_widgets (EmpathyPreferences *preferences)
 					  EMPATHY_PREFS_CHAT_SHOW_CONTACTS_IN_ROOMS,
 					  preferences->checkbutton_show_contacts_in_rooms);
 
-	preferences_hookup_radio_button (preferences,
-					 EMPATHY_PREFS_CONTACTS_SORT_CRITERIUM,
-					 preferences->radiobutton_contact_list_sort_by_name);
-
 	preferences_hookup_toggle_button (preferences,
 					  EMPATHY_PREFS_AUTOCONNECT,
 					  preferences->checkbutton_autoconnect);
@@ -281,17 +239,6 @@ preferences_setup_widgets (EmpathyPreferences *preferences)
 	preferences_hookup_sensitivity (preferences,
 					EMPATHY_PREFS_LOCATION_PUBLISH,
 					preferences->checkbutton_location_reduce_accuracy);
-
-	id = empathy_conf_notify_add (empathy_conf_get (),
-				      EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
-				      preferences_compact_contact_list_changed_cb,
-				      preferences);
-	if (id) {
-		preferences_add_id (preferences, id);
-	}
-	preferences_compact_contact_list_changed_cb (empathy_conf_get (),
-						     EMPATHY_PREFS_UI_COMPACT_CONTACT_LIST,
-						     preferences);
 }
 
 static void
@@ -645,6 +592,7 @@ preferences_widget_sync_bool (const gchar *key, GtkWidget *widget)
 	}
 }
 
+#if 0
 static void
 preferences_widget_sync_string (const gchar *key, GtkWidget *widget)
 {
@@ -687,7 +635,7 @@ preferences_notify_string_cb (EmpathyConf  *conf,
 {
 	preferences_widget_sync_string (key, user_data);
 }
-
+#endif
 
 static void
 preferences_notify_bool_cb (EmpathyConf  *conf,
@@ -835,6 +783,7 @@ preferences_hookup_toggle_button (EmpathyPreferences *preferences,
 	}
 }
 
+#if 0
 static void
 preferences_hookup_radio_button (EmpathyPreferences *preferences,
 				 const gchar       *key,
@@ -864,6 +813,7 @@ preferences_hookup_radio_button (EmpathyPreferences *preferences,
 		preferences_add_id (preferences, id);
 	}
 }
+#endif
 
 static void
 preferences_hookup_sensitivity (EmpathyPreferences *preferences,
@@ -899,6 +849,7 @@ preferences_toggle_button_toggled_cb (GtkWidget *button,
 			       gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)));
 }
 
+#if 0
 static void
 preferences_radio_button_toggled_cb (GtkWidget *button,
 				     gpointer   user_data)
@@ -938,7 +889,7 @@ preferences_radio_button_toggled_cb (GtkWidget *button,
 
 	empathy_conf_set_string (empathy_conf_get (), key, value);
 }
-
+#endif
 
 static void
 preferences_theme_adium_update_visibility (EmpathyPreferences *preferences,
@@ -1192,8 +1143,6 @@ empathy_preferences_show (GtkWindow *parent)
 	gui = empathy_builder_get_file (filename,
 		"preferences_dialog", &preferences->dialog,
 		"notebook", &preferences->notebook,
-		"checkbutton_show_avatars", &preferences->checkbutton_show_avatars,
-		"checkbutton_compact_contact_list", &preferences->checkbutton_compact_contact_list,
 		"checkbutton_show_smileys", &preferences->checkbutton_show_smileys,
 		"checkbutton_show_contacts_in_rooms", &preferences->checkbutton_show_contacts_in_rooms,
 		"combobox_chat_theme", &preferences->combobox_chat_theme,
@@ -1202,8 +1151,6 @@ empathy_preferences_show (GtkWindow *parent)
 		"label_invalid_adium_theme", &preferences->label_invalid_adium_theme,
 		"checkbutton_separate_chat_windows", &preferences->checkbutton_separate_chat_windows,
 		"checkbutton_autoconnect", &preferences->checkbutton_autoconnect,
-		"radiobutton_contact_list_sort_by_name", &preferences->radiobutton_contact_list_sort_by_name,
-		"radiobutton_contact_list_sort_by_state", &preferences->radiobutton_contact_list_sort_by_state,
 		"checkbutton_notifications_enabled", &preferences->checkbutton_notifications_enabled,
 		"checkbutton_notifications_disabled_away", &preferences->checkbutton_notifications_disabled_away,
 		"checkbutton_notifications_focus", &preferences->checkbutton_notifications_focus,
diff --git a/src/empathy-preferences.ui b/src/empathy-preferences.ui
index ed0cb54..5f506ef 100644
--- a/src/empathy-preferences.ui
+++ b/src/empathy-preferences.ui
@@ -38,38 +38,6 @@
                           <object class="GtkVBox" id="vbox199">
                             <property name="visible">True</property>
                             <child>
-                              <object class="GtkCheckButton" id="checkbutton_compact_contact_list">
-                                <property name="label" translatable="yes">Show co_mpact contact list</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="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkCheckButton" id="checkbutton_show_avatars">
-                                <property name="label" translatable="yes">Show _avatars</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="tooltip_text" translatable="yes">Avatars are user chosen images shown in the contact list</property>
-                                <property name="use_underline">True</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
                               <object class="GtkCheckButton" id="checkbutton_show_smileys">
                                 <property name="label" translatable="yes">Show _smileys as images</property>
                                 <property name="visible">True</property>
@@ -183,68 +151,6 @@
                     <property name="position">1</property>
                   </packing>
                 </child>
-                <child>
-                  <object class="GtkFrame" id="frame13">
-                    <property name="visible">True</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
-                    <child>
-                      <object class="GtkAlignment" id="alignment31">
-                        <property name="visible">True</property>
-                        <property name="top_padding">6</property>
-                        <property name="left_padding">12</property>
-                        <child>
-                          <object class="GtkVBox" id="vbox217">
-                            <property name="visible">True</property>
-                            <child>
-                              <object class="GtkRadioButton" id="radiobutton_contact_list_sort_by_name">
-                                <property name="label" translatable="yes">Sort by _name</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="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">0</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkRadioButton" id="radiobutton_contact_list_sort_by_state">
-                                <property name="label" translatable="yes">Sort by s_tate</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">radiobutton_contact_list_sort_by_name</property>
-                              </object>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                          </object>
-                        </child>
-                      </object>
-                    </child>
-                    <child type="label">
-                      <object class="GtkLabel" id="label644">
-                        <property name="visible">True</property>
-                        <property name="label" translatable="yes">Contact List</property>
-                        <attributes>
-                          <attribute name="weight" value="bold"/>
-                        </attributes>
-                      </object>
-                    </child>
-                  </object>
-                  <packing>
-                    <property name="position">2</property>
-                  </packing>
-                </child>
               </object>
             </child>
             <child type="tab">
