Blob Blame History Raw
diff --git a/bin/subscription-manager-gui b/bin/subscription-manager-gui
index a7c2ca2..e6bf56e 100755
--- a/bin/subscription-manager-gui
+++ b/bin/subscription-manager-gui
@@ -108,10 +108,10 @@ if _LIBPATH not in sys.path:
 from subscription_manager import ga_loader
 ga_loader.init_ga()
 
-from subscription_manager.ga import GObject as ga_GObject
 from subscription_manager.ga import Gtk as ga_Gtk
+from subscription_manager.ga import gtk_compat
 
-ga_GObject.threads_init()
+gtk_compat.threads_init()
 
 # quick check to see if you are a super-user.
 if os.getuid() != 0:
diff --git a/rel-eng/packages/subscription-manager b/rel-eng/packages/subscription-manager
index 8181efc..c569df4 100644
--- a/rel-eng/packages/subscription-manager
+++ b/rel-eng/packages/subscription-manager
@@ -1 +1 @@
-1.15.9-2 ./
+1.15.9-3 ./
diff --git a/src/daemons/rhsm_d.py b/src/daemons/rhsm_d.py
index 2a5b57c..2ca9125 100755
--- a/src/daemons/rhsm_d.py
+++ b/src/daemons/rhsm_d.py
@@ -66,7 +66,6 @@ def excepthook_logging(exc_type, exc_value, exc_traceback):
 sys.excepthook = excepthook_logging
 
 from subscription_manager.ga import GObject as ga_GObject
-from subscription_manager.ga import GLib as ga_GLib
 from subscription_manager.injectioninit import init_dep_injection
 init_dep_injection()
 
@@ -157,7 +156,7 @@ class StatusChecker(dbus.service.Object):
     #certain parts of that are async
     def watchdog(self):
         if not self.keep_alive:
-            ga_GLib.idle_add(check_if_ran_once, self, self.loop)
+            ga_GObject.idle_add(check_if_ran_once, self, self.loop)
 
     @dbus.service.method(
         dbus_interface="com.redhat.SubscriptionManager.EntitlementStatus",
diff --git a/src/subscription_manager/async.py b/src/subscription_manager/async.py
index c86a873..05433f9 100644
--- a/src/subscription_manager/async.py
+++ b/src/subscription_manager/async.py
@@ -111,3 +111,76 @@ class AsyncBind(object):
     def unbind(self, serial, selection, callback, except_callback):
         threading.Thread(target=self._run_unbind,
                 args=(serial, selection, callback, except_callback)).start()
+
+
+class AsyncRepoOverridesUpdate(object):
+
+    def __init__(self, overrides_api):
+        self.overrides_api = overrides_api
+        self.identity = require(IDENTITY)
+
+    def _load_data(self, success_callback, except_callback):
+        try:
+            # pull the latest overrides from the cache which will be the ones from the server.
+            current_overrides = self.overrides_api.get_overrides(self.identity.uuid) or []
+
+            # Fetch the repositories from repolib without any overrides applied.
+            # We do this so that we can tell if anything has been modified by
+            # overrides.
+            current_repos = self.overrides_api.repo_lib.get_repos(apply_overrides=False)
+
+            self._process_callback(success_callback, current_overrides, current_repos)
+        except Exception, e:
+            self._process_callback(except_callback, e)
+
+    def _update(self, to_add, to_remove, success_callback, except_callback):
+        '''
+        Processes the override mapping and sends the overrides to the server for addition/removal.
+        '''
+        try:
+            # TODO: At some point we should look into providing a single API call that can handle
+            #       additions and removals in the same call (currently not supported by server).
+            current_overrides = None
+            if len(to_add) > 0:
+                current_overrides = self.overrides_api.add_overrides(self.identity.uuid, to_add)
+
+            if len(to_remove) > 0:
+                current_overrides = self.overrides_api.remove_overrides(self.identity.uuid, to_remove)
+
+            if current_overrides:
+                self.overrides_api.update(current_overrides)
+
+            # Fetch the repositories from repolib without any overrides applied.
+            # We do this so that we can tell if anything has been modified by
+            # overrides.
+            current_repos = self.overrides_api.repo_lib.get_repos(apply_overrides=False)
+
+            self._process_callback(success_callback, current_overrides, current_repos)
+        except Exception, e:
+            self._process_callback(except_callback, e)
+
+    def _remove_all(self, repo_ids, success_callback, except_callback):
+        try:
+            current_overrides = self.overrides_api.remove_all_overrides(self.identity.uuid, repo_ids)
+            self.overrides_api.update(current_overrides)
+
+            # Fetch the repositories from repolib without any overrides applied.
+            # We do this so that we can tell if anything has been modified by
+            # overrides.
+            current_repos = self.overrides_api.repo_lib.get_repos(apply_overrides=False)
+
+            self._process_callback(success_callback, current_overrides, current_repos)
+        except Exception, e:
+            self._process_callback(except_callback, e)
+
+    def _process_callback(self, callback, *args):
+        ga_GObject.idle_add(callback, *args)
+
+    def load_data(self, success_callback, failure_callback):
+        threading.Thread(target=self._load_data, args=(success_callback, failure_callback)).start()
+
+    def update_overrides(self, to_add, to_remove, success_callback, except_callback):
+        threading.Thread(target=self._update, args=(to_add, to_remove, success_callback, except_callback)).start()
+
+    def remove_all_overrides(self, repo_ids, success_callback, except_callback):
+        threading.Thread(target=self._remove_all, args=(repo_ids, success_callback, except_callback)).start()
diff --git a/src/subscription_manager/ga_impls/ga_gtk2/GObject.py b/src/subscription_manager/ga_impls/ga_gtk2/GObject.py
index dee1c34..3783ce7 100644
--- a/src/subscription_manager/ga_impls/ga_gtk2/GObject.py
+++ b/src/subscription_manager/ga_impls/ga_gtk2/GObject.py
@@ -1,6 +1,4 @@
 
-# To get gtk.gdk.threads_init
-import gtk
 
 # objects
 from gobject import GObject
@@ -14,11 +12,6 @@ from gobject import markup_escape_text
 from gobject import SIGNAL_RUN_LAST
 from gobject import TYPE_BOOLEAN, TYPE_PYOBJECT, PARAM_READWRITE
 
-# These are not exact replacements, but for our purposes they
-# are used in the same places in the same way. A purely GObject
-# app with no gui may want to distinquish.
-threads_init = gtk.gdk.threads_init
-
 
 class SignalFlags(object):
     RUN_LAST = SIGNAL_RUN_LAST
@@ -26,7 +19,7 @@ class SignalFlags(object):
 
 constants = [TYPE_BOOLEAN, TYPE_PYOBJECT, PARAM_READWRITE]
 methods = [add_emission_hook, idle_add, markup_escape_text,
-           source_remove, threads_init, timeout_add]
+           source_remove, timeout_add]
 enums = [SignalFlags]
 objects = [GObject, MainLoop]
 __all__ = objects + methods + constants + enums
diff --git a/src/subscription_manager/ga_impls/ga_gtk2/Gtk.py b/src/subscription_manager/ga_impls/ga_gtk2/Gtk.py
index 7ec7a01..d009019 100644
--- a/src/subscription_manager/ga_impls/ga_gtk2/Gtk.py
+++ b/src/subscription_manager/ga_impls/ga_gtk2/Gtk.py
@@ -9,8 +9,9 @@ from gtk import CellRendererProgress, CellRendererSpin, CellRendererText
 from gtk import CellRendererToggle, Entry
 from gtk import FileChooserDialog, FileFilter, Frame, HBox, HButtonBox, Image
 from gtk import Label, ListStore, MessageDialog, RadioButton, SpinButton
-from gtk import TextBuffer, TreeRowReference
+from gtk import TextBuffer
 from gtk import TreeStore, TreeView, TreeViewColumn, VBox, Viewport
+from gtk import Window
 
 # enums
 from gtk import BUTTONBOX_END
@@ -112,13 +113,6 @@ class GaImage(Image):
 Image = GaImage
 
 
-# Gtk2's TreeRowReference is a class, while Gtk3's TreeRowReference is
-# non-callable class that has to be constructed with it's .new() method.
-# Provide a helper method that provides a compatible interface. snake_case
-# naming used to distinquish it from the "real" TreeRowReference.
-def tree_row_reference(model, path):
-    return TreeRowReference(model, path)
-
 # Attempt to keep the list of faux Gtk 3 names we are
 # providing to a min.
 constants = [STOCK_APPLY, STOCK_CANCEL, STOCK_REMOVE, STOCK_YES]
@@ -133,7 +127,7 @@ widgets = [AboutDialog, Adjustment, Builder, Button, Calendar, CellRendererPixbu
            Entry, FileChooserDialog, FileFilter, Frame, HBox,
            HButtonBox, Image, Label, ListStore, MessageDialog,
            RadioButton, SpinButton, TextBuffer, TreeStore, TreeView, TreeViewColumn,
-           VBox, Viewport]
+           VBox, Viewport, Window]
 
 methods = [check_version, main, main_quit]
 
diff --git a/src/subscription_manager/ga_impls/ga_gtk2/__init__.py b/src/subscription_manager/ga_impls/ga_gtk2/__init__.py
index 00c3418..e810ef1 100644
--- a/src/subscription_manager/ga_impls/ga_gtk2/__init__.py
+++ b/src/subscription_manager/ga_impls/ga_gtk2/__init__.py
@@ -1,7 +1,5 @@
 
 import os
-# so ga.gtk_compat.tree_row_reference finds it
-from Gtk import tree_row_reference
 
 # ../../gui/data/glade/
 ourfile = __file__
@@ -9,6 +7,7 @@ GTK_BUILDER_FILES_DIR = os.path.normpath(os.path.join(os.path.dirname(__file__),
                                                       "../../gui/data/glade/"))
 GTK_BUILDER_FILES_SUFFIX = "glade"
 
+GTK_COMPAT_VERSION = "2"
+
 __all__ = [GTK_BUILDER_FILES_DIR,
-           GTK_BUILDER_FILES_SUFFIX,
-           tree_row_reference]
+           GTK_BUILDER_FILES_SUFFIX]
diff --git a/src/subscription_manager/ga_impls/ga_gtk2/gtk_compat.py b/src/subscription_manager/ga_impls/ga_gtk2/gtk_compat.py
new file mode 100644
index 0000000..113a2a1
--- /dev/null
+++ b/src/subscription_manager/ga_impls/ga_gtk2/gtk_compat.py
@@ -0,0 +1,30 @@
+
+import os
+
+from gtk import TreeRowReference
+from gtk.gdk import threads_init
+
+
+# Gtk2's TreeRowReference is a class, while Gtk3's TreeRowReference is
+# non-callable class that has to be constructed with it's .new() method.
+# Provide a helper method that provides a compatible interface. snake_case
+# naming used to distinquish it from the "real" TreeRowReference.
+def tree_row_reference(model, path):
+    return TreeRowReference(model, path)
+
+
+# These are not exact replacements, but for our purposes they
+# are used in the same places in the same way. A purely GObject
+# app with no gui may want to distinquish.
+threads_init = threads_init
+
+# ../../gui/data/glade/
+ourfile = __file__
+GTK_BUILDER_FILES_DIR = os.path.normpath(os.path.join(os.path.dirname(__file__),
+                                                      "../../gui/data/glade/"))
+GTK_BUILDER_FILES_SUFFIX = "glade"
+
+GTK_COMPAT_VERSION = "2"
+
+__all__ = [GTK_BUILDER_FILES_DIR,
+           GTK_BUILDER_FILES_SUFFIX]
diff --git a/src/subscription_manager/ga_impls/ga_gtk3.py b/src/subscription_manager/ga_impls/ga_gtk3.py
index f378067..1588d6c 100644
--- a/src/subscription_manager/ga_impls/ga_gtk3.py
+++ b/src/subscription_manager/ga_impls/ga_gtk3.py
@@ -1,6 +1,7 @@
 
 import os
 from gi.repository import Gtk
+from gi.repository import GObject
 
 # ../../gui/data/glade/
 ourfile = __file__
@@ -8,8 +9,12 @@ GTK_BUILDER_FILES_DIR = os.path.normpath(os.path.join(os.path.dirname(__file__),
                                                       "../gui/data/ui/"))
 GTK_BUILDER_FILES_SUFFIX = "ui"
 
+GTK_COMPAT_VERSION = "3"
+
 
 # gtk3 requires constructing with .new(), where
 # gtk2 does not have a .new()
 def tree_row_reference(model, path):
     return Gtk.TreeRowReference.new(model, path)
+
+threads_init = GObject.threads_init
diff --git a/src/subscription_manager/ga_loader.py b/src/subscription_manager/ga_loader.py
index 8a3c38e..59a00f6 100644
--- a/src/subscription_manager/ga_loader.py
+++ b/src/subscription_manager/ga_loader.py
@@ -179,8 +179,8 @@ class GaImporterGtk3(GaImporter):
 
 class GaImporterGtk2(GaImporter):
     virtual_modules = {'subscription_manager.ga': None,
-                       'subscription_manager.ga.gtk_compat': ['subscription_manager.ga_impls',
-                                                              'ga_gtk2'],
+                       'subscription_manager.ga.gtk_compat': ['subscription_manager.ga_impls.ga_gtk2',
+                                                              'gtk_compat'],
                        'subscription_manager.ga.GObject': ['subscription_manager.ga_impls.ga_gtk2',
                                                            'GObject'],
                        'subscription_manager.ga.Gdk': ['subscription_manager.ga_impls.ga_gtk2',
diff --git a/src/subscription_manager/gui/data/glade/repositories.glade b/src/subscription_manager/gui/data/glade/repositories.glade
index 30868b9..e45fc29 100644
--- a/src/subscription_manager/gui/data/glade/repositories.glade
+++ b/src/subscription_manager/gui/data/glade/repositories.glade
@@ -1,105 +1,55 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <interface>
-  <object class="GtkTextBuffer" id="textbuffer1">
-    <property name="text">Manage the repositories your subscriptions grant you access to by enabling, disabling and overriding certain fields.</property>
-  </object>
   <!-- interface-requires gtk+ 2.10 -->
-  <!--
- interface-naming-policy project-wide -->
+  <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkDialog" id="main_window">
     <property name="can_focus">False</property>
     <property name="border_width">5</property>
     <property name="title" translatable="yes">Manage Repositories</property>
     <property name="modal">True</property>
     <property name="window_position">center-on-parent</property>
-    <property name="default_width">600</property>
-    <property name="default_height">400</property>
+    <property name="default_width">800</property>
+    <property name="default_height">600</property>
     <property name="destroy_with_parent">True</property>
     <property name="icon_name">subscription-manager</property>
     <property name="type_hint">dialog</property>
     <property name="deletable">False</property>
-    <accessibility/>
-    <signal handler="on_dialog_delete_event" name="delete_event"/>
+    <child internal-child="accessible">
+      <object class="AtkObject" id="main_window-atkobject">
+        <property name="AtkObject::accessible-name" translatable="yes">manage_repositories_dialog</property>
+      </object>
+    </child>
+    <signal name="delete-event" handler="on_dialog_delete_event" swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkVBox" id="main_container">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="spacing">2</property>
-        <child internal-child="action_area">
-          <object class="GtkHButtonBox" id="dialog-action_area1">
+        <child>
+          <object class="GtkLabel" id="description_text">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="layout_style">edge</property>
-            <child>
-              <object class="GtkButton" id="reset_button">
-                <property name="label" translatable="yes">Remove All Overrides</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="xalign">0.45</property>
-                <accessibility/>
-                <signal handler="on_reset_button_clicked" name="clicked"/>
-                <child internal-child="accessible">
-                  <object class="AtkObject" id="a11y-reset_button1">
-                    <property name="AtkObject::accessible-name" translatable="yes">remove_all_overrides_button</property>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="close_button">
-                <property name="label" translatable="yes">Close</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <accessibility/>
-                <signal handler="on_close_button_clicked" name="clicked"/>
-                <child internal-child="accessible">
-                  <object class="AtkObject" id="a11y-close_button1">
-                    <property name="AtkObject::accessible-name" translatable="yes">close_button</property>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
+            <property name="xalign">0</property>
+            <property name="yalign">0</property>
+            <property name="ypad">10</property>
+            <property name="label" translatable="yes">Manage the repositories your subscriptions grant you access to by enabling, disabling and overriding certain fields.</property>
+            <property name="wrap">True</property>
+            <property name="wrap_mode">word-char</property>
+            <attributes>
+              <attribute name="weight" value="bold"/>
+            </attributes>
           </object>
           <packing>
             <property name="expand">False</property>
             <property name="fill">False</property>
-            <property name="pack_type">end</property>
             <property name="position">0</property>
           </packing>
         </child>
         <child>
-          <object class="GtkVBox" id="vbox1">
+          <object class="GtkVBox" id="main_content_container">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <child>
-              <object class="GtkTextView" id="description_text">
-                <property name="visible">True</property>
-                <property name="sensitive">False</property>
-                <property name="can_focus">True</property>
-                <property name="editable">False</property>
-                <property name="wrap_mode">word</property>
-                <property name="buffer">textbuffer1</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="padding">6</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
               <object class="GtkScrolledWindow" id="scrolledwindow">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
@@ -109,7 +59,7 @@
               <packing>
                 <property name="expand">True</property>
                 <property name="fill">True</property>
-                <property name="position">1</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
@@ -117,184 +67,144 @@
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <child>
-                  <object class="GtkLabel" id="label2">
+                  <object class="GtkLabel" id="label1">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="xalign">0</property>
-                    <property name="ypad">3</property>
+                    <property name="yalign">0</property>
+                    <property name="ypad">6</property>
                     <property name="label" translatable="yes">&lt;b&gt;Repository Details&lt;/b&gt;</property>
                     <property name="use_markup">True</property>
                   </object>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="fill">False</property>
+                    <property name="fill">True</property>
                     <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkFrame" id="frame1">
-                    <property name="height_request">96</property>
+                  <object class="GtkTable" id="table1">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
+                    <property name="n_rows">3</property>
+                    <property name="n_columns">2</property>
+                    <child>
+                      <object class="GtkLabel" id="name_label1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Name:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                        <property name="x_padding">4</property>
+                        <property name="y_padding">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="base_url_label1">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Base URL:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                        <property name="x_padding">4</property>
+                        <property name="y_padding">4</property>
+                      </packing>
+                    </child>
                     <child>
-                      <object class="GtkAlignment" id="alignment1">
+                      <object class="GtkLabel" id="other_overrides_label1">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Other Overrides:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                      </object>
+                      <packing>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                        <property name="x_options">GTK_FILL</property>
+                        <property name="y_options">GTK_FILL</property>
+                        <property name="x_padding">4</property>
+                        <property name="y_padding">4</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="name_text">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="wrap">True</property>
+                        <property name="wrap_mode">word-char</property>
+                        <property name="selectable">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="baseurl_text">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                        <property name="wrap">True</property>
+                        <property name="wrap_mode">word-char</property>
+                        <property name="selectable">True</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">1</property>
+                        <property name="bottom_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow1">
+                        <property name="height_request">120</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="hscrollbar_policy">automatic</property>
+                        <property name="vscrollbar_policy">automatic</property>
                         <child>
-                          <object class="GtkScrolledWindow" id="scrolledwindow2">
+                          <object class="GtkTreeView" id="other_overrides_view">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="hscrollbar_policy">automatic</property>
-                            <property name="vscrollbar_policy">automatic</property>
-                            <property name="shadow_type">in</property>
-                            <child>
-                              <object class="GtkViewport" id="viewport2">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="resize_mode">queue</property>
-                                <property name="vadjustment">0 0 1 0.10000000000000001 0.90000000000000002 1</property>
-                                <property name="shadow_type">none</property>
-                                <child>
-                                  <object class="GtkTable" id="repo_data_table">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="n_rows">2</property>
-                                    <property name="n_columns">3</property>
-                                    <property name="column_spacing">3</property>
-                                    <child>
-                                      <object class="GtkLabel" id="name_label">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">&lt;b&gt;Name:&lt;/b&gt;</property>
-                                        <property name="use_markup">True</property>
-                                      </object>
-                                      <packing>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                        <property name="x_padding">4</property>
-                                        <property name="y_padding">4</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkTextView" id="name_text">
-                                        <property name="visible">True</property>
-                                        <property name="sensitive">False</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="pixels_above_lines">5</property>
-                                        <property name="editable">False</property>
-                                        <property name="left_margin">10</property>
-                                        <property name="cursor_visible">False</property>
-                                        <accessibility/>
-                                        <child internal-child="accessible">
-                                          <object class="AtkObject" id="a11y-name_text1">
-                                            <property name="AtkObject::accessible-name" translatable="yes">Subscription Text</property>
-                                          </object>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="base_url_label">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">&lt;b&gt;Base URL:&lt;/b&gt;</property>
-                                        <property name="use_markup">True</property>
-                                      </object>
-                                      <packing>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                        <property name="x_padding">4</property>
-                                        <property name="y_padding">4</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkTextView" id="baseurl_text">
-                                        <property name="visible">True</property>
-                                        <property name="sensitive">False</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="pixels_above_lines">5</property>
-                                        <property name="editable">False</property>
-                                        <property name="wrap_mode">none</property>
-                                        <property name="left_margin">10</property>
-                                        <property name="cursor_visible">False</property>
-                                        <accessibility/>
-                                        <child internal-child="accessible">
-                                          <object class="AtkObject" id="a11y-baseurl_text1">
-                                            <property name="AtkObject::accessible-name" translatable="yes">SKU Text</property>
-                                          </object>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="other_overrides_label">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="yalign">0</property>
-                                        <property name="label" translatable="yes">&lt;b&gt;Other Overrides:&lt;/b&gt;</property>
-                                        <property name="use_markup">True</property>
-                                      </object>
-                                      <packing>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                        <property name="x_padding">4</property>
-                                        <property name="y_padding">4</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkTreeView" id="other_overrides_view">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="rules_hint">True</property>
-                                        <property name="enable_search">False</property>
-                                        <property name="search_column">0</property>
-                                        <property name="show_expanders">False</property>
-                                        <accessibility/>
-                                        <child internal-child="accessible">
-                                          <object class="AtkObject" id="a11y-other_overrides_view1">
-                                            <property name="AtkObject::accessible-name" translatable="yes">Other Overrides Table</property>
-                                          </object>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                </child>
+                            <property name="rules_hint">True</property>
+                            <property name="enable_search">False</property>
+                            <property name="search_column">0</property>
+                            <property name="show_expanders">False</property>
+                            <child internal-child="accessible">
+                              <object class="AtkObject" id="other_overrides_view-atkobject">
+                                <property name="AtkObject::accessible-name" translatable="yes">Other Overrides Table</property>
                               </object>
                             </child>
                           </object>
                         </child>
                       </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="right_attach">2</property>
+                        <property name="top_attach">2</property>
+                        <property name="bottom_attach">3</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="expand">True</property>
+                    <property name="expand">False</property>
                     <property name="fill">True</property>
                     <property name="position">1</property>
                   </packing>
@@ -302,8 +212,8 @@
               </object>
               <packing>
                 <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
               </packing>
             </child>
           </object>
@@ -313,12 +223,81 @@
             <property name="position">1</property>
           </packing>
         </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="reset_button">
+                <property name="label" translatable="yes">Remove All Overrides</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="xalign">0.44999998807907104</property>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="reset_button-atkobject">
+                    <property name="AtkObject::accessible-name" translatable="yes">remove_all_overrides_button</property>
+                  </object>
+                </child>
+                <signal name="clicked" handler="on_reset_button_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="pack_type">end</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="apply_button">
+                <property name="label" translatable="yes">Apply</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="on_apply_button_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="pack_type">end</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="close_button">
+                <property name="label" translatable="yes">Close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="close_button-atkobject">
+                    <property name="AtkObject::accessible-name" translatable="yes">close_button</property>
+                  </object>
+                </child>
+                <signal name="clicked" handler="on_close_button_clicked" swapped="no"/>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="pack_type">end</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
       </object>
     </child>
-    <child internal-child="accessible">
-      <object class="AtkObject" id="a11y-main_window1">
-        <property name="AtkObject::accessible-name" translatable="yes">manage_repositories_dialog</property>
-      </object>
-    </child>
+    <action-widgets>
+      <action-widget response="0">close_button</action-widget>
+      <action-widget response="0">apply_button</action-widget>
+      <action-widget response="0">reset_button</action-widget>
+    </action-widgets>
   </object>
 </interface>
diff --git a/src/subscription_manager/gui/data/ui/activation_key.ui b/src/subscription_manager/gui/data/ui/activation_key.ui
index 47af425..ad96278 100644
--- a/src/subscription_manager/gui/data/ui/activation_key.ui
+++ b/src/subscription_manager/gui/data/ui/activation_key.ui
@@ -10,10 +10,11 @@
       <object class="GtkLabel" id="label1">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="xalign">0</property>
-        <property name="yalign">0.10000000149011612</property>
+        <property name="margin_bottom">8</property>
         <property name="label" translatable="yes">&lt;b&gt;Please enter the following for this system:&lt;/b&gt;</property>
         <property name="use_markup">True</property>
+        <property name="xalign">0</property>
+        <property name="yalign">0.10000000149011612</property>
       </object>
       <packing>
         <property name="expand">False</property>
@@ -22,22 +23,21 @@
       </packing>
     </child>
     <child>
-      <object class="GtkTable" id="table1">
+      <object class="GtkGrid" id="grid1">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="n_rows">3</property>
-        <property name="n_columns">2</property>
+        <property name="row_spacing">4</property>
         <child>
           <object class="GtkLabel" id="label2">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">Organization:</property>
+            <property name="ellipsize">end</property>
+            <property name="xalign">0</property>
           </object>
           <packing>
-            <property name="x_options">GTK_FILL</property>
-            <property name="y_options">GTK_FILL</property>
-            <property name="x_padding">15</property>
-            <property name="y_padding">15</property>
+            <property name="left_attach">0</property>
+            <property name="top_attach">0</property>
           </packing>
         </child>
         <child>
@@ -45,14 +45,11 @@
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">Activation Key:</property>
+            <property name="xalign">0</property>
           </object>
           <packing>
+            <property name="left_attach">0</property>
             <property name="top_attach">1</property>
-            <property name="bottom_attach">2</property>
-            <property name="x_options">GTK_FILL</property>
-            <property name="y_options">GTK_FILL</property>
-            <property name="x_padding">15</property>
-            <property name="y_padding">15</property>
           </packing>
         </child>
         <child>
@@ -60,14 +57,11 @@
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="label" translatable="yes">System Name:</property>
+            <property name="xalign">0</property>
           </object>
           <packing>
+            <property name="left_attach">0</property>
             <property name="top_attach">2</property>
-            <property name="bottom_attach">3</property>
-            <property name="x_options">GTK_FILL</property>
-            <property name="y_options">GTK_FILL</property>
-            <property name="x_padding">15</property>
-            <property name="y_padding">15</property>
           </packing>
         </child>
         <child>
@@ -75,6 +69,8 @@
             <property name="visible">True</property>
             <property name="can_focus">True</property>
             <property name="tooltip_text" translatable="yes">This must be the organization key, not the name.</property>
+            <property name="margin_left">8</property>
+            <property name="hexpand">True</property>
             <property name="invisible_char">●</property>
             <child internal-child="accessible">
               <object class="AtkObject" id="organization_entry-atkobject">
@@ -84,7 +80,7 @@
           </object>
           <packing>
             <property name="left_attach">1</property>
-            <property name="right_attach">2</property>
+            <property name="top_attach">0</property>
           </packing>
         </child>
         <child>
@@ -92,6 +88,8 @@
             <property name="visible">True</property>
             <property name="can_focus">True</property>
             <property name="tooltip_text" translatable="yes">Multiple Activation Keys can be entered by separating them with a comma or a space.</property>
+            <property name="margin_left">8</property>
+            <property name="hexpand">True</property>
             <property name="invisible_char">●</property>
             <child internal-child="accessible">
               <object class="AtkObject" id="activation_key_entry-atkobject">
@@ -101,15 +99,15 @@
           </object>
           <packing>
             <property name="left_attach">1</property>
-            <property name="right_attach">2</property>
             <property name="top_attach">1</property>
-            <property name="bottom_attach">2</property>
           </packing>
         </child>
         <child>
           <object class="GtkEntry" id="consumer_entry">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
+            <property name="margin_left">8</property>
+            <property name="hexpand">True</property>
             <property name="invisible_char">●</property>
             <child internal-child="accessible">
               <object class="AtkObject" id="consumer_entry-atkobject">
@@ -119,16 +117,13 @@
           </object>
           <packing>
             <property name="left_attach">1</property>
-            <property name="right_attach">2</property>
             <property name="top_attach">2</property>
-            <property name="bottom_attach">3</property>
           </packing>
         </child>
       </object>
       <packing>
         <property name="expand">False</property>
-        <property name="fill">False</property>
-        <property name="padding">5</property>
+        <property name="fill">True</property>
         <property name="position">1</property>
       </packing>
     </child>
diff --git a/src/subscription_manager/gui/data/ui/contract_selection.ui b/src/subscription_manager/gui/data/ui/contract_selection.ui
index cab5140..75ce373 100644
--- a/src/subscription_manager/gui/data/ui/contract_selection.ui
+++ b/src/subscription_manager/gui/data/ui/contract_selection.ui
@@ -1,33 +1,38 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.18.3 -->
 <interface>
-  <!-- interface-requires gtk+ 2.10 -->
-  <!-- interface-naming-policy toplevel-contextual -->
+  <requires lib="gtk+" version="3.0"/>
   <object class="GtkWindow" id="contract_selection_window">
+    <property name="can_focus">False</property>
     <property name="title" translatable="yes">Contract Selection</property>
     <property name="modal">True</property>
     <property name="window_position">center-on-parent</property>
     <property name="default_width">580</property>
     <property name="destroy_with_parent">True</property>
+    <property name="icon_name">subscription-manager</property>
     <property name="type_hint">dialog</property>
-    <property name="icon-name">subscription-manager</property>
     <child>
       <object class="GtkBox" id="vbox1">
-        <property name="orientation">vertical</property>
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="vexpand">True</property>
         <property name="border_width">4</property>
+        <property name="orientation">vertical</property>
         <property name="spacing">3</property>
         <child>
           <object class="GtkBox" id="vbox2">
-            <property name="orientation">vertical</property>
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="border_width">6</property>
+            <property name="orientation">vertical</property>
             <property name="spacing">3</property>
             <child>
               <object class="GtkLabel" id="label1">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
+                <property name="can_focus">False</property>
                 <property name="label" translatable="yes">&lt;b&gt;Choose the specific contract to use:&lt;/b&gt;</property>
                 <property name="use_markup">True</property>
+                <property name="xalign">0</property>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -37,153 +42,169 @@
             </child>
             <child>
               <object class="GtkSeparator" id="hseparator1">
-                <property name="orientation">horizontal</property>
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
               </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="fill">True</property>
                 <property name="position">1</property>
               </packing>
             </child>
             <child>
-              <object class="GtkAlignment" id="alignment1">
+              <object class="GtkBox" id="vbox3">
                 <property name="visible">True</property>
-                <property name="left_padding">16</property>
+                <property name="can_focus">False</property>
+                <property name="margin_left">16</property>
+                <property name="vexpand">True</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">3</property>
                 <child>
-                  <object class="GtkBox" id="vbox3">
-                    <property name="orientation">vertical</property>
+                  <object class="GtkGrid" id="grid1">
                     <property name="visible">True</property>
-                    <property name="spacing">3</property>
+                    <property name="can_focus">False</property>
+                    <property name="row_spacing">4</property>
                     <child>
-                      <object class="GtkTable" id="table1">
+                      <object class="GtkLabel" id="label2">
                         <property name="visible">True</property>
-                        <property name="n_rows">2</property>
-                        <property name="n_columns">2</property>
-                        <property name="column_spacing">5</property>
-                        <property name="row_spacing">3</property>
-                        <child>
-                          <object class="GtkLabel" id="label2">
-                            <property name="visible">True</property>
-                            <property name="xalign">1</property>
-                            <property name="yalign">0</property>
-                            <property name="label" translatable="yes">&lt;b&gt;Subscription:&lt;/b&gt;</property>
-                            <property name="use_markup">True</property>
-                          </object>
-                          <packing>
-                            <property name="x_options">GTK_FILL</property>
-                            <property name="y_options">GTK_FILL</property>
-                            <property name="x_padding">10</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="label3">
-                            <property name="visible">True</property>
-                            <property name="xalign">1</property>
-                            <property name="label" translatable="yes">&lt;b&gt;Total Contracts:&lt;/b&gt;</property>
-                            <property name="use_markup">True</property>
-                          </object>
-                          <packing>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                            <property name="x_options">GTK_FILL</property>
-                            <property name="y_options">GTK_FILL</property>
-                            <property name="x_padding">10</property>
-                            <property name="y_padding">4</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="subscription_name_label">
-                            <property name="visible">True</property>
-                            <property name="xalign">0</property>
-                          </object>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="x_options">GTK_FILL</property>
-                            <property name="y_options">GTK_FILL</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="total_contracts_label">
-                            <property name="visible">True</property>
-                            <property name="xalign">0</property>
-                          </object>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="right_attach">2</property>
-                            <property name="top_attach">1</property>
-                            <property name="bottom_attach">2</property>
-                          </packing>
-                        </child>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Subscription:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                        <property name="xalign">1</property>
+                        <property name="yalign">0</property>
                       </object>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="position">0</property>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkBox" id="hbox1">
-                        <property name="orientation">horizontal</property>
+                      <object class="GtkLabel" id="label3">
                         <property name="visible">True</property>
-                        <child>
-                          <object class="GtkLabel" id="edit_quantity_label">
-                            <property name="visible">True</property>
-                            <property name="xalign">1</property>
-                            <property name="yalign">1</property>
-                            <property name="label" translatable="yes">* Click to Change Quantity</property>
-                            <property name="use_markup">True</property>
-                          </object>
-                          <packing>
-                            <property name="position">0</property>
-                          </packing>
-                        </child>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Total Contracts:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                        <property name="wrap">True</property>
+                        <property name="wrap_mode">word-char</property>
+                        <property name="xalign">1</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="subscription_name_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">16</property>
+                        <property name="hexpand">True</property>
+                        <property name="wrap">True</property>
+                        <property name="wrap_mode">word-char</property>
+                        <property name="xalign">0</property>
                       </object>
                       <packing>
-                        <property name="position">1</property>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkScrolledWindow" id="scrolledwindow1">
+                      <object class="GtkLabel" id="total_contracts_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">16</property>
+                        <property name="hexpand">True</property>
+                        <property name="xalign">0</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkBox" id="hbox1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <child>
+                      <object class="GtkLabel" id="edit_quantity_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">* Click to Change Quantity</property>
+                        <property name="use_markup">True</property>
+                        <property name="xalign">1</property>
+                        <property name="yalign">1</property>
+                      </object>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">True</property>
+                        <property name="pack_type">end</property>
+                        <property name="position">0</property>
+                      </packing>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkScrolledWindow" id="scrolledwindow1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
+                    <property name="shadow_type">etched-in</property>
+                    <child>
+                      <object class="GtkTreeView" id="contract_selection_treeview">
+                        <property name="width_request">450</property>
+                        <property name="height_request">200</property>
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
-                        <property name="hscrollbar_policy">automatic</property>
-                        <property name="vscrollbar_policy">automatic</property>
-                        <property name="shadow_type">etched-in</property>
-                        <child>
-                          <object class="GtkTreeView" id="contract_selection_treeview">
-                            <property name="width_request">450</property>
-                            <property name="height_request">200</property>
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="rules_hint">True</property>
-                            <child internal-child="accessible">
-                              <object class="AtkObject" id="a11y-contract_selection_treeview1">
-                                <property name="AtkObject::accessible-name" translatable="yes">SLA Selection Table</property>
-                              </object>
-                            </child>
+                        <property name="vexpand">True</property>
+                        <property name="rules_hint">True</property>
+                        <child internal-child="selection">
+                          <object class="GtkTreeSelection" id="treeview-selection"/>
+                        </child>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="contract_selection_treeview-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes">SLA Selection Table</property>
                           </object>
                         </child>
                       </object>
-                      <packing>
-                        <property name="position">2</property>
-                      </packing>
                     </child>
                   </object>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
                 </child>
               </object>
               <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
                 <property name="position">2</property>
               </packing>
             </child>
           </object>
           <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
             <property name="position">0</property>
           </packing>
         </child>
         <child>
           <object class="GtkButtonBox" id="hbuttonbox1">
-            <property name="orientation">horizontal</property>
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="border_width">6</property>
             <property name="spacing">5</property>
             <property name="layout_style">end</property>
@@ -194,7 +215,7 @@
                 <property name="can_focus">False</property>
                 <property name="receives_default">False</property>
                 <property name="use_stock">True</property>
-                <signal handler="on_cancel_button_clicked" name="clicked"/>
+                <signal name="clicked" handler="on_cancel_button_clicked" swapped="no"/>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -208,7 +229,7 @@
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">False</property>
-                <signal handler="on_subscribe_button_clicked" name="clicked"/>
+                <signal name="clicked" handler="on_subscribe_button_clicked" swapped="no"/>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -219,6 +240,8 @@
           </object>
           <packing>
             <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
             <property name="position">1</property>
           </packing>
         </child>
diff --git a/src/subscription_manager/gui/data/ui/done_box.ui b/src/subscription_manager/gui/data/ui/done_box.ui
index eb5f679..6fdf405 100644
--- a/src/subscription_manager/gui/data/ui/done_box.ui
+++ b/src/subscription_manager/gui/data/ui/done_box.ui
@@ -10,10 +10,13 @@
       <object class="GtkLabel" id="label1">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="label" translatable="yes">Done!</property>
+        <property name="label" translatable="yes">Registration with Red Hat Subscription Management is Done!</property>
+        <attributes>
+          <attribute name="weight" value="bold"/>
+        </attributes>
       </object>
       <packing>
-        <property name="expand">False</property>
+        <property name="expand">True</property>
         <property name="fill">True</property>
         <property name="position">0</property>
       </packing>
diff --git a/src/subscription_manager/gui/data/ui/factsdialog.ui b/src/subscription_manager/gui/data/ui/factsdialog.ui
index 886a026..c1a2f3a 100644
--- a/src/subscription_manager/gui/data/ui/factsdialog.ui
+++ b/src/subscription_manager/gui/data/ui/factsdialog.ui
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.18.3 -->
 <interface>
-  <requires lib="gtk+" version="2.24"/>
-  <!-- interface-naming-policy project-wide -->
+  <requires lib="gtk+" version="3.0"/>
   <object class="GtkWindow" id="system_facts_dialog">
     <property name="width_request">500</property>
     <property name="height_request">400</property>
@@ -14,39 +14,42 @@
     <signal name="delete-event" handler="on_system_facts_dialog_delete_event" swapped="no"/>
     <child>
       <object class="GtkBox" id="dialog-vbox2">
-        <property name="orientation">vertical</property>
         <property name="visible">True</property>
         <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
         <property name="spacing">2</property>
         <child>
           <object class="GtkBox" id="vbox2">
-            <property name="orientation">vertical</property>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
             <child>
-              <object class="GtkTable" id="table2">
+              <object class="GtkGrid" id="grid1">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="n_rows">3</property>
-                <property name="n_columns">2</property>
                 <child>
                   <object class="GtkLabel" id="system_id_title">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
                     <property name="xpad">10</property>
                     <property name="label" translatable="yes">System Identity:</property>
+                    <property name="xalign">0</property>
+                    <attributes>
+                      <attribute name="weight" value="bold"/>
+                    </attributes>
                   </object>
                   <packing>
-                    <property name="x_options">GTK_FILL</property>
+                    <property name="left_attach">0</property>
+                    <property name="top_attach">0</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkLabel" id="system_id_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
+                    <property name="hexpand">True</property>
                     <property name="selectable">True</property>
+                    <property name="xalign">0</property>
                     <child internal-child="accessible">
                       <object class="AtkObject" id="system_id_label-atkobject">
                         <property name="AtkObject::accessible-name" translatable="yes">System Identity Value</property>
@@ -55,29 +58,33 @@
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
+                    <property name="top_attach">0</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkLabel" id="owner_title">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
                     <property name="xpad">10</property>
                     <property name="label" translatable="yes">Organization:</property>
+                    <property name="xalign">0</property>
+                    <attributes>
+                      <attribute name="weight" value="bold"/>
+                    </attributes>
                   </object>
                   <packing>
+                    <property name="left_attach">0</property>
                     <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
-                    <property name="x_options">GTK_FILL</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkLabel" id="owner_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
+                    <property name="hexpand">True</property>
                     <property name="selectable">True</property>
+                    <property name="ellipsize">end</property>
+                    <property name="xalign">0</property>
                     <child internal-child="accessible">
                       <object class="AtkObject" id="owner_label-atkobject">
                         <property name="AtkObject::accessible-name" translatable="yes">Organization Value</property>
@@ -86,31 +93,32 @@
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
                     <property name="top_attach">1</property>
-                    <property name="bottom_attach">2</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkLabel" id="environment_title">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
                     <property name="xpad">10</property>
                     <property name="label" translatable="yes">Environment:</property>
+                    <property name="xalign">0</property>
+                    <attributes>
+                      <attribute name="weight" value="bold"/>
+                    </attributes>
                   </object>
                   <packing>
+                    <property name="left_attach">0</property>
                     <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
-                    <property name="x_options">GTK_FILL</property>
                   </packing>
                 </child>
                 <child>
                   <object class="GtkLabel" id="environment_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
+                    <property name="hexpand">True</property>
                     <property name="selectable">True</property>
+                    <property name="xalign">0</property>
                     <child internal-child="accessible">
                       <object class="AtkObject" id="environment_label-atkobject">
                         <property name="AtkObject::accessible-name" translatable="yes">Environment</property>
@@ -119,29 +127,24 @@
                   </object>
                   <packing>
                     <property name="left_attach">1</property>
-                    <property name="right_attach">2</property>
                     <property name="top_attach">2</property>
-                    <property name="bottom_attach">3</property>
                   </packing>
                 </child>
               </object>
               <packing>
                 <property name="expand">False</property>
-                <property name="fill">False</property>
+                <property name="fill">True</property>
                 <property name="position">0</property>
               </packing>
             </child>
             <child>
               <object class="GtkBox" id="hbox1">
-                <property name="orientation">horizontal</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <child>
                   <object class="GtkScrolledWindow" id="scrolledwindow2">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
-                    <property name="hscrollbar_policy">automatic</property>
-                    <property name="vscrollbar_policy">automatic</property>
                     <property name="shadow_type">etched-in</property>
                     <child>
                       <object class="GtkTreeView" id="facts_view">
@@ -149,6 +152,9 @@
                         <property name="can_focus">True</property>
                         <property name="has_focus">True</property>
                         <property name="rules_hint">True</property>
+                        <child internal-child="selection">
+                          <object class="GtkTreeSelection" id="treeview-selection1"/>
+                        </child>
                         <child internal-child="accessible">
                           <object class="AtkObject" id="facts_view-atkobject">
                             <property name="AtkObject::accessible-name" translatable="yes">facts_view</property>
@@ -184,21 +190,24 @@
         </child>
         <child>
           <object class="GtkBox" id="hbox2">
-            <property name="orientation">horizontal</property>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
+            <property name="orientation">vertical</property>
             <child>
               <object class="GtkBox" id="vbox3">
-                <property name="orientation">vertical</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
+                <property name="margin_bottom">8</property>
                 <child>
                   <object class="GtkLabel" id="last_update_title">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
                     <property name="xpad">10</property>
                     <property name="label" translatable="yes">Last Update:</property>
+                    <property name="xalign">0</property>
+                    <attributes>
+                      <attribute name="weight" value="bold"/>
+                    </attributes>
                   </object>
                   <packing>
                     <property name="expand">False</property>
@@ -210,8 +219,8 @@
                   <object class="GtkLabel" id="last_update_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
                     <property name="xpad">10</property>
+                    <property name="xalign">0</property>
                     <child internal-child="accessible">
                       <object class="AtkObject" id="last_update_label-atkobject">
                         <property name="AtkObject::accessible-name" translatable="yes">Update Time</property>
@@ -226,48 +235,49 @@
                 </child>
               </object>
               <packing>
-                <property name="expand">True</property>
+                <property name="expand">False</property>
                 <property name="fill">True</property>
                 <property name="position">0</property>
               </packing>
             </child>
             <child>
               <object class="GtkBox" id="hbox4">
-                <property name="orientation">horizontal</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <child>
-                  <object class="GtkButton" id="update_button">
-                    <property name="label" translatable="yes">Update Facts</property>
+                  <object class="GtkButton" id="close_button">
+                    <property name="label" translatable="yes">Close</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
-                    <signal name="clicked" handler="on_facts_update_button_clicked" swapped="no"/>
+                    <signal name="clicked" handler="on_close_button_clicked" swapped="no"/>
+                    <child internal-child="accessible">
+                      <object class="AtkObject" id="close_button-atkobject">
+                        <property name="AtkObject::accessible-name" translatable="yes">close_button</property>
+                      </object>
+                    </child>
                   </object>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">False</property>
                     <property name="padding">3</property>
+                    <property name="pack_type">end</property>
                     <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkButton" id="close_button">
-                    <property name="label" translatable="yes">Close</property>
+                  <object class="GtkButton" id="update_button">
+                    <property name="label" translatable="yes">Update Facts</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
-                    <child internal-child="accessible">
-                      <object class="AtkObject" id="close_button-atkobject">
-                        <property name="AtkObject::accessible-name" translatable="yes">close_button</property>
-                      </object>
-                    </child>
-                    <signal name="clicked" handler="on_close_button_clicked" swapped="no"/>
+                    <signal name="clicked" handler="on_facts_update_button_clicked" swapped="no"/>
                   </object>
                   <packing>
                     <property name="expand">False</property>
                     <property name="fill">False</property>
                     <property name="padding">3</property>
+                    <property name="pack_type">end</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
@@ -283,7 +293,6 @@
           <packing>
             <property name="expand">False</property>
             <property name="fill">True</property>
-            <property name="padding">12</property>
             <property name="position">1</property>
           </packing>
         </child>
diff --git a/src/subscription_manager/gui/data/ui/filters.ui b/src/subscription_manager/gui/data/ui/filters.ui
index 0a7989a..a6529e8 100644
--- a/src/subscription_manager/gui/data/ui/filters.ui
+++ b/src/subscription_manager/gui/data/ui/filters.ui
@@ -5,7 +5,7 @@
   <object class="GtkWindow" id="filter_product_window">
     <property name="title" translatable="yes">Filter Options</property>
     <property name="icon-name">subscription-manager</property>
-    <property name="type_hint">menu</property>
+    <property name="type_hint">dialog</property>
     <signal handler="on_filter_product_window_delete_event" name="delete_event"/>
     <child>
       <object class="GtkAlignment" id="alignment1">
diff --git a/src/subscription_manager/gui/data/ui/installed.ui b/src/subscription_manager/gui/data/ui/installed.ui
index 28d0104..a38737c 100644
--- a/src/subscription_manager/gui/data/ui/installed.ui
+++ b/src/subscription_manager/gui/data/ui/installed.ui
@@ -2,6 +2,23 @@
 <interface>
   <!-- interface-requires gtk+ 2.10 -->
   <!-- interface-naming-policy project-wide -->
+
+  <object class="GtkAdjustment" id="scrolled_window_3_h_adjustment">
+    <property name="upper">0</property>
+    <property name="lower">0</property>
+    <property name="value">0</property>
+    <property name="step_increment">0</property>
+    <property name="page_increment">0</property>
+    <property name="page_size">0</property>
+  </object>
+  <object class="GtkAdjustment" id="scrolled_window_3_v_adjustment">
+    <property name="upper">0</property>
+    <property name="lower">0</property>
+    <property name="value">0</property>
+    <property name="step_increment">0</property>
+    <property name="page_increment">0</property>
+    <property name="page_size">0</property>
+  </object>
   <object class="GtkWindow" id="window1">
     <property name="can_focus">False</property>
     <property name="icon_name">subscription-manager</property>
@@ -191,8 +208,8 @@
                               <object class="GtkScrolledWindow" id="scrolledwindow3">
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="hadjustment">0 0 396 39.600000000000001 356.40000000000003 396</property>
-                                <property name="vadjustment">37 0 116 7.9000000000000004 71.100000000000009 79</property>
+                                <property name="hadjustment">scrolled_window_3_h_adjustment</property>
+                                <property name="vadjustment">scrolled_window_3_v_adjustment</property>
                                 <property name="hscrollbar_policy">automatic</property>
                                 <property name="vscrollbar_policy">automatic</property>
                                 <property name="shadow_type">in</property>
diff --git a/src/subscription_manager/gui/data/ui/networkConfig.ui b/src/subscription_manager/gui/data/ui/networkConfig.ui
index f50531a..d88b97a 100644
--- a/src/subscription_manager/gui/data/ui/networkConfig.ui
+++ b/src/subscription_manager/gui/data/ui/networkConfig.ui
@@ -1,30 +1,104 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.18.3 -->
 <interface>
-  <!-- interface-requires gtk+ 2.10 -->
-  <!-- interface-naming-policy project-wide -->
+  <requires lib="gtk+" version="3.0"/>
   <object class="GtkDialog" id="networkConfigDialog">
+    <property name="can_focus">False</property>
     <property name="title" translatable="yes">Proxy Configuration</property>
     <property name="modal">True</property>
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
+    <property name="icon_name">subscription-manager</property>
     <property name="type_hint">dialog</property>
-    <property name="icon-name">subscription-manager</property>
     <child internal-child="vbox">
       <object class="GtkBox" id="dialog-vbox1">
-        <property name="orientation">vertical</property>
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="testConnectionButton">
+                <property name="label" translatable="yes">_Test Connection</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="testConnectionButton-atkobject">
+                    <property name="AtkObject::accessible-name" translatable="yes">Test Connection Button</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="cancelButton">
+                <property name="label" translatable="yes">_Cancel</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_underline">True</property>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="cancelButton-atkobject">
+                    <property name="AtkObject::accessible-name" translatable="yes">Cancel Button</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="saveButton">
+                <property name="label" translatable="yes">_Save</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="saveButton-atkobject">
+                    <property name="AtkObject::accessible-name" translatable="yes">Save Button</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
         <child>
           <object class="GtkBox" id="vbox4">
-            <property name="orientation">vertical</property>
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <property name="border_width">10</property>
+            <property name="orientation">vertical</property>
             <property name="spacing">10</property>
             <child>
               <object class="GtkLabel" id="label18">
                 <property name="visible">True</property>
-                <property name="xalign">0</property>
+                <property name="can_focus">False</property>
                 <property name="label" translatable="yes">&lt;b&gt;HTTP Proxy&lt;/b&gt;</property>
                 <property name="use_markup">True</property>
+                <property name="xalign">0</property>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -33,317 +107,246 @@
               </packing>
             </child>
             <child>
-              <object class="GtkAlignment" id="alignment5">
+              <object class="GtkBox" id="vbox5">
                 <property name="visible">True</property>
-                <property name="left_padding">20</property>
+                <property name="can_focus">False</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">10</property>
                 <child>
-                  <object class="GtkBox" id="vbox5">
-                    <property name="orientation">vertical</property>
+                  <object class="GtkCheckButton" id="enableProxyButton">
+                    <property name="label" translatable="yes">I would like to connect via an _HTTP proxy.</property>
                     <property name="visible">True</property>
-                    <property name="spacing">10</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                    <child internal-child="accessible">
+                      <object class="AtkObject" id="enableProxyButton-atkobject">
+                        <property name="AtkObject::accessible-name" translatable="yes">Proxy Checkbox</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkGrid" id="grid1">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_left">24</property>
+                    <property name="row_spacing">8</property>
                     <child>
-                      <object class="GtkCheckButton" id="enableProxyButton">
-                        <property name="label" translatable="yes">I would like to connect via an _HTTP proxy.</property>
+                      <object class="GtkLabel" id="label19">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">_Proxy Location:</property>
                         <property name="use_underline">True</property>
-                        <property name="draw_indicator">True</property>
+                        <property name="mnemonic_widget">proxyEntry</property>
+                        <property name="xalign">0</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="proxyEntry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">True</property>
+                        <property name="tooltip_text" translatable="yes">Enter in the format hostname(:port)</property>
+                        <property name="hexpand">True</property>
                         <child internal-child="accessible">
-                          <object class="AtkObject" id="a11y-enableProxyButton1">
-                            <property name="AtkObject::accessible-name" translatable="yes">Proxy Checkbox</property>
+                          <object class="AtkObject" id="proxyEntry-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes">Proxy Location Text</property>
                           </object>
                         </child>
                       </object>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="position">0</property>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkAlignment" id="alignment11">
+                      <object class="GtkBox" id="hbox6">
                         <property name="visible">True</property>
-                        <property name="left_padding">22</property>
+                        <property name="can_focus">False</property>
+                        <property name="spacing">5</property>
+                        <child>
+                          <object class="GtkImage" id="image16">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="stock">gtk-info</property>
+                          </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
                         <child>
-                          <object class="GtkTable" id="table6">
+                          <object class="GtkLabel" id="label20">
                             <property name="visible">True</property>
-                            <property name="n_rows">2</property>
-                            <property name="n_columns">2</property>
-                            <property name="column_spacing">6</property>
-                            <property name="row_spacing">6</property>
-                            <child>
-                              <object class="GtkBox" id="hbox6">
-                                <property name="orientation">horizontal</property>
-                                <property name="visible">True</property>
-                                <property name="spacing">5</property>
-                                <child>
-                                  <object class="GtkImage" id="image16">
-                                    <property name="visible">True</property>
-                                    <property name="stock">gtk-info</property>
-                                  </object>
-                                  <packing>
-                                    <property name="expand">False</property>
-                                    <property name="position">0</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <object class="GtkLabel" id="label20">
-                                    <property name="visible">True</property>
-                                    <property name="xalign">0</property>
-                                    <property name="label" translatable="yes">&lt;small&gt;&lt;b&gt;Example:&lt;/b&gt; proxy.example.com:3128&lt;/small&gt;</property>
-                                    <property name="use_markup">True</property>
-                                  </object>
-                                  <packing>
-                                    <property name="position">1</property>
-                                  </packing>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="label19">
-                                <property name="visible">True</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">_Proxy Location:</property>
-                                <property name="use_underline">True</property>
-                                <property name="mnemonic_widget">proxyEntry</property>
-                              </object>
-                              <packing>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options">GTK_FILL</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkEntry" id="proxyEntry">
-                                <property name="visible">True</property>
-                                <property name="sensitive">False</property>
-                                <property name="can_focus">True</property>
-                                <property name="tooltip-text" translatable="yes">Enter in the format hostname(:port)</property>
-                                <child internal-child="accessible">
-                                  <object class="AtkObject" id="a11y-proxyEntry1">
-                                    <property name="AtkObject::accessible-name" translatable="yes">Proxy Location Text</property>
-                                  </object>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options">GTK_FILL</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <placeholder/>
-                            </child>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">&lt;small&gt;&lt;b&gt;Example:&lt;/b&gt; proxy.example.com:3128&lt;/small&gt;</property>
+                            <property name="use_markup">True</property>
+                            <property name="xalign">0</property>
                           </object>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
                         </child>
                       </object>
                       <packing>
-                        <property name="position">1</property>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">1</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkCheckButton" id="enableProxyAuthButton">
-                        <property name="label" translatable="yes">Use Au_thentication with HTTP Proxy:</property>
+                      <placeholder/>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkCheckButton" id="enableProxyAuthButton">
+                    <property name="label" translatable="yes">Use Au_thentication with HTTP Proxy:</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="xalign">0</property>
+                    <property name="draw_indicator">True</property>
+                    <child internal-child="accessible">
+                      <object class="AtkObject" id="enableProxyAuthButton-atkobject">
+                        <property name="AtkObject::accessible-name" translatable="yes">Authentication Checkbox</property>
+                      </object>
+                    </child>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkGrid" id="grid2">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_left">24</property>
+                    <property name="row_spacing">8</property>
+                    <child>
+                      <object class="GtkLabel" id="usernameLabel">
                         <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Proxy _Username:</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">proxyUserEntry</property>
+                        <property name="xalign">0</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="passwordLabel">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Proxy P_assword:</property>
                         <property name="use_underline">True</property>
-                        <property name="draw_indicator">True</property>
+                        <property name="mnemonic_widget">proxyPasswordEntry</property>
+                        <property name="xalign">0</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkEntry" id="proxyUserEntry">
+                        <property name="visible">True</property>
+                        <property name="sensitive">False</property>
+                        <property name="can_focus">True</property>
+                        <property name="margin_left">8</property>
+                        <property name="hexpand">True</property>
                         <child internal-child="accessible">
-                          <object class="AtkObject" id="a11y-enableProxyAuthButton1">
-                            <property name="AtkObject::accessible-name" translatable="yes">Authentication Checkbox</property>
+                          <object class="AtkObject" id="proxyUserEntry-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes">Username Text</property>
                           </object>
                         </child>
                       </object>
                       <packing>
-                        <property name="expand">False</property>
-                        <property name="position">2</property>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkAlignment" id="alignment13">
+                      <object class="GtkEntry" id="proxyPasswordEntry">
                         <property name="visible">True</property>
-                        <property name="left_padding">22</property>
-                        <child>
-                          <object class="GtkTable" id="table7">
-                            <property name="visible">True</property>
-                            <property name="n_rows">2</property>
-                            <property name="n_columns">2</property>
-                            <property name="column_spacing">6</property>
-                            <property name="row_spacing">6</property>
-                            <child>
-                              <object class="GtkLabel" id="usernameLabel">
-                                <property name="visible">True</property>
-                                <property name="sensitive">False</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">Proxy _Username:</property>
-                                <property name="use_underline">True</property>
-                                <property name="mnemonic_widget">proxyUserEntry</property>
-                              </object>
-                              <packing>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options">GTK_FILL</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkLabel" id="passwordLabel">
-                                <property name="visible">True</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">Proxy P_assword:</property>
-                                <property name="use_underline">True</property>
-                                <property name="mnemonic_widget">proxyPasswordEntry</property>
-                              </object>
-                              <packing>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options">GTK_FILL</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkEntry" id="proxyUserEntry">
-                                <property name="visible">True</property>
-                                <property name="sensitive">False</property>
-                                <property name="can_focus">True</property>
-                                <child internal-child="accessible">
-                                  <object class="AtkObject" id="a11y-proxyUserEntry1">
-                                    <property name="AtkObject::accessible-name" translatable="yes">Username Text</property>
-                                  </object>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options">GTK_FILL</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <object class="GtkEntry" id="proxyPasswordEntry">
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="visibility">False</property>
-                                <property name="invisible_char">&#x2022;</property>
-                                <child internal-child="accessible">
-                                  <object class="AtkObject" id="a11y-proxyPasswordEntry1">
-                                    <property name="AtkObject::accessible-name" translatable="yes">Password Text</property>
-                                  </object>
-                                </child>
-                              </object>
-                              <packing>
-                                <property name="left_attach">1</property>
-                                <property name="right_attach">2</property>
-                                <property name="top_attach">1</property>
-                                <property name="bottom_attach">2</property>
-                                <property name="y_options">GTK_FILL</property>
-                              </packing>
-                            </child>
+                        <property name="can_focus">True</property>
+                        <property name="margin_left">8</property>
+                        <property name="hexpand">True</property>
+                        <property name="visibility">False</property>
+                        <property name="invisible_char">•</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="proxyPasswordEntry-atkobject">
+                            <property name="AtkObject::accessible-name" translatable="yes">Password Text</property>
                           </object>
                         </child>
                       </object>
                       <packing>
-                        <property name="position">3</property>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">1</property>
                       </packing>
                     </child>
                   </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">3</property>
+                  </packing>
                 </child>
               </object>
               <packing>
                 <property name="expand">False</property>
+                <property name="fill">True</property>
                 <property name="position">1</property>
               </packing>
             </child>
           </object>
           <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
             <property name="position">1</property>
           </packing>
         </child>
         <child>
           <object class="GtkLabel" id="connectionStatusLabel">
             <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="margin_bottom">8</property>
             <child internal-child="accessible">
-              <object class="AtkObject" id="a11y-connectionStatusLabel1">
+              <object class="AtkObject" id="connectionStatusLabel-atkobject">
                 <property name="AtkObject::accessible-name" translatable="yes">connectionStatusLabel</property>
               </object>
             </child>
           </object>
           <packing>
-            <property name="position">3</property>
-          </packing>
-        </child>
-        <child internal-child="action_area">
-          <object class="GtkButtonBox" id="dialog-action_area1">
-            <property name="orientation">horizontal</property>
-            <property name="visible">True</property>
-            <property name="layout_style">end</property>
-            <child>
-              <object class="GtkButton" id="cancelButton">
-                <property name="label" translatable="yes">_Cancel</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <child internal-child="accessible">
-                  <object class="AtkObject" id="a11y-cancelButton1">
-                    <property name="AtkObject::accessible-name" translatable="yes">Cancel Button</property>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="saveButton">
-                <property name="label" translatable="yes">_Save</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_underline">True</property>
-                <child internal-child="accessible">
-                  <object class="AtkObject" id="a11y-saveButton1">
-                    <property name="AtkObject::accessible-name" translatable="yes">Save Button</property>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton" id="testConnectionButton">
-                <property name="label" translatable="yes">_Test Connection</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="use_underline">True</property>
-                <child internal-child="accessible">
-                  <object class="AtkObject" id="a11y-testConnectionButton1">
-                    <property name="AtkObject::accessible-name" translatable="yes">Test Connection Button</property>
-                  </object>
-                </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">end</property>
-            <property name="position">0</property>
+            <property name="fill">True</property>
+            <property name="position">3</property>
           </packing>
         </child>
       </object>
diff --git a/src/subscription_manager/gui/data/ui/organization.ui b/src/subscription_manager/gui/data/ui/organization.ui
index 2ece2a7..06dd501 100644
--- a/src/subscription_manager/gui/data/ui/organization.ui
+++ b/src/subscription_manager/gui/data/ui/organization.ui
@@ -5,7 +5,7 @@
   <object class="GtkBox" id="container">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="valign">start</property>
+    <property name="vexpand">True</property>
     <property name="border_width">25</property>
     <property name="orientation">vertical</property>
     <property name="spacing">7</property>
@@ -13,9 +13,9 @@
       <object class="GtkLabel" id="org_selection_label">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="xalign">0</property>
         <property name="label" translatable="yes">&lt;b&gt;Organization Selection&lt;/b&gt;</property>
         <property name="use_markup">True</property>
+        <property name="xalign">0</property>
         <child internal-child="accessible">
           <object class="AtkObject" id="org_selection_label-atkobject">
             <property name="AtkObject::accessible-name" translatable="yes">org_selection_label</property>
@@ -38,8 +38,8 @@
           <object class="GtkTreeView" id="owner_treeview">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
-            <property name="valign">start</property>
             <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
             <child internal-child="selection">
               <object class="GtkTreeSelection" id="treeview-selection1"/>
             </child>
diff --git a/src/subscription_manager/gui/data/ui/registration.ui b/src/subscription_manager/gui/data/ui/registration.ui
index 7c7bcf5..31baac9 100644
--- a/src/subscription_manager/gui/data/ui/registration.ui
+++ b/src/subscription_manager/gui/data/ui/registration.ui
@@ -18,13 +18,15 @@
       <object class="GtkBox" id="dialog_vbox6">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
+        <property name="halign">baseline</property>
+        <property name="valign">start</property>
         <property name="orientation">vertical</property>
         <property name="spacing">2</property>
         <child internal-child="action_area">
           <object class="GtkButtonBox" id="dialog-action_area6">
-            <property name="orientation">horizontal</property>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
+            <property name="valign">start</property>
             <property name="layout_style">end</property>
             <child>
               <object class="GtkButton" id="cancel_button">
@@ -79,7 +81,6 @@
           <packing>
             <property name="expand">False</property>
             <property name="fill">False</property>
-            <property name="pack_type">end</property>
             <property name="position">0</property>
           </packing>
         </child>
@@ -87,22 +88,23 @@
           <object class="GtkNotebook" id="register_notebook">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
+            <property name="valign">start</property>
             <property name="show_tabs">False</property>
             <property name="show_border">False</property>
             <child>
               <object class="GtkBox" id="progressVbox">
-                <property name="orientation">vertical</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="border_width">25</property>
+                <property name="orientation">vertical</property>
                 <property name="spacing">7</property>
                 <child>
                   <object class="GtkLabel" id="progress_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
                     <property name="label" translatable="yes">&lt;b&gt;Registering&lt;/b&gt;</property>
                     <property name="use_markup">True</property>
+                    <property name="xalign">0</property>
                     <child internal-child="accessible">
                       <object class="AtkObject" id="progress_label-atkobject">
                         <property name="AtkObject::accessible-name" translatable="yes">progress_label</property>
@@ -128,7 +130,7 @@
                   </object>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="fill">True</property>
+                    <property name="fill">False</property>
                     <property name="position">1</property>
                   </packing>
                 </child>
@@ -136,8 +138,8 @@
                   <object class="GtkLabel" id="register_details_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
                     <property name="use_markup">True</property>
+                    <property name="xalign">0</property>
                     <child internal-child="accessible">
                       <object class="AtkObject" id="register_details_label-atkobject">
                         <property name="AtkObject::accessible-name" translatable="yes">register_details_label</property>
@@ -146,11 +148,14 @@
                   </object>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="fill">True</property>
+                    <property name="fill">False</property>
                     <property name="position">2</property>
                   </packing>
                 </child>
               </object>
+              <packing>
+                <property name="tab_fill">False</property>
+              </packing>
             </child>
             <child type="tab">
               <object class="GtkLabel" id="label2">
@@ -164,13 +169,13 @@
             </child>
           </object>
           <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
+            <property name="expand">False</property>
+            <property name="fill">False</property>
             <property name="position">1</property>
           </packing>
         </child>
         <child internal-child="accessible">
-          <object class="AtkObject" id="dialog-vbox6-atkobject">
+          <object class="AtkObject" id="dialog_vbox6-atkobject">
             <property name="AtkObject::accessible-name" translatable="yes">register_dialog_main_vbox</property>
           </object>
         </child>
diff --git a/src/subscription_manager/gui/data/ui/repositories.ui b/src/subscription_manager/gui/data/ui/repositories.ui
index cf624ed..5e39274 100644
--- a/src/subscription_manager/gui/data/ui/repositories.ui
+++ b/src/subscription_manager/gui/data/ui/repositories.ui
@@ -1,45 +1,44 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.18.3 -->
 <interface>
-  <object class="GtkTextBuffer" id="textbuffer1">
-    <property name="text">Manage the repositories your subscriptions grant you access to by enabling, disabling and overriding certain fields.</property>
-  </object>
-  <!-- interface-requires gtk+ 2.10 -->
-  <!-- interface-naming-policy project-wide -->
+  <requires lib="gtk+" version="3.0"/>
   <object class="GtkDialog" id="main_window">
     <property name="can_focus">False</property>
     <property name="border_width">5</property>
     <property name="title" translatable="yes">Manage Repositories</property>
     <property name="modal">True</property>
     <property name="window_position">center-on-parent</property>
-    <property name="default_width">600</property>
-    <property name="default_height">400</property>
+    <property name="default_width">800</property>
+    <property name="default_height">600</property>
     <property name="destroy_with_parent">True</property>
     <property name="icon_name">subscription-manager</property>
     <property name="type_hint">dialog</property>
     <property name="deletable">False</property>
-    <signal handler="on_dialog_delete_event" name="delete_event"/>
+    <signal name="delete-event" handler="on_dialog_delete_event" swapped="no"/>
     <child internal-child="vbox">
       <object class="GtkBox" id="main_container">
-        <property name="orientation">vertical</property>
         <property name="visible">True</property>
         <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
         <property name="spacing">2</property>
         <child internal-child="action_area">
           <object class="GtkButtonBox" id="dialog-action_area1">
-            <property name="orientation">horizontal</property>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
-            <property name="layout_style">edge</property>
+            <property name="valign">end</property>
+            <property name="margin_top">12</property>
+            <property name="hexpand">True</property>
+            <property name="layout_style">end</property>
             <child>
               <object class="GtkButton" id="reset_button">
                 <property name="label" translatable="yes">Remove All Overrides</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
-                <property name="xalign">0.45</property>
-                <signal handler="on_reset_button_clicked" name="clicked"/>
+                <property name="xalign">0.44999998807907104</property>
+                <signal name="clicked" handler="on_reset_button_clicked" swapped="no"/>
                 <child internal-child="accessible">
-                  <object class="AtkObject" id="a11y-reset_button1">
+                  <object class="AtkObject" id="reset_button-atkobject">
                     <property name="AtkObject::accessible-name" translatable="yes">remove_all_overrides_button</property>
                   </object>
                 </child>
@@ -51,14 +50,35 @@
               </packing>
             </child>
             <child>
+              <object class="GtkButton" id="apply_button">
+                <property name="label" translatable="yes">Apply</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <signal name="clicked" handler="on_apply_button_clicked" swapped="no"/>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="apply_button-atkobject">
+                    <property name="AtkObject::accessible-name" translatable="yes">apply_button</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">False</property>
+                <property name="padding">8</property>
+                <property name="pack_type">end</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+            <child>
               <object class="GtkButton" id="close_button">
                 <property name="label" translatable="yes">Close</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
-                <signal handler="on_close_button_clicked" name="clicked"/>
+                <signal name="clicked" handler="on_close_button_clicked" swapped="no"/>
                 <child internal-child="accessible">
-                  <object class="AtkObject" id="a11y-close_button1">
+                  <object class="AtkObject" id="close_button-atkobject">
                     <property name="AtkObject::accessible-name" translatable="yes">close_button</property>
                   </object>
                 </child>
@@ -66,44 +86,50 @@
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">False</property>
-                <property name="position">1</property>
+                <property name="pack_type">end</property>
+                <property name="position">2</property>
               </packing>
             </child>
           </object>
           <packing>
             <property name="expand">False</property>
-            <property name="fill">False</property>
+            <property name="fill">True</property>
             <property name="pack_type">end</property>
             <property name="position">0</property>
           </packing>
         </child>
         <child>
-          <object class="GtkBox" id="vbox1">
-            <property name="orientation">vertical</property>
+          <object class="GtkBox" id="main_content_container">
+            <property name="name">main_content_container</property>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
+            <property name="vexpand">True</property>
+            <property name="orientation">vertical</property>
             <child>
-              <object class="GtkTextView" id="description_text">
+              <object class="GtkLabel" id="description_text">
                 <property name="visible">True</property>
-                <property name="sensitive">False</property>
-                <property name="can_focus">True</property>
-                <property name="editable">False</property>
-                <property name="wrap_mode">word</property>
-                <property name="buffer">textbuffer1</property>
+                <property name="can_focus">False</property>
+                <property name="margin_bottom">12</property>
+                <property name="label" translatable="yes">Manage the repositories your subscriptions grant you access to by enabling, disabling and overriding certain fields.</property>
+                <property name="wrap">True</property>
+                <property name="xalign">0</property>
+                <attributes>
+                  <attribute name="weight" value="bold"/>
+                </attributes>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">True</property>
-                <property name="padding">6</property>
                 <property name="position">0</property>
               </packing>
             </child>
             <child>
               <object class="GtkScrolledWindow" id="scrolledwindow">
+                <property name="height_request">-1</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="hscrollbar_policy">automatic</property>
-                <property name="vscrollbar_policy">automatic</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
               </object>
               <packing>
                 <property name="expand">True</property>
@@ -113,185 +139,153 @@
             </child>
             <child>
               <object class="GtkBox" id="details_vbox">
-                <property name="orientation">vertical</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
+                <property name="orientation">vertical</property>
                 <child>
                   <object class="GtkLabel" id="label2">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="xalign">0</property>
+                    <property name="margin_top">6</property>
                     <property name="ypad">3</property>
                     <property name="label" translatable="yes">&lt;b&gt;Repository Details&lt;/b&gt;</property>
                     <property name="use_markup">True</property>
+                    <property name="ellipsize">start</property>
+                    <property name="xalign">0</property>
                   </object>
                   <packing>
                     <property name="expand">False</property>
-                    <property name="fill">False</property>
+                    <property name="fill">True</property>
                     <property name="position">0</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkFrame" id="frame1">
-                    <property name="height_request">96</property>
+                  <object class="GtkGrid" id="grid1">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="shadow_type">none</property>
+                    <property name="valign">end</property>
+                    <property name="vexpand">False</property>
                     <child>
-                      <object class="GtkAlignment" id="alignment1">
+                      <object class="GtkLabel" id="name_label">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Name:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="base_url_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Base URL:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="other_overrides_label">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">&lt;b&gt;Other Overrides:&lt;/b&gt;</property>
+                        <property name="use_markup">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkScrolledWindow" id="scrolledwindow1">
+                        <property name="height_request">116</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="margin_left">6</property>
+                        <property name="margin_top">3</property>
+                        <property name="margin_bottom">3</property>
+                        <property name="shadow_type">in</property>
                         <child>
-                          <object class="GtkScrolledWindow" id="scrolledwindow2">
+                          <object class="GtkTreeView" id="other_overrides_view">
+                            <property name="height_request">80</property>
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
-                            <property name="hscrollbar_policy">automatic</property>
-                            <property name="vscrollbar_policy">automatic</property>
-                            <property name="shadow_type">in</property>
-                            <child>
-                              <object class="GtkViewport" id="viewport2">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="resize_mode">queue</property>
-                                <property name="vadjustment">0 0 1 0.10000000000000001 0.90000000000000002 1</property>
-                                <property name="shadow_type">none</property>
-                                <child>
-                                  <object class="GtkTable" id="repo_data_table">
-                                    <property name="visible">True</property>
-                                    <property name="can_focus">False</property>
-                                    <property name="n_rows">2</property>
-                                    <property name="n_columns">3</property>
-                                    <property name="column_spacing">3</property>
-                                    <child>
-                                      <object class="GtkLabel" id="name_label">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">&lt;b&gt;Name:&lt;/b&gt;</property>
-                                        <property name="use_markup">True</property>
-                                      </object>
-                                      <packing>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                        <property name="x_padding">4</property>
-                                        <property name="y_padding">4</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkTextView" id="name_text">
-                                        <property name="visible">True</property>
-                                        <property name="sensitive">False</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="pixels_above_lines">5</property>
-                                        <property name="editable">False</property>
-                                        <property name="left_margin">10</property>
-                                        <property name="cursor_visible">False</property>
-                                        <child internal-child="accessible">
-                                          <object class="AtkObject" id="a11y-name_text1">
-                                            <property name="AtkObject::accessible-name" translatable="yes">Subscription Text</property>
-                                          </object>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="base_url_label">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">&lt;b&gt;Base URL:&lt;/b&gt;</property>
-                                        <property name="use_markup">True</property>
-                                      </object>
-                                      <packing>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                        <property name="x_padding">4</property>
-                                        <property name="y_padding">4</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkTextView" id="baseurl_text">
-                                        <property name="visible">True</property>
-                                        <property name="sensitive">False</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="pixels_above_lines">5</property>
-                                        <property name="editable">False</property>
-                                        <property name="wrap_mode">none</property>
-                                        <property name="left_margin">10</property>
-                                        <property name="cursor_visible">False</property>
-                                        <child internal-child="accessible">
-                                          <object class="AtkObject" id="a11y-baseurl_text1">
-                                            <property name="AtkObject::accessible-name" translatable="yes">SKU Text</property>
-                                          </object>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">1</property>
-                                        <property name="bottom_attach">2</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkLabel" id="other_overrides_label">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="yalign">0</property>
-                                        <property name="label" translatable="yes">&lt;b&gt;Other Overrides:&lt;/b&gt;</property>
-                                        <property name="use_markup">True</property>
-                                      </object>
-                                      <packing>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                        <property name="x_options">GTK_FILL</property>
-                                        <property name="y_options">GTK_FILL</property>
-                                        <property name="x_padding">4</property>
-                                        <property name="y_padding">4</property>
-                                      </packing>
-                                    </child>
-                                    <child>
-                                      <object class="GtkTreeView" id="other_overrides_view">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">True</property>
-                                        <property name="rules_hint">True</property>
-                                        <property name="enable_search">False</property>
-                                        <property name="search_column">0</property>
-                                        <property name="show_expanders">False</property>
-                                        <child internal-child="accessible">
-                                          <object class="AtkObject" id="a11y-other_overrides_view1">
-                                            <property name="AtkObject::accessible-name" translatable="yes">Other Overrides Table</property>
-                                          </object>
-                                        </child>
-                                      </object>
-                                      <packing>
-                                        <property name="left_attach">1</property>
-                                        <property name="right_attach">2</property>
-                                        <property name="top_attach">2</property>
-                                        <property name="bottom_attach">3</property>
-                                      </packing>
-                                    </child>
-                                  </object>
-                                </child>
+                            <property name="margin_top">3</property>
+                            <property name="margin_bottom">3</property>
+                            <property name="hexpand">True</property>
+                            <property name="vexpand">False</property>
+                            <property name="rules_hint">True</property>
+                            <property name="enable_search">False</property>
+                            <property name="search_column">0</property>
+                            <property name="show_expanders">False</property>
+                            <child internal-child="selection">
+                              <object class="GtkTreeSelection" id="treeview-selection"/>
+                            </child>
+                            <child internal-child="accessible">
+                              <object class="AtkObject" id="other_overrides_view-atkobject">
+                                <property name="AtkObject::accessible-name" translatable="yes">Other Overrides Table</property>
                               </object>
                             </child>
                           </object>
                         </child>
                       </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">2</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="name_text">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">6</property>
+                        <property name="margin_top">3</property>
+                        <property name="margin_bottom">3</property>
+                        <property name="hexpand">True</property>
+                        <property name="wrap">True</property>
+                        <property name="wrap_mode">word-char</property>
+                        <property name="selectable">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="baseurl_text">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="margin_left">6</property>
+                        <property name="margin_top">3</property>
+                        <property name="margin_bottom">3</property>
+                        <property name="hexpand">True</property>
+                        <property name="wrap">True</property>
+                        <property name="wrap_mode">word-char</property>
+                        <property name="selectable">True</property>
+                        <property name="xalign">0</property>
+                        <property name="yalign">0</property>
+                      </object>
+                      <packing>
+                        <property name="left_attach">1</property>
+                        <property name="top_attach">1</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="expand">True</property>
+                    <property name="expand">False</property>
                     <property name="fill">True</property>
                     <property name="position">1</property>
                   </packing>
@@ -299,8 +293,8 @@
               </object>
               <packing>
                 <property name="expand">False</property>
-                <property name="fill">False</property>
-                <property name="position">2</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
               </packing>
             </child>
           </object>
@@ -313,9 +307,12 @@
       </object>
     </child>
     <child internal-child="accessible">
-      <object class="AtkObject" id="a11y-main_window1">
+      <object class="AtkObject" id="main_window-atkobject">
         <property name="AtkObject::accessible-name" translatable="yes">manage_repositories_dialog</property>
       </object>
     </child>
   </object>
+  <object class="GtkTextBuffer" id="textbuffer1">
+    <property name="text">Manage the repositories your subscriptions grant you access to by enabling, disabling and overriding certain fields.</property>
+  </object>
 </interface>
diff --git a/src/subscription_manager/gui/data/ui/subdetails.ui b/src/subscription_manager/gui/data/ui/subdetails.ui
index 96ecd56..25a949e 100644
--- a/src/subscription_manager/gui/data/ui/subdetails.ui
+++ b/src/subscription_manager/gui/data/ui/subdetails.ui
@@ -2,6 +2,14 @@
 <interface>
   <!-- interface-requires gtk+ 2.10 -->
   <!-- interface-naming-policy project-wide -->
+  <object class="GtkAdjustment" id="viewport_2_v_adjustment">
+    <property name="upper">0</property>
+    <property name="lower">0</property>
+    <property name="value">0</property>
+    <property name="step_increment">0</property>
+    <property name="page_increment">0</property>
+    <property name="page_size">0</property>
+  </object>
   <object class="GtkWindow" id="window1">
     <property name="can_focus">False</property>
     <property name="icon_name">subscription-manager</property>
@@ -47,7 +55,7 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="resize_mode">queue</property>
-                        <property name="vadjustment">0 0 206 20.600000000000001 185.40000000000001 206</property>
+                        <property name="vadjustment">viewport_2_v_adjustment</property>
                         <property name="shadow_type">none</property>
                         <child>
                           <object class="GtkTable" id="table2">
diff --git a/src/subscription_manager/gui/managergui.py b/src/subscription_manager/gui/managergui.py
index 6b641d1..67e9b36 100644
--- a/src/subscription_manager/gui/managergui.py
+++ b/src/subscription_manager/gui/managergui.py
@@ -429,6 +429,7 @@ class MainWindow(widgets.SubmanBaseWidget):
         autobind_wizard = registergui.AutobindWizard(self.backend,
                                                      self.facts,
                                                      self._get_window())
+        autobind_wizard.initialize()
         autobind_wizard.show()
 
     def _redeem_item_clicked(self, widget):
diff --git a/src/subscription_manager/gui/preferences.py b/src/subscription_manager/gui/preferences.py
index 55f6ede..7ebf2db 100644
--- a/src/subscription_manager/gui/preferences.py
+++ b/src/subscription_manager/gui/preferences.py
@@ -63,6 +63,13 @@ class PreferencesDialog(widgets.SubmanBaseWidget):
         self.release_combobox.set_model(self.release_model)
         self.sla_combobox.set_model(self.sla_model)
 
+        cell_renderer = ga_Gtk.CellRendererText()
+        self.release_combobox.pack_start(cell_renderer, True)
+        self.release_combobox.add_attribute(cell_renderer, "text", 0)
+
+        self.sla_combobox.pack_start(cell_renderer, True)
+        self.sla_combobox.add_attribute(cell_renderer, "text", 0)
+
         self.close_button.connect("clicked", self._close_button_clicked)
         self.sla_combobox.connect("changed", self._sla_changed)
         self.release_combobox.connect("changed", self._release_changed)
diff --git a/src/subscription_manager/gui/progress.py b/src/subscription_manager/gui/progress.py
index ddc8f7d..61b2b2d 100644
--- a/src/subscription_manager/gui/progress.py
+++ b/src/subscription_manager/gui/progress.py
@@ -24,7 +24,7 @@ class Progress(widgets.SubmanBaseWidget):
     widget_names = ['progressWindow', 'progressLabel', 'progressBar', 'statusLabel']
     gui_file = "progress"
 
-    def __init__(self, title, label):
+    def __init__(self, title, label, support_markup=False):
         super(Progress, self).__init__()
 
         self.progressWindow.connect("delete-event", self._on_delete_event)
@@ -34,7 +34,7 @@ class Progress(widgets.SubmanBaseWidget):
         self.lastProgress = 0.0
 
         self.set_title(title)
-        self.set_label(label)
+        self.set_label(label, support_markup)
 
     def hide(self):
         self.progressWindow.hide()
@@ -43,8 +43,11 @@ class Progress(widgets.SubmanBaseWidget):
     def set_title(self, text):
         self.progressWindow.set_title(text)
 
-    def set_label(self, text):
-        self.progressLabel.set_text(text)
+    def set_label(self, text, markup=False):
+        if markup:
+            self.progressLabel.set_markup(text)
+        else:
+            self.progressLabel.set_text(text)
 
     def pulse(self):
         """
diff --git a/src/subscription_manager/gui/registergui.py b/src/subscription_manager/gui/registergui.py
index c422e89..c56ec5b 100644
--- a/src/subscription_manager/gui/registergui.py
+++ b/src/subscription_manager/gui/registergui.py
@@ -469,6 +469,9 @@ class AutobindWizard(RegisterScreen):
         super(AutobindWizard, self).show()
         self._run_pre(SELECT_SLA_PAGE)
 
+    def _get_initial_screen(self):
+        return SELECT_SLA_PAGE
+
 
 class Screen(widgets.SubmanBaseWidget):
     widget_names = ['container']
diff --git a/src/subscription_manager/gui/reposgui.py b/src/subscription_manager/gui/reposgui.py
index 6ddfccc..2b6a391 100644
--- a/src/subscription_manager/gui/reposgui.py
+++ b/src/subscription_manager/gui/reposgui.py
@@ -17,12 +17,16 @@ import gettext
 import logging
 
 from subscription_manager.ga import Gtk as ga_Gtk
+from subscription_manager.ga import gtk_compat
+from subscription_manager.ga import GObject as ga_GObject
 from subscription_manager.ga import GdkPixbuf as ga_GdkPixbuf
 
 import rhsm.config
 from subscription_manager.gui.utils import handle_gui_exception
 from subscription_manager.gui import widgets
+from subscription_manager.gui import progress
 
+from subscription_manager.async import AsyncRepoOverridesUpdate
 from subscription_manager.injection import IDENTITY, ENT_DIR, require
 from subscription_manager.gui.storage import MappedListStore
 from subscription_manager.gui.widgets import TextTreeViewColumn, CheckBoxColumn,\
@@ -41,9 +45,10 @@ class RepositoriesDialog(widgets.SubmanBaseWidget, HasSortableWidget):
     """
     GTK dialog for managing repositories and their overrides.
     """
-    widget_names = ['main_window', 'reset_button', 'close_button',
+    widget_names = ['main_window', 'reset_button', 'close_button', 'apply_button',
                     'name_text', 'baseurl_text', 'scrolledwindow',
-                    'other_overrides_view']
+                    'other_overrides_view', 'details_vbox', 'main_content_container',
+                    'description_text']
     gui_file = "repositories"
 
     ENTS_PROVIDE_NO_REPOS = _("Attached subscriptions do not provide any repositories.")
@@ -53,6 +58,21 @@ class RepositoriesDialog(widgets.SubmanBaseWidget, HasSortableWidget):
     def __init__(self, backend, parent):
         super(RepositoriesDialog, self).__init__()
 
+        # Label wrapping on resize does not work very well on GTK2+
+        # so we resize on the fly.
+        if gtk_compat.GTK_COMPAT_VERSION == "2":
+            # Set the title to wrap and connect to size-allocate to
+            # properly resize the label so that it takes up the most
+            # space it can.
+            self.description_text.set_line_wrap(True)
+            self.description_text.connect('size-allocate', lambda label, size: label.set_size_request(size.width - 1, -1))
+
+            self.name_text.set_line_wrap(True)
+            self.name_text.connect('size-allocate', lambda label, size: label.set_size_request(size.width - 1, -1))
+
+            self.baseurl_text.set_line_wrap(True)
+            self.baseurl_text.connect('size-allocate', lambda label, size: label.set_size_request(size.width - 1, -1))
+
         # Set up dynamic elements
         self.overrides_treeview = ga_Gtk.TreeView()
         # Add at-spi because we no longer create this widget from glade
@@ -67,11 +87,13 @@ class RepositoriesDialog(widgets.SubmanBaseWidget, HasSortableWidget):
         # FIXME: We really shouldn't have to worry about our connection info
         #        changing out from under us.
         self.backend = backend
+        self.async_update = AsyncRepoOverridesUpdate(self.backend.overrides)
         self.identity = require(IDENTITY)
         self.ent_dir = require(ENT_DIR)
 
         self.connect_signals({"on_dialog_delete_event": self._on_close,
                               "on_close_button_clicked": self._on_close,
+                              "on_apply_button_clicked": self._on_apply_request,
                               "on_reset_button_clicked": self._on_reset_repo})
 
         self.overrides_store = MappedListStore({
@@ -127,6 +149,11 @@ class RepositoriesDialog(widgets.SubmanBaseWidget, HasSortableWidget):
         self.overrides_treeview.get_selection().connect('changed', self._on_selection)
         self.overrides_treeview.set_rules_hint(True)
 
+        # Progress bar
+        self.pb = None
+        self.timer = 0
+
+        self.parent = parent
         self.main_window.set_transient_for(parent)
 
     def hide(self):
@@ -134,16 +161,25 @@ class RepositoriesDialog(widgets.SubmanBaseWidget, HasSortableWidget):
 
     def show(self):
         self._load_data()
-        self.main_window.present()
 
     def _load_data(self):
-        # pull the latest overrides from the cache which will be the ones from the server.
-        current_overrides = self.backend.overrides.get_overrides(self.identity.uuid) or []
-        self._refresh(current_overrides)
-        # By default sort by repo_id
+        self._show_progress_bar(_("Loading Repository Data"), _("Retrieving repository data from server."), self.parent)
+        self.async_update.load_data(self._on_async_load_data_success, self._on_async_load_data_failure)
+
+    def _on_async_load_data_success(self, current_overrides, current_repos):
         self.overrides_store.set_sort_column_id(0, ga_Gtk.SortType.ASCENDING)
+        self._refresh(current_overrides, current_repos)
+        self._clear_progress_bar()
+        self.main_window.present()
+        # By default sort by repo_id
 
-    def _refresh(self, current_overrides, repo_id_to_select=None):
+    def _on_async_load_data_failure(self, e):
+        self._clear_progress_bar()
+        handle_gui_exception(e, _("Unable to load repository data."),
+                     self._get_dialog_widget())
+
+    def _refresh(self, current_overrides, current_repos, repo_id_to_select=None):
+        # Current overrides from server
         overrides_per_repo = {}
 
         for override in current_overrides:
@@ -151,12 +187,17 @@ class RepositoriesDialog(widgets.SubmanBaseWidget, HasSortableWidget):
             overrides_per_repo.setdefault(repo_id, {})
             overrides_per_repo[repo_id][override.name] = override.value
 
+        self.apply_button.set_sensitive(False)
+
         self.overrides_store.clear()
         self.other_overrides.clear()
+        self.main_content_container.remove(self.details_vbox)
 
-        current_repos = self.backend.overrides.repo_lib.get_repos(apply_overrides=False)
+        # Switch the dialog view depending on content availability
         if (current_repos):
             self.widget_switcher.set_active(1)
+            self.main_content_container.add(self.details_vbox)
+            #self.details_vbox.set_visible(True)
         else:
             ent_count = len(self.ent_dir.list_valid())
             no_repos_message = self.ENTS_PROVIDE_NO_REPOS
@@ -168,29 +209,16 @@ class RepositoriesDialog(widgets.SubmanBaseWidget, HasSortableWidget):
                 no_repos_message = self.REPOS_DISABLED_BY_CFG
 
             self.no_repos_label.set_markup("<b>%s</b>" % no_repos_message)
+
+#            self.details_vbox.set_visible(False)
             self.widget_switcher.set_active(0)
 
-        # Fetch the repositories from repolib without any overrides applied.
-        # We do this so that we can tell if anything has been modified by
-        # overrides.
+        self.main_content_container.show_all()
+
+        # Update the table model from our gathered override/repo data
         for repo in current_repos:
             overrides = overrides_per_repo.get(repo.id, None)
-            modified = not overrides is None
-            enabled = self._get_boolean(self._get_model_value(repo, overrides, 'enabled')[0])
-            gpgcheck, gpgcheck_modified = self._get_model_value(repo, overrides, 'gpgcheck')
-            gpgcheck = self._get_boolean(gpgcheck)
-            self.overrides_store.add_map({
-                'enabled': bool(int(enabled)),
-                'repo_id': repo.id,
-                'modified': modified,
-                'modified-icon': self._get_modified_icon(modified),
-                'name': repo['name'],
-                'baseurl': repo['baseurl'],
-                'gpgcheck': gpgcheck,
-                'gpgcheck_modified': gpgcheck_modified,
-                'repo_data': repo,
-                'override_data': overrides
-            })
+            self.overrides_store.add_map(self._build_table_row_data(repo, overrides))
 
         first_row_iter = self.overrides_store.get_iter_first()
         if not first_row_iter:
@@ -200,6 +228,37 @@ class RepositoriesDialog(widgets.SubmanBaseWidget, HasSortableWidget):
         else:
             self.overrides_treeview.get_selection().select_iter(first_row_iter)
 
+    def _build_table_row_data(self, repo_data, repo_overrides):
+        modified = not repo_overrides is None
+        enabled = self._get_boolean(self._get_model_value(repo_data, repo_overrides, 'enabled')[0])
+        gpgcheck, gpgcheck_modified = self._get_model_value(repo_data, repo_overrides, 'gpgcheck')
+        gpgcheck = self._get_boolean(gpgcheck)
+
+        return {
+            'enabled': bool(int(enabled)),
+            'repo_id': repo_data.id,
+            'modified': modified,
+            'modified-icon': self._get_modified_icon(modified),
+            'name': repo_data['name'],
+            'baseurl': repo_data['baseurl'],
+            'gpgcheck': gpgcheck,
+            'gpgcheck_modified': gpgcheck_modified,
+            'repo_data': repo_data,
+            'override_data': repo_overrides
+        }
+
+    def _show_progress_bar(self, title, label, progress_parent=None):
+        self.pb = progress.Progress(title, label, True)
+        self.timer = ga_GObject.timeout_add(100, self.pb.pulse)
+        self.pb.set_parent_window(progress_parent or self._get_dialog_widget())
+
+    def _clear_progress_bar(self):
+        if self.pb:
+            self.pb.hide()
+            ga_GObject.source_remove(self.timer)
+            self.timer = 0
+            self.pb = None
+
     def _get_modified_icon(self, modified):
         icon = None
         if modified:
@@ -208,8 +267,7 @@ class RepositoriesDialog(widgets.SubmanBaseWidget, HasSortableWidget):
 
     def _get_selected_repo_id(self):
         selected = None
-        override_selection = SelectionWrapper(self.overrides_treeview.get_selection(),
-                                              self.overrides_store)
+        override_selection = SelectionWrapper(self.overrides_treeview.get_selection(), self.overrides_store)
         if override_selection.is_valid():
             selected = override_selection['repo_id']
         return selected
@@ -269,52 +327,167 @@ class RepositoriesDialog(widgets.SubmanBaseWidget, HasSortableWidget):
 
         repo_id = selection['repo_id']
 
-        try:
-            self._delete_all_overrides(repo_id)
-        except Exception, e:
-            handle_gui_exception(e, _("Unable to reset repository overrides."),
-                                 self._get_dialog_widget())
+        self._show_progress_bar(_("Removing Repository Overrides"), _("Removing all overrides for repository <b>%s</b>") % repo_id)
+        self.async_update.remove_all_overrides([repo_id], self._on_async_delete_all_overrides_success,
+                                          self._on_async_delete_all_overrides_failure)
+
+    def _on_async_delete_all_overrides_success(self, current_overrides, current_repos):
+        selection = SelectionWrapper(self.overrides_treeview.get_selection(),
+                                     self.overrides_store)
+
+        repo_id = selection['repo_id']
+        repo_data = None
+        for repo in current_repos:
+            if repo_id == repo.id:
+                repo_data = repo
+                break
+
+        if repo_data:
+            override_data = None
+            for override in current_overrides:
+                if repo_id == override.repo_id:
+                    override_data = override
+                    break
+
+            row_data = self._build_table_row_data(repo_data, override_data)
+            self.overrides_store.update_map(selection.tree_iter, row_data)
+
+        # Update the UI based on the current selection as no selection change is
+        # triggered, but data may enable/disable different widgets based on data
+        # change.
+        self._on_selection(self.overrides_treeview.get_selection())
+
+        self._clear_progress_bar()
+
+    def _on_async_delete_all_overrides_failure(self, e):
+        self._clear_progress_bar()
+        handle_gui_exception(e, _("Unable to reset repository overrides."),
+                     self._get_dialog_widget())
 
     def _on_selection(self, tree_selection):
         selection = SelectionWrapper(tree_selection, self.overrides_store)
 
         self.other_overrides.clear()
-        self.reset_button.set_sensitive(selection.is_valid() and selection['modified'])
+        reset_enabled = False
         if selection.is_valid():
-            self.name_text.get_buffer().set_text(selection['name'])
-            self.baseurl_text.get_buffer().set_text(selection['baseurl'])
+            overrides = selection['override_data']
+            reset_enabled = overrides is not None and len(overrides) > 0
+
+            self.name_text.set_text(selection['name'])
+            self.baseurl_text.set_text(selection['baseurl'])
 
             for key, value in (selection['override_data'] or {}).items():
                 if key not in ['gpgcheck', 'enabled']:
                     self.other_overrides.add_override(key, value)
 
+        self.reset_button.set_sensitive(reset_enabled)
+
+    def _get_changed_overrides(self):
+        override_mapping = {
+            'to_add': [],
+            'to_remove': []
+        }
+
+        # Process each row in the model and build up a mapping of overrides.
+        self.overrides_store.foreach(self._get_overrides_for_row, override_mapping)
+        return override_mapping
+
+    def _on_apply_request(self, button, event=None):
+        override_mapping = self._get_changed_overrides()
+        self._apply_override_changes(override_mapping, self._on_update_success)
+
+    def _apply_override_changes(self, override_mapping, success_handler):
+        self._show_progress_bar(_("Updating Repository Overrides"), _("Applying override changes to repositories."))
+        self.async_update.update_overrides(override_mapping['to_add'], override_mapping['to_remove'],
+                                      success_handler, self._on_update_failure)
+
+    def _on_update_success(self, current_overrides, current_repos):
+        self._refresh(current_overrides, current_repos, self._get_selected_repo_id())
+        self._clear_progress_bar()
+
+    def _on_update_failure(self, e):
+        handle_gui_exception(e, _("Unable to update overrides."), self._get_dialog_widget())
+
     def _on_close(self, button, event=None):
+        override_mapping = self._get_changed_overrides()
+        if (len(override_mapping["to_add"]) == 0 and len(override_mapping["to_remove"]) == 0):
+            self.close_dialog()
+            return True
+
+        # There are changes pending, check if the user would like to save changes.
+        confirm = YesNoDialog(_("Repositories have changes. Save changes?"),
+                                 self._get_dialog_widget(), _("Save Changes"))
+        confirm.connect("response", self._on_apply_changes_on_close_response, override_mapping)
+
+    def _on_apply_changes_on_close_response(self, dialog, response, override_mapping):
+        if not response:
+            self.close_dialog()
+            return
+        self._apply_override_changes(override_mapping, self._on_async_close_request)
+
+    def _on_async_close_request(self, current_overrides, current_repos):
+        self.close_dialog()
+
+    def close_dialog(self):
+        self._clear_progress_bar()
         self.hide()
-        return True
+
+    def _get_overrides_for_row(self, model, path, iter, override_mapping):
+        self._update_override_mapping("gpgcheck", model, path, iter, override_mapping)
+        self._update_override_mapping("enabled", model, path, iter, override_mapping)
+
+    def _update_override_mapping(self, attribute, model, path, iter, override_mapping):
+        '''
+        Process a single model row and determine if an override should be added/removed.
+        '''
+        repo = model.get_value(iter, model['repo_data'])
+        remote_overrides = model.get_value(iter, model['override_data'])
+
+        repo_attribute_value = self._get_boolean(repo[attribute])
+        model_attribute_value = self._get_boolean(model.get_value(iter, model[attribute]))
+        has_remote_override = remote_overrides and attribute in remote_overrides
+
+        if not has_remote_override and model_attribute_value != repo_attribute_value:
+            override_mapping["to_add"].append(Override(repo.id, attribute, str(int(model_attribute_value))))
+        elif has_remote_override and model_attribute_value == repo_attribute_value:
+            override_mapping["to_remove"].append(Override(repo.id, attribute))
 
     def _on_toggle_changed(self, override_model_iter, enabled, key):
+        '''
+        Update the gui based on check box change.
+        '''
         repo = self.overrides_store.get_value(override_model_iter,
                                               self.overrides_store['repo_data'])
         overrides = self.overrides_store.get_value(override_model_iter,
                                               self.overrides_store['override_data'])
 
-        value = repo[key]
-        has_active_override = overrides and key in overrides
+        current_gpg_check = self._get_boolean(self.overrides_store.get_value(override_model_iter,
+                                                                             self.overrides_store['gpgcheck']))
+        repo_gpg_check = self._get_boolean(repo['gpgcheck'])
 
-        try:
-            if not has_active_override and enabled != int(value):
-                # We get True/False from the model, convert to int so that
-                # the override gets the correct value.
-                self._add_override(repo.id, key, int(enabled))
-
-            elif has_active_override and overrides[key] != value:
-                self._delete_override(repo.id, key)
-            else:
-                # Should only ever be one path here, else we have a UI logic error.
-                self._add_override(repo.id, key, int(enabled))
-        except Exception, e:
-            handle_gui_exception(e, _("Unable to update %s override.") % key,
-                                 self._get_dialog_widget())
+        current_enabled = self._get_boolean(self.overrides_store.get_value(override_model_iter,
+                                                                           self.overrides_store['enabled']))
+        repo_enabled = self._get_boolean(repo['enabled'])
+
+        has_extra = self._has_extra_overrides(overrides)
+
+        mark_modified = has_extra or repo_gpg_check != current_gpg_check or repo_enabled != current_enabled
+        enable_reset = overrides is not None and len(overrides) > 0
+
+        self.reset_button.set_sensitive(enable_reset)
+        self.overrides_store.set_value(override_model_iter, self.overrides_store['modified'], mark_modified)
+        self.overrides_store.set_value(override_model_iter, self.overrides_store['modified-icon'],
+                                       self._get_modified_icon(mark_modified))
+
+        changed = self._get_changed_overrides()
+        activate_apply_button = len(changed["to_add"]) != 0 or len(changed["to_remove"]) != 0
+        self.apply_button.set_sensitive(activate_apply_button)
+
+    def _has_extra_overrides(self, override_data):
+        for key, value in (override_data or {}).items():
+            if key not in ['gpgcheck', 'enabled']:
+                return True
+        return False
 
     def _on_enable_repo_toggle(self, override_model_iter, enabled):
         return self._on_toggle_changed(override_model_iter, enabled, 'enabled')
@@ -322,22 +495,5 @@ class RepositoriesDialog(widgets.SubmanBaseWidget, HasSortableWidget):
     def _on_gpgcheck_toggle_changed(self, override_model_iter, enabled):
         return self._on_toggle_changed(override_model_iter, enabled, 'gpgcheck')
 
-    def _add_override(self, repo, name, value):
-        to_add = Override(repo, name, value)
-        current_overrides = self.backend.overrides.add_overrides(self.identity.uuid, [to_add])
-        self.backend.overrides.update(current_overrides)
-        self._refresh(current_overrides, self._get_selected_repo_id())
-
-    def _delete_override(self, repo, name):
-        to_delete = Override(repo, name)
-        current_overrides = self.backend.overrides.remove_overrides(self.identity.uuid, [to_delete])
-        self.backend.overrides.update(current_overrides)
-        self._refresh(current_overrides, self._get_selected_repo_id())
-
-    def _delete_all_overrides(self, repo_id):
-        current_overrides = self.backend.overrides.remove_all_overrides(self.identity.uuid, [repo_id])
-        self.backend.overrides.update(current_overrides)
-        self._refresh(current_overrides, self._get_selected_repo_id())
-
     def _get_dialog_widget(self):
         return self.main_window
diff --git a/src/subscription_manager/gui/storage.py b/src/subscription_manager/gui/storage.py
index 818dbb2..296d1d0 100644
--- a/src/subscription_manager/gui/storage.py
+++ b/src/subscription_manager/gui/storage.py
@@ -80,6 +80,10 @@ class MappedListStore(MappedStore, ga_Gtk.ListStore):
         """
         self.append(self._create_initial_entry(item_map))
 
+    def update_map(self, iter, item_map):
+        for key, value in item_map.iteritems():
+            self.set_value(iter, self[key], value)
+
 
 class MappedTreeStore(MappedStore, ga_Gtk.TreeStore):
     def __init__(self, type_map):
diff --git a/src/subscription_manager/gui/widgets.py b/src/subscription_manager/gui/widgets.py
index d09743b..e50b7ae 100644
--- a/src/subscription_manager/gui/widgets.py
+++ b/src/subscription_manager/gui/widgets.py
@@ -79,7 +79,6 @@ class FileBasedGui(object):
                                           "%s.%s" % (self.gui_file,
                                                      self.gui_file_suffix))
 
-        log.debug("loading gui file %s", gui_file_full_path)
         return gui_file_full_path
 
 
@@ -150,7 +149,13 @@ class SubmanBaseWidget(object):
         """
 
         for name in widget_names:
-            setattr(self, name, file_based_gui.get_object(name))
+            obj = file_based_gui.get_object(name)
+            # Builder doesn't set the name of the widget to the id in
+            # xml ui file as libglade did, so set it here so widget.get_name()
+            # returns that id ('proxyButton' vs 'Gtk.CheckButton', for ex)
+            if obj:
+                obj.set_name(name)
+            setattr(self, name, obj)
 
     def connect_signals(self, signals):
         return self.gui.connect_signals(signals)
@@ -722,8 +727,6 @@ class DatePicker(ga_Gtk.HBox):
         self._calendar_window.set_type_hint(ga_Gdk.WindowTypeHint.DIALOG)
         self._calendar_window.set_modal(True)
         self._calendar_window.set_title(_("Date Selection"))
-        self._calendar_window.set_transient_for(
-                self.get_parent())
 
         self._calendar.select_month(self._date.month - 1, self._date.year)
         self._calendar.select_day(self._date.day)
diff --git a/subscription-manager.spec b/subscription-manager.spec
index de5695b..a44c4db 100644
--- a/subscription-manager.spec
+++ b/subscription-manager.spec
@@ -37,7 +37,7 @@
 
 Name: subscription-manager
 Version: 1.15.9
-Release: 2%{?dist}
+Release: 3%{?dist}
 Summary: Tools and libraries for subscription and repository management
 Group:   System Environment/Base
 License: GPLv2
@@ -114,6 +114,7 @@ Group: System Environment/Base
 Requires: pygobject3-base
 # plugin needs a slightly newer version of python-iniparse for 'tidy'
 Requires:  python-iniparse >= 0.4
+Requires: %{name} = %{version}-%{release}
 
 %description -n subscription-manager-plugin-ostree
 Enables handling of content of type 'ostree' in any certificates
@@ -130,6 +131,7 @@ the remote in the currently deployed .origin file.
 %package -n subscription-manager-plugin-container
 Summary: A plugin for handling container content.
 Group: System Environment/Base
+Requires: %{name} = %{version}-%{release}
 
 %description -n subscription-manager-plugin-container
 Enables handling of content of type 'containerImage' in any certificates
@@ -527,6 +529,29 @@ fi
 %endif
 
 %changelog
+* Fri Jul 31 2015 Chris Rog <crog@redhat.com> 1.15.9-3
+- 1248746: Fix layout of contract dialog (GTK3) (mstead@redhat.com)
+- 1248821: Add Gtk.Window to ga_gtk2.Gtk (alikins@redhat.com)
+- 1248821: All subs date picker was failing. (alikins@redhat.com)
+- 1249053: Fixed layout/blank button issues on owner selection dialog
+  (mstead@redhat.com)
+- 1248729: All subs filter dialog was not focused. (alikins@redhat.com)
+- 1248664: Fix GtkAdjustment related warnings (alikins@redhat.com)
+- 1248546: Slightly better looking done screen. (alikins@redhat.com)
+- 1245557: Fix release and service level preferences (alikins@redhat.com)
+- Add GTK_COMPAT_VERSION to ga_gtk2/gtk_compat (alikins@redhat.com)
+- 1248773: Fixed proxy dialog layout (GTK3) (mstead@redhat.com)
+- 1248771: Fixing activation key dialog layout (GTK3) (mstead@redhat.com)
+- 1247723: Fixed layout issues in Facts dialog (GTK3) (mstead@redhat.com)
+- 1245283: Properly initialize AutobindWizard when auto-attach is clicked
+  (mstead@redhat.com)
+- 1248546: Refine the aesthics of register dialog. (alikins@redhat.com)
+- 1243260: Make proxy config dialog work. (alikins@redhat.com)
+- 1161157,1155954: Improve performance of Repository Dialog (mstead@redhat.com)
+- 1165771: make content plugins require subman (alikins@redhat.com)
+- Move gtk_compat features to sub ga module. (alikins@redhat.com)
+- Use idle_add from ga_Object for 6.x (alikins@redhat.com)
+
 * Mon Jul 27 2015 Chris Rog <crog@redhat.com> 1.15.9-2
 - Updated initial-setup-addon package requirement to initial-setup-gui
   (crog@redhat.com)
diff --git a/test/test_repogui.py b/test/test_repogui.py
index dcae508..b1b1907 100644
--- a/test/test_repogui.py
+++ b/test/test_repogui.py
@@ -14,6 +14,7 @@
 
 from mock import Mock
 from fixture import SubManFixture
+from subscription_manager.async import AsyncRepoOverridesUpdate
 from subscription_manager.gui.reposgui import RepositoriesDialog
 from subscription_manager.repolib import Repo
 from subscription_manager.overrides import Override
@@ -37,6 +38,7 @@ class TestReposGui(SubManFixture):
 
         self.dialog = RepositoriesDialog(backend, None)
         self.dialog.overrides_mock = self.overrides_mock
+        self.dialog.async_update = TestingOverridesAsync(self.overrides_mock)
 
     def test_show_dialog_with_no_overrides(self):
         repo = self._create_repo("my_repo", [('enabled', '0'), ('gpgcheck', '0')])
@@ -68,10 +70,10 @@ class TestReposGui(SubManFixture):
         self.assertEquals(repo, store.get_value(tree_iter, store['repo_data']))
 
         # Check that the details view is populated correctly
-        name = self._get_text(self.dialog.name_text)
+        name = self.dialog.name_text.get_text()
         self.assertEquals("MY_REPO", name)
 
-        baseurl = self._get_text(self.dialog.baseurl_text)
+        baseurl = self.dialog.baseurl_text.get_text()
         self.assertEquals("http://foo.bar", baseurl)
 
     def test_show_dialog_with_overrides(self):
@@ -114,10 +116,10 @@ class TestReposGui(SubManFixture):
         self.assertEquals(repo, store.get_value(tree_iter, store['repo_data']))
 
         # Check that the details view is populated correctly
-        name = self._get_text(self.dialog.name_text)
+        name = self.dialog.name_text.get_text()
         self.assertEquals("MY_REPO", name)
 
-        baseurl = self._get_text(self.dialog.baseurl_text)
+        baseurl = self.dialog.baseurl_text.get_text()
         self.assertEquals("http://foo.bar", baseurl)
 
     def test_remove_all_button_disabled_when_repo_has_no_modifications(self):
@@ -157,11 +159,21 @@ class TestReposGui(SubManFixture):
         attrs.extend(attribute_tuple_list)
         return Repo(repo_id, attrs)
 
-    def _get_text(self, text_view):
-        start, end = text_view.get_buffer().get_bounds()
-        return text_view.get_buffer().get_text(start, end,
-                                               include_hidden_chars=False)
-
     def _get_combo_box_value(self, combo_box):
         column = combo_box.get_active()
         return combo_box.get_model()[column][1]
+
+
+class TestingOverridesAsync(AsyncRepoOverridesUpdate):
+
+    def _process_callback(self, callback, *args):
+        callback(*args)
+
+    def load_data(self, success_callback, except_callback):
+        self._load_data(success_callback, except_callback)
+
+    def update_overrides(self, to_add, to_remove, success_callback, except_callback):
+        self._update(to_add, to_remove, success_callback, except_callback)
+
+    def remove_all_overrides(self, repo_ids, success_callback, except_callback):
+        self._remove_all(repo_ids, success_callback, except_callback)