diff --git a/ui/addhardware.ui b/ui/addhardware.ui
index d839990b..1769d87b 100644
--- a/ui/addhardware.ui
+++ b/ui/addhardware.ui
@@ -65,12 +65,14 @@
                 <property name="vscrollbar_policy">never</property>
                 <property name="shadow_type">etched-in</property>
                 <child>
-                  <object class="GtkTreeView" id="hardware-list">
+                  <object class="GtkTreeView" id="hw-list">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="headers_visible">False</property>
                     <child internal-child="selection">
-                      <object class="GtkTreeSelection" id="treeview-selection1"/>
+                      <object class="GtkTreeSelection" id="treeview-selection1">
+                        <signal name="changed" handler="on_hw_list_changed" swapped="no"/>
+                      </object>
                     </child>
                   </object>
                 </child>
diff --git a/ui/connect.ui b/ui/connect.ui
index e85ff6e7..0aa93465 100644
--- a/ui/connect.ui
+++ b/ui/connect.ui
@@ -364,6 +364,7 @@
                 <child internal-child="entry">
                   <object class="GtkEntry" id="combobox-entry">
                     <property name="can_focus">True</property>
+                    <signal name="changed" handler="on_hostname_changed" swapped="no"/>
                   </object>
                 </child>
               </object>
diff --git a/ui/createinterface.ui b/ui/createinterface.ui
index 0975f5f9..4d6a1a56 100644
--- a/ui/createinterface.ui
+++ b/ui/createinterface.ui
@@ -1248,7 +1248,9 @@
                                                             <property name="can_focus">True</property>
                                                             <property name="headers_visible">False</property>
                                                             <child internal-child="selection">
-                                                            <object class="GtkTreeSelection" id="treeview-selection1"/>
+                                                            <object class="GtkTreeSelection" id="treeview-selection1">
+                                                            <signal name="changed" handler="on_ipv6_address_list_changed" swapped="no"/>
+                                                            </object>
                                                             </child>
                                                             </object>
                                                             </child>
diff --git a/ui/details.ui b/ui/details.ui
index 2146f4c3..faf3bfb4 100644
--- a/ui/details.ui
+++ b/ui/details.ui
@@ -563,7 +563,9 @@
                             <property name="headers_visible">False</property>
                             <signal name="button-press-event" handler="on_hw_list_button_press_event" swapped="no"/>
                             <child internal-child="selection">
-                              <object class="GtkTreeSelection" id="treeview-selection1"/>
+                              <object class="GtkTreeSelection" id="treeview-selection1">
+                                <signal name="changed" handler="on_hw_list_changed" swapped="no"/>
+                              </object>
                             </child>
                           </object>
                         </child>
@@ -2960,7 +2962,9 @@ I/O:</property>
                                                             <property name="can_focus">True</property>
                                                             <property name="headers_visible">False</property>
                                                             <child internal-child="selection">
-                                                            <object class="GtkTreeSelection" id="treeview-selection5"/>
+                                                            <object class="GtkTreeSelection" id="treeview-selection5">
+                                                            <signal name="changed" handler="on_config_boot_list_changed" swapped="no"/>
+                                                            </object>
                                                             </child>
                                                             </object>
                                                             </child>
diff --git a/ui/host.ui b/ui/host.ui
index ff51e195..0167f808 100644
--- a/ui/host.ui
+++ b/ui/host.ui
@@ -2,11 +2,6 @@
 <interface>
   <!-- interface-requires gtk+ 3.0 -->
   <object class="GtkAccelGroup" id="accelgroup1"/>
-  <object class="GtkImage" id="image3">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="stock">gtk-open</property>
-  </object>
   <object class="GtkImage" id="image1">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -17,6 +12,11 @@
     <property name="can_focus">False</property>
     <property name="stock">gtk-new</property>
   </object>
+  <object class="GtkImage" id="image3">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <property name="stock">gtk-open</property>
+  </object>
   <object class="GtkWindow" id="vmm-host">
     <property name="can_focus">False</property>
     <property name="title" translatable="yes">Connection Details</property>
@@ -507,7 +507,9 @@
                             <property name="can_focus">True</property>
                             <property name="headers_visible">False</property>
                             <child internal-child="selection">
-                              <object class="GtkTreeSelection" id="treeview-selection1"/>
+                              <object class="GtkTreeSelection" id="treeview-selection1">
+                                <signal name="changed" handler="on_net_list_changed" swapped="no"/>
+                              </object>
                             </child>
                           </object>
                         </child>
@@ -1544,7 +1546,9 @@
                                             <property name="can_focus">True</property>
                                             <signal name="button-press-event" handler="on_vol_list_button_press_event" swapped="no"/>
                                             <child internal-child="selection">
-                                              <object class="GtkTreeSelection" id="treeview-selection3"/>
+                                              <object class="GtkTreeSelection" id="treeview-selection3">
+                                                <signal name="changed" handler="on_vol_list_changed" swapped="no"/>
+                                              </object>
                                             </child>
                                           </object>
                                         </child>
@@ -1816,7 +1820,9 @@
                             <property name="can_focus">True</property>
                             <property name="headers_visible">False</property>
                             <child internal-child="selection">
-                              <object class="GtkTreeSelection" id="treeview-selection4"/>
+                              <object class="GtkTreeSelection" id="treeview-selection4">
+                                <signal name="changed" handler="on_interface_list_changed" swapped="no"/>
+                              </object>
                             </child>
                           </object>
                         </child>
diff --git a/ui/snapshots.ui b/ui/snapshots.ui
index ec0a37b3..ada417ac 100644
--- a/ui/snapshots.ui
+++ b/ui/snapshots.ui
@@ -130,7 +130,9 @@
                     <property name="can_focus">True</property>
                     <property name="headers_visible">False</property>
                     <child internal-child="selection">
-                      <object class="GtkTreeSelection" id="treeview-selection"/>
+                      <object class="GtkTreeSelection" id="treeview-selection">
+                        <signal name="changed" handler="on_snapshot_list_changed" swapped="no"/>
+                      </object>
                     </child>
                   </object>
                 </child>
diff --git a/ui/storagebrowse.ui b/ui/storagebrowse.ui
index 92f22fa1..b4207468 100644
--- a/ui/storagebrowse.ui
+++ b/ui/storagebrowse.ui
@@ -131,7 +131,9 @@
                     <property name="can_focus">True</property>
                     <signal name="row-activated" handler="on_vol_list_row_activated" swapped="no"/>
                     <child internal-child="selection">
-                      <object class="GtkTreeSelection" id="treeview-selection2"/>
+                      <object class="GtkTreeSelection" id="treeview-selection2">
+                        <signal name="changed" handler="on_vol_list_changed" swapped="no"/>
+                      </object>
                     </child>
                   </object>
                 </child>
diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
index 446ee9c7..7a2c118e 100644
--- a/virtManager/addhardware.py
+++ b/virtManager/addhardware.py
@@ -86,6 +86,7 @@ class vmmAddHardware(vmmGObjectUI):
             "on_create_cancel_clicked" : self.close,
             "on_vmm_create_delete_event" : self.close,
             "on_create_finish_clicked" : self.finish,
+            "on_hw_list_changed": self.hw_selected,
 
             "on_config_storage_browse_clicked": self.browse_storage,
             "on_config_storage_select_toggled": self.toggle_storage_select,
@@ -108,9 +109,6 @@ class vmmAddHardware(vmmGObjectUI):
         })
         self.bind_escape_key_close()
 
-        hwlist = self.widget("hardware-list")
-        hwlist.get_selection().connect("changed", self.hw_selected)
-
         self.set_initial_state()
 
     def show(self, parent):
@@ -157,7 +155,7 @@ class vmmAddHardware(vmmGObjectUI):
         # Name, icon name, page number, is sensitive, tooltip, icon size,
         # device type (serial/parallel)...
         model = Gtk.ListStore(str, str, int, bool, str, str)
-        hw_list = self.widget("hardware-list")
+        hw_list = self.widget("hw-list")
         hw_list.set_model(model)
 
         hw_col = Gtk.TreeViewColumn("Hardware")
@@ -316,7 +314,7 @@ class vmmAddHardware(vmmGObjectUI):
             storage_tooltip = _("Connection does not support storage"
                                 " management.")
 
-        hwlist = self.widget("hardware-list")
+        hwlist = self.widget("hw-list")
         model = hwlist.get_model()
         model.clear()
 
@@ -772,10 +770,10 @@ class vmmAddHardware(vmmGObjectUI):
     ################
 
     def set_hw_selection(self, page):
-        uihelpers.set_list_selection(self.widget("hardware-list"), page)
+        uihelpers.set_list_selection(self.widget("hw-list"), page)
 
     def get_hw_selection(self):
-        return uihelpers.get_list_selection(self.widget("hardware-list"))
+        return uihelpers.get_list_selection(self.widget("hw-list"))
 
     def update_char_device_type_model(self):
         rhel6_blacklist = ["pipe", "udp"]
diff --git a/virtManager/connect.py b/virtManager/connect.py
index a5dee5b9..b81fc0d9 100644
--- a/virtManager/connect.py
+++ b/virtManager/connect.py
@@ -68,6 +68,7 @@ class vmmConnect(vmmGObjectUI):
             "on_hostname_combo_changed": self.hostname_combo_changed,
             "on_connect_remote_toggled": self.connect_remote_toggled,
             "on_username_entry_changed": self.username_changed,
+            "on_hostname_changed": self.hostname_changed,
 
             "on_cancel_clicked": self.cancel,
             "on_connect_clicked": self.open_conn,
@@ -128,7 +129,6 @@ class vmmConnect(vmmGObjectUI):
         host.set_model(hostListModel)
         host.set_entry_text_column(2)
         hostListModel.set_sort_column_id(2, Gtk.SortType.ASCENDING)
-        self.widget("hostname").get_child().connect("changed", self.hostname_changed)
 
     def reset_state(self):
         self.set_default_hypervisor()
diff --git a/virtManager/createinterface.py b/virtManager/createinterface.py
index 11b1d1d1..2eb89d47 100644
--- a/virtManager/createinterface.py
+++ b/virtManager/createinterface.py
@@ -107,6 +107,7 @@ class vmmCreateInterface(vmmGObjectUI):
 
             "on_ipv6_address_add_clicked": self.ipv6_address_add,
             "on_ipv6_address_remove_clicked": self.ipv6_address_remove,
+            "on_ipv6_address_list_changed": self.ipv6_address_selected,
 
             # Bond config dialog
             "on_bond_config_delete_event": self.bond_config_finish,
@@ -310,7 +311,6 @@ class vmmCreateInterface(vmmGObjectUI):
         txt.connect("edited", self.ipv6_address_edited)
         txt_col.pack_start(txt, True)
         txt_col.add_attribute(txt, "text", 0)
-        v6_addr.get_selection().connect("changed", self.ipv6_address_selected)
 
     def reset_state(self):
 
diff --git a/virtManager/details.py b/virtManager/details.py
index 30b3d88a..5147c9e7 100644
--- a/virtManager/details.py
+++ b/virtManager/details.py
@@ -400,6 +400,8 @@ class vmmDetails(vmmGObjectUI):
             "on_vmm_details_delete_event": self.close,
             "on_vmm_details_configure_event": self.window_resized,
             "on_details_menu_quit_activate": self.exit_app,
+            "on_hw_list_changed": self.hw_changed,
+            "on_config_boot_list_changed": self.config_bootdev_selected,
 
             "on_control_vm_details_toggled": self.details_console_changed,
             "on_control_vm_console_toggled": self.details_console_changed,
@@ -543,11 +545,6 @@ class vmmDetails(vmmGObjectUI):
         self.vm.connect("status-changed", self.refresh_vm_state)
         self.vm.connect("config-changed", self.refresh_vm_state)
         self.vm.connect("resources-sampled", self.refresh_resources)
-        self.widget("hw-list").get_selection().connect("changed",
-                                                       self.hw_changed)
-        self.widget("config-boot-list").get_selection().connect(
-                                            "changed",
-                                            self.config_bootdev_selected)
 
         self.populate_hw_list()
         self.repopulate_boot_list()
diff --git a/virtManager/host.py b/virtManager/host.py
index 330e2ed3..dec516ac 100644
--- a/virtManager/host.py
+++ b/virtManager/host.py
@@ -74,15 +74,6 @@ class vmmHost(vmmGObjectUI):
         self.memory_usage_graph = None
         self.init_conn_state()
 
-        # Set up signals
-        self.widget("net-list").get_selection().connect("changed",
-                                                    self.net_selected)
-        self.widget("vol-list").get_selection().connect("changed",
-                                                    self.vol_selected)
-        self.widget("interface-list").get_selection().connect("changed",
-                                                    self.interface_selected)
-
-
         self.init_net_state()
         self.init_storage_state()
         self.init_interface_state()
@@ -119,6 +110,7 @@ class vmmHost(vmmGObjectUI):
             "on_net_start_clicked": self.start_network,
             "on_net_autostart_toggled": self.net_autostart_changed,
             "on_net_apply_clicked": self.net_apply,
+            "on_net_list_changed": self.net_selected,
 
             "on_pool_add_clicked" : self.add_pool,
             "on_vol_add_clicked" : self.add_vol,
@@ -130,6 +122,7 @@ class vmmHost(vmmGObjectUI):
             "on_vol_delete_clicked": self.delete_vol,
             "on_vol_list_button_press_event": self.popup_vol_menu,
             "on_pool_apply_clicked": self.pool_apply,
+            "on_vol_list_changed": self.vol_selected,
 
             "on_interface_add_clicked" : self.add_interface,
             "on_interface_start_clicked" : self.start_interface,
@@ -137,6 +130,7 @@ class vmmHost(vmmGObjectUI):
             "on_interface_delete_clicked" : self.delete_interface,
             "on_interface_startmode_changed": self.interface_startmode_changed,
             "on_interface_apply_clicked" : self.interface_apply,
+            "on_interface_list_changed": self.interface_selected,
 
             "on_config_autoconnect_toggled": self.toggle_autoconnect,
         })
diff --git a/virtManager/snapshots.py b/virtManager/snapshots.py
index acdd60a8..5f97ecfd 100644
--- a/virtManager/snapshots.py
+++ b/virtManager/snapshots.py
@@ -77,13 +77,12 @@ class vmmSnapshotPage(vmmGObjectUI):
             "on_snapshot_new_delete_event": self._snapshot_new_close,
             "on_snapshot_new_ok_clicked": self._on_new_ok_clicked,
             "on_snapshot_new_cancel_clicked" : self._snapshot_new_close,
+            "on_snapshot_list_changed": self._snapshot_selected,
         })
 
         self.top_box = self.widget("snapshot-top-box")
         self.widget("snapshot-top-window").remove(self.top_box)
 
-        self.widget("snapshot-list").get_selection().connect("changed",
-                                                    self._snapshot_selected)
         self._set_snapshot_state(None)
 
 
diff --git a/virtManager/storagebrowse.py b/virtManager/storagebrowse.py
index b293354e..ac6a771f 100644
--- a/virtManager/storagebrowse.py
+++ b/virtManager/storagebrowse.py
@@ -64,6 +64,7 @@ class vmmStorageBrowser(vmmGObjectUI):
             "on_new_volume_clicked" : self.new_volume,
             "on_choose_volume_clicked" : self.finish,
             "on_vol_list_row_activated" : self.finish,
+            "on_vol_list_changed": self.vol_selected,
         })
         self.bind_escape_key_close()
 
@@ -121,7 +122,6 @@ class vmmStorageBrowser(vmmGObjectUI):
         volListModel = Gtk.ListStore(str, str, str, str, str, bool)
         vol_list.set_model(volListModel)
 
-        vol_list.get_selection().connect("changed", self.vol_selected)
         volCol = Gtk.TreeViewColumn(_("Name"))
         vol_txt1 = Gtk.CellRendererText()
         volCol.pack_start(vol_txt1, True)