[gnome-packagekit] Port to the new GtkApplication API



commit 7bbd4308cb30640861d99ca31f8c7cc4effa8dfe
Author: Richard Hughes <richard hughsie com>
Date:   Tue Oct 26 14:34:37 2010 +0100

    Port to the new GtkApplication API

 data/gpk-client.ui           |    1 -
 data/gpk-error.ui            |    1 -
 data/gpk-eula.ui             |    1 -
 data/gpk-log.ui              |    1 -
 data/gpk-service-pack.ui     |    1 -
 data/gpk-signature.ui        |    1 -
 data/gpk-update-viewer.ui    |    1 -
 help/.gitignore              |    2 +
 po/POTFILES.in               |    4 -
 src/Makefile.am              |    6 +-
 src/cc-update-panel.c        |    2 -
 src/gpk-animated-icon.c      |    4 -
 src/gpk-application-main.c   |  125 ---
 src/gpk-application.c        | 1786 ++++++++++++++++++++----------------------
 src/gpk-application.h        |   57 --
 src/gpk-auto-refresh.c       |    6 -
 src/gpk-check-update.c       |    4 -
 src/gpk-dbus-service.c       |    2 -
 src/gpk-firmware.c           |    6 -
 src/gpk-hardware.c           |    7 +-
 src/gpk-log.c                |  159 +++--
 src/gpk-modal-dialog.c       |    2 -
 src/gpk-service-pack.c       |  175 +++--
 src/gpk-session.c            |    3 +-
 src/gpk-update-icon.c        |  132 ++--
 src/gpk-update-viewer-main.c |  125 ---
 src/gpk-update-viewer.c      | 1056 ++++++++++++-------------
 src/gpk-update-viewer.h      |   57 --
 src/gpk-watch.c              |    2 -
 29 files changed, 1653 insertions(+), 2076 deletions(-)
---
diff --git a/data/gpk-client.ui b/data/gpk-client.ui
index 1b264d9..280d1b0 100644
--- a/data/gpk-client.ui
+++ b/data/gpk-client.ui
@@ -10,7 +10,6 @@
     <property name="window_position">center-on-parent</property>
     <property name="icon_name">system-software-update</property>
     <property name="type_hint">dialog</property>
-    <property name="has_separator">False</property>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox1">
         <property name="visible">True</property>
diff --git a/data/gpk-error.ui b/data/gpk-error.ui
index 0e19270..4c95ca2 100644
--- a/data/gpk-error.ui
+++ b/data/gpk-error.ui
@@ -8,7 +8,6 @@
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <property name="has_separator">False</property>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox1">
         <property name="visible">True</property>
diff --git a/data/gpk-eula.ui b/data/gpk-eula.ui
index e6bd756..7767aea 100644
--- a/data/gpk-eula.ui
+++ b/data/gpk-eula.ui
@@ -8,7 +8,6 @@
     <property name="modal">True</property>
     <property name="window_position">center-on-parent</property>
     <property name="type_hint">dialog</property>
-    <property name="has_separator">False</property>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox1">
         <property name="visible">True</property>
diff --git a/data/gpk-log.ui b/data/gpk-log.ui
index d2b82a4..05c407c 100644
--- a/data/gpk-log.ui
+++ b/data/gpk-log.ui
@@ -7,7 +7,6 @@
     <property name="title" translatable="yes">Software Log Viewer</property>
     <property name="window_position">center-on-parent</property>
     <property name="type_hint">normal</property>
-    <property name="has_separator">False</property>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox1">
         <property name="visible">True</property>
diff --git a/data/gpk-service-pack.ui b/data/gpk-service-pack.ui
index d14b278..d1e1729 100644
--- a/data/gpk-service-pack.ui
+++ b/data/gpk-service-pack.ui
@@ -8,7 +8,6 @@
     <property name="resizable">False</property>
     <property name="window_position">center-on-parent</property>
     <property name="type_hint">dialog</property>
-    <property name="has_separator">False</property>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox1">
         <property name="visible">True</property>
diff --git a/data/gpk-signature.ui b/data/gpk-signature.ui
index 58f2f7f..d33ba6e 100644
--- a/data/gpk-signature.ui
+++ b/data/gpk-signature.ui
@@ -10,7 +10,6 @@
     <property name="window_position">center-on-parent</property>
     <property name="destroy_with_parent">True</property>
     <property name="type_hint">dialog</property>
-    <property name="has_separator">False</property>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox1">
         <property name="visible">True</property>
diff --git a/data/gpk-update-viewer.ui b/data/gpk-update-viewer.ui
index d78e7d2..9bf4e2f 100644
--- a/data/gpk-update-viewer.ui
+++ b/data/gpk-update-viewer.ui
@@ -8,7 +8,6 @@
     <property name="window_position">center</property>
     <property name="icon_name">software-update-available</property>
     <property name="type_hint">normal</property>
-    <property name="has_separator">False</property>
     <child internal-child="vbox">
       <object class="GtkVBox" id="dialog-vbox1">
         <property name="visible">True</property>
diff --git a/help/.gitignore b/help/.gitignore
index 813dbc9..43ebb2a 100644
--- a/help/.gitignore
+++ b/help/.gitignore
@@ -1,5 +1,7 @@
 Makefile
 Makefile.in
 *.omf
+*.mo
+gnome-packagekit.xml
 .svn
 
diff --git a/po/POTFILES.in b/po/POTFILES.in
index a99cebf..f836ccf 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -4,7 +4,6 @@
 data/org.gnome.packagekit.gschema.xml
 data/gpk-application.desktop.in
 [type: gettext/glade]data/gpk-application.ui
-[type: gettext/glade]data/gpk-backend-status.ui
 [type: gettext/glade]data/gpk-client.ui
 [type: gettext/glade]data/gpk-error.ui
 [type: gettext/glade]data/gpk-eula.ui
@@ -23,8 +22,6 @@ data/gpk-update-viewer.desktop.in
 python/packagekit/gtkwidgets.py
 src/cc-update-panel.c
 src/gpk-application.c
-src/gpk-application-main.c
-src/gpk-backend-status.c
 src/gpk-check-update.c
 src/gpk-common.c
 src/gpk-dbus-task.c
@@ -48,7 +45,6 @@ src/gpk-modal-dialog.c
 src/gpk-service-pack.c
 src/gpk-update-icon.c
 src/gpk-update-viewer.c
-src/gpk-update-viewer-main.c
 src/gpk-dbus-service.c
 src/gpk-watch.c
 src/egg-debug.c
diff --git a/src/Makefile.am b/src/Makefile.am
index 1b20832..bb79cec 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -98,7 +98,7 @@ shared_LIBS =						\
 	$(DBUS_LIBS)					\
 	$(GTK_LIBS)					\
 	$(GUDEV_LIBS)					\
-	$(NOTIFY_LIBS)				\
+	$(NOTIFY_LIBS)					\
 	$(PACKAGEKIT_LIBS)				\
 	$(GNOME_MENUS_LIBS)				\
 	$(UPOWER_LIBS)					\
@@ -186,9 +186,7 @@ gpk_dbus_service_LDADD =				\
 	$(NULL)
 
 gpk_application_SOURCES =				\
-	gpk-application-main.c				\
 	gpk-application.c				\
-	gpk-application.h				\
 	gpk-cell-renderer-uri.c				\
 	gpk-cell-renderer-uri.h				\
 	$(NULL)
@@ -232,9 +230,7 @@ libupdate_la_LDFLAGS = -avoid-version -module
 libupdate_la_CFLAGS = $(WARNINGFLAGS)
 
 gpk_update_viewer_SOURCES =				\
-	gpk-update-viewer-main.c			\
 	gpk-update-viewer.c				\
-	gpk-update-viewer.h				\
 	gpk-cell-renderer-size.c			\
 	gpk-cell-renderer-size.h			\
 	gpk-cell-renderer-info.c			\
diff --git a/src/cc-update-panel.c b/src/cc-update-panel.c
index 3c4c091..c313a4b 100644
--- a/src/cc-update-panel.c
+++ b/src/cc-update-panel.c
@@ -480,9 +480,7 @@ cc_update_panel_progress_cb (PkProgress *progress, PkProgressType type, CcUpdate
 
 	/* only show after some time in the transaction */
 	panel->priv->status_id = g_timeout_add (GPK_UI_STATUS_SHOW_DELAY, (GSourceFunc) cc_update_panel_status_changed_timeout_cb, panel);
-#if GLIB_CHECK_VERSION(2,25,8)
 	g_source_set_name_by_id (panel->priv->status_id, "[GpkRepo] status");
-#endif
 out:
 	return;
 }
diff --git a/src/gpk-animated-icon.c b/src/gpk-animated-icon.c
index f4e1712..c94c176 100644
--- a/src/gpk-animated-icon.c
+++ b/src/gpk-animated-icon.c
@@ -211,9 +211,7 @@ gpk_animated_icon_set_frame_delay (GpkAnimatedIcon *icon, guint delay_ms)
 	if (icon->animation_id != 0) {
 		g_source_remove (icon->animation_id);
 		icon->animation_id = g_timeout_add (icon->frame_delay, (GSourceFunc) gpk_animated_icon_update, icon);
-#if GLIB_CHECK_VERSION(2,25,8)
 		g_source_set_name_by_id (icon->animation_id, "[GpkAnimatedIcon] update from delay change");
-#endif
 	}
 
 	return TRUE;
@@ -247,9 +245,7 @@ gpk_animated_icon_enable_animation (GpkAnimatedIcon *icon, gboolean enabled)
 	/* start */
 	icon->frame_counter = 0;
 	icon->animation_id = g_timeout_add (icon->frame_delay, (GSourceFunc) gpk_animated_icon_update, icon);
-#if GLIB_CHECK_VERSION(2,25,8)
 	g_source_set_name_by_id (icon->animation_id, "[GpkAnimatedIcon] start update");
-#endif
 	gpk_animated_icon_update (icon);
 	return TRUE;
 }
diff --git a/src/gpk-application.c b/src/gpk-application.c
index 3db4196..32fd5e1 100644
--- a/src/gpk-application.c
+++ b/src/gpk-application.c
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007-2008 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2010 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -20,23 +20,29 @@
  */
 
 #include "config.h"
-#include <glib.h>
-#include <glib/gi18n.h>
 
-#include <gtk/gtk.h>
+#include <dbus/dbus-glib.h>
+#include <errno.h>
 #include <gdk/gdkkeysyms.h>
 #include <gdk/gdkx.h>
+#include <glib/gi18n.h>
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <locale.h>
 #include <math.h>
-#include <string.h>
 #include <packagekit-glib2/packagekit.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
 
 #include "egg-debug.h"
-#include "egg-string.h"
+#include "egg-debug.h"
 #include "egg-markdown.h"
+#include "egg-string.h"
 
-#include "gpk-application.h"
 #include "gpk-cell-renderer-uri.h"
 #include "gpk-common.h"
+#include "gpk-common.h"
 #include "gpk-desktop.h"
 #include "gpk-dialog.h"
 #include "gpk-enum.h"
@@ -45,10 +51,6 @@
 #include "gpk-helper-run.h"
 #include "gpk-task.h"
 
-static void     gpk_application_finalize   (GObject	    *object);
-
-#define GPK_APPLICATION_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GPK_TYPE_APPLICATION, GpkApplicationPrivate))
-
 typedef enum {
 	GPK_SEARCH_NAME,
 	GPK_SEARCH_DETAILS,
@@ -71,37 +73,33 @@ typedef enum {
 	GPK_ACTION_UNKNOWN
 } GpkActionMode;
 
-struct GpkApplicationPrivate
-{
-	GtkBuilder		*builder;
-	GSettings		*settings;
-	GtkListStore		*packages_store;
-	GtkTreeStore		*groups_store;
-	GtkListStore		*details_store;
-	EggMarkdown		*markdown;
-	PkControl		*control;
-	PkTask			*task;
-	PkDesktop		*desktop;
-	gchar			*group;
-	gchar			*url;
-	gchar			*search_text;
-	guint			 details_event_id;
-	GHashTable		*repos;
-	PkBitfield		 roles;
-	PkBitfield		 filters;
-	PkBitfield		 groups;
-	PkBitfield		 filters_current;
-	gboolean		 has_package; /* if we got a package in the search */
-	gboolean		 search_in_progress;
-	GpkSearchType		 search_type;
-	GpkSearchMode		 search_mode;
-	GpkActionMode		 action;
-	PkPackageSack		*package_sack;
-	GpkHelperRun		*helper_run;
-	guint			 status_id;
-	PkStatusEnum		 status_last;
-	GCancellable		*cancellable;
-};
+static EggMarkdown	*markdown = NULL;
+static gboolean		 has_package = FALSE; /* if we got a package in the search */
+static gboolean		 search_in_progress = FALSE;
+static GCancellable	*cancellable = NULL;
+static gchar		*homepage_url = NULL;
+static gchar		*search_group = NULL;
+static gchar		*search_text = NULL;
+static GHashTable	*repos = NULL;
+static GpkActionMode	 action = GPK_ACTION_UNKNOWN;
+static GpkHelperRun	*helper_run = NULL;
+static GpkSearchMode	 search_mode = GPK_MODE_UNKNOWN;
+static GpkSearchType	 search_type = GPK_SEARCH_UNKNOWN;
+static GSettings	*settings = NULL;
+static GtkBuilder	*builder = NULL;
+static GtkListStore	*details_store = NULL;
+static GtkListStore	*packages_store = NULL;
+static GtkTreeStore	*groups_store = NULL;
+static guint		 details_event_id = 0;
+static guint		 status_id = 0;
+static PkBitfield	 filters_current = 0;
+static PkBitfield	 groups = 0;
+static PkBitfield	 roles = 0;
+static PkControl	*control = NULL;
+static PkDesktop	*desktop = NULL;
+static PkPackageSack	*package_sack = NULL;
+static PkStatusEnum	 status_last = PK_STATUS_ENUM_UNKNOWN;
+static PkTask		*task = NULL;
 
 enum {
 	GPK_STATE_INSTALLED,
@@ -111,11 +109,6 @@ enum {
 };
 
 enum {
-	SIGNAL_CLOSE,
-	SIGNAL_LAST
-};
-
-enum {
 	PACKAGES_COLUMN_IMAGE,
 	PACKAGES_COLUMN_STATE,  /* state of the item */
 	PACKAGES_COLUMN_CHECKBOX,  /* what we show in the checkbox */
@@ -142,44 +135,7 @@ enum {
 	DETAIL_COLUMN_LAST
 };
 
-static guint	     signals [SIGNAL_LAST] = { 0 };
-
-G_DEFINE_TYPE (GpkApplication, gpk_application, G_TYPE_OBJECT)
-
-static void gpk_application_perform_search (GpkApplication *application);
-
-/**
- * gpk_application_class_init:
- * @klass: This graph class instance
- **/
-static void
-gpk_application_class_init (GpkApplicationClass *klass)
-{
-	GObjectClass *object_class = G_OBJECT_CLASS (klass);
-	object_class->finalize = gpk_application_finalize;
-	g_type_class_add_private (klass, sizeof (GpkApplicationPrivate));
-
-	signals [SIGNAL_CLOSE] =
-		g_signal_new ("action-close",
-			      G_TYPE_FROM_CLASS (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (GpkApplicationClass, action_close),
-			      NULL,
-			      NULL,
-			      g_cclosure_marshal_VOID__VOID,
-			      G_TYPE_NONE, 0);
-}
-
-/**
- * gpk_application_show:
- **/
-void
-gpk_application_show (GpkApplication *application)
-{
-	GtkWindow *window;
-	window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
-	gtk_window_present (window);
-}
+static void gpk_application_perform_search (gpointer user_data);
 
 /**
  * gpk_application_state_get_icon:
@@ -255,10 +211,10 @@ gpk_application_set_text_buffer (GtkWidget *widget, const gchar *text)
  * gpk_application_allow_install:
  **/
 static void
-gpk_application_allow_install (GpkApplication *application, gboolean allow)
+gpk_application_allow_install (gboolean allow)
 {
 	GtkWidget *widget;
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_install"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_install"));
 	gtk_widget_set_sensitive (widget, allow);
 }
 
@@ -266,10 +222,10 @@ gpk_application_allow_install (GpkApplication *application, gboolean allow)
  * gpk_application_allow_remove:
  **/
 static void
-gpk_application_allow_remove (GpkApplication *application, gboolean allow)
+gpk_application_allow_remove (gboolean allow)
 {
 	GtkWidget *widget;
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_remove"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_remove"));
 	gtk_widget_set_sensitive (widget, allow);
 }
 
@@ -277,7 +233,7 @@ gpk_application_allow_remove (GpkApplication *application, gboolean allow)
  * gpk_application_packages_checkbox_invert:
  **/
 static void
-gpk_application_packages_checkbox_invert (GpkApplication *application)
+gpk_application_packages_checkbox_invert (gpointer user_data)
 {
 	GtkTreeView *treeview;
 	GtkTreeModel *model;
@@ -291,7 +247,7 @@ gpk_application_packages_checkbox_invert (GpkApplication *application)
 	gchar **split;
 
 	/* get the selection and add */
-	treeview = GTK_TREE_VIEW (gtk_builder_get_object (application->priv->builder, "treeview_packages"));
+	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_packages"));
 	selection = gtk_tree_view_get_selection (treeview);
 	ret = gtk_tree_selection_get_selected (selection, &model, &iter);
 	if (!ret) {
@@ -310,7 +266,7 @@ gpk_application_packages_checkbox_invert (GpkApplication *application)
 	/* use the application icon if not selected */
 	if (!pk_bitfield_contain (state, GPK_STATE_IN_LIST)) {
 		split = pk_package_id_split (package_id);
-		icon = gpk_desktop_guess_icon_name (application->priv->desktop, split[PK_PACKAGE_ID_NAME]);
+		icon = gpk_desktop_guess_icon_name (desktop, split[PK_PACKAGE_ID_NAME]);
 		g_strfreev (split);
 	}
 
@@ -332,14 +288,14 @@ gpk_application_packages_checkbox_invert (GpkApplication *application)
  * gpk_application_get_checkbox_enable:
  **/
 static gboolean
-gpk_application_get_checkbox_enable (GpkApplication *application, PkBitfield state)
+gpk_application_get_checkbox_enable (PkBitfield state)
 {
 	gboolean enable_installed = TRUE;
 	gboolean enable_available = TRUE;
 
-	if (application->priv->action == GPK_ACTION_INSTALL)
+	if (action == GPK_ACTION_INSTALL)
 		enable_installed = FALSE;
-	else if (application->priv->action == GPK_ACTION_REMOVE)
+	else if (action == GPK_ACTION_REMOVE)
 		enable_available = FALSE;
 
 	if (pk_bitfield_contain (state, GPK_STATE_INSTALLED))
@@ -351,7 +307,7 @@ gpk_application_get_checkbox_enable (GpkApplication *application, PkBitfield sta
  * gpk_application_set_buttons_apply_clear:
  **/
 static void
-gpk_application_set_buttons_apply_clear (GpkApplication *application)
+gpk_application_set_buttons_apply_clear (gpointer user_data)
 {
 	GtkWidget *widget;
 	GtkTreeView *treeview;
@@ -366,31 +322,29 @@ gpk_application_set_buttons_apply_clear (GpkApplication *application)
 	GPtrArray *array;
 #endif
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* okay to apply? */
 #if PK_CHECK_VERSION(0,6,1)
-	array = pk_package_sack_get_array (application->priv->package_sack);
+	array = pk_package_sack_get_array (package_sack);
 	len = array->len;
 	g_ptr_array_unref (array);
 #else
-	len = pk_package_sack_get_size (application->priv->package_sack);
+	len = pk_package_sack_get_size (package_sack);
 #endif
 	if (len == 0) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_apply"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_apply"));
 		gtk_widget_set_sensitive (widget, FALSE);
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_clear"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_clear"));
 		gtk_widget_set_sensitive (widget, FALSE);
-		application->priv->action = GPK_ACTION_NONE;
+		action = GPK_ACTION_NONE;
 	} else {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_apply"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_apply"));
 		gtk_widget_set_sensitive (widget, TRUE);
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_clear"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_clear"));
 		gtk_widget_set_sensitive (widget, TRUE);
 	}
 
 	/* correct the enabled state */
-	treeview = GTK_TREE_VIEW (gtk_builder_get_object (application->priv->builder, "treeview_packages"));
+	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_packages"));
 	model = gtk_tree_view_get_model (treeview);
 	valid = gtk_tree_model_get_iter_first (model, &iter);
 
@@ -405,7 +359,7 @@ gpk_application_set_buttons_apply_clear (GpkApplication *application)
 		if (package_id == NULL) {
 			enabled = FALSE;
 		} else {
-			enabled = gpk_application_get_checkbox_enable (application, state);
+			enabled = gpk_application_get_checkbox_enable (state);
 		}
 		g_free (package_id);
 
@@ -416,12 +370,11 @@ gpk_application_set_buttons_apply_clear (GpkApplication *application)
 }
 
 
-
 /**
  * gpk_application_get_selected_package:
  **/
 static gboolean
-gpk_application_get_selected_package (GpkApplication *application, gchar **package_id, gchar **summary)
+gpk_application_get_selected_package (gchar **package_id, gchar **summary)
 {
 	GtkTreeView *treeview;
 	GtkTreeModel *model;
@@ -430,7 +383,7 @@ gpk_application_get_selected_package (GpkApplication *application, gchar **packa
 	gboolean ret;
 
 	/* get the selection and add */
-	treeview = GTK_TREE_VIEW (gtk_builder_get_object (application->priv->builder, "treeview_packages"));
+	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_packages"));
 	selection = gtk_tree_view_get_selection (treeview);
 	ret = gtk_tree_selection_get_selected (selection, &model, &iter);
 	if (!ret) {
@@ -453,38 +406,35 @@ out:
 	return ret;
 }
 
-
 /**
  * gpk_application_install:
  **/
 static gboolean
-gpk_application_install (GpkApplication *application)
+gpk_application_install (gpointer user_data)
 {
 	gboolean ret;
 	gchar *package_id_selected = NULL;
 	gchar *summary_selected = NULL;
 	PkPackage *package;
 
-	g_return_val_if_fail (GPK_IS_APPLICATION (application), FALSE);
-
 	/* get selection */
-	ret = gpk_application_get_selected_package (application, &package_id_selected, &summary_selected);
+	ret = gpk_application_get_selected_package (&package_id_selected, &summary_selected);
 	if (!ret) {
 		egg_warning ("no package selected");
 		goto out;
 	}
 
 	/* changed mind, or wrong mode */
-	if (application->priv->action == GPK_ACTION_REMOVE) {
-		ret = pk_package_sack_remove_package_by_id (application->priv->package_sack, package_id_selected);
+	if (action == GPK_ACTION_REMOVE) {
+		ret = pk_package_sack_remove_package_by_id (package_sack, package_id_selected);
 		if (ret) {
 			egg_debug ("removed %s from package array", package_id_selected);
 
 			/* correct buttons */
-			gpk_application_allow_install (application, FALSE);
-			gpk_application_allow_remove (application, TRUE);
-			gpk_application_packages_checkbox_invert (application);
-			gpk_application_set_buttons_apply_clear (application);
+			gpk_application_allow_install (FALSE);
+			gpk_application_allow_remove (TRUE);
+			gpk_application_packages_checkbox_invert (NULL);
+			gpk_application_set_buttons_apply_clear (NULL);
 			return TRUE;
 		}
 		egg_warning ("wrong mode and not in array");
@@ -492,14 +442,14 @@ gpk_application_install (GpkApplication *application)
 	}
 
 	/* already added */
-	package = pk_package_sack_find_by_id (application->priv->package_sack, package_id_selected);
+	package = pk_package_sack_find_by_id (package_sack, package_id_selected);
 	if (package != NULL) {
 		egg_warning ("already added");
 		goto out;
 	}
 
 	/* set mode */
-	application->priv->action = GPK_ACTION_INSTALL;
+	action = GPK_ACTION_INSTALL;
 
 	/* add to array */
 	package = pk_package_new ();
@@ -508,14 +458,14 @@ gpk_application_install (GpkApplication *application)
 		      "info", PK_INFO_ENUM_AVAILABLE,
 		      "summary", summary_selected,
 		      NULL);
-	pk_package_sack_add_package (application->priv->package_sack, package);
+	pk_package_sack_add_package (package_sack, package);
 	g_object_unref (package);
 
 	/* correct buttons */
-	gpk_application_allow_install (application, FALSE);
-	gpk_application_allow_remove (application, TRUE);
-	gpk_application_packages_checkbox_invert (application);
-	gpk_application_set_buttons_apply_clear (application);
+	gpk_application_allow_install (FALSE);
+	gpk_application_allow_remove (TRUE);
+	gpk_application_packages_checkbox_invert (NULL);
+	gpk_application_set_buttons_apply_clear (NULL);
 out:
 	g_free (package_id_selected);
 	g_free (summary_selected);
@@ -526,10 +476,9 @@ out:
  * gpk_application_menu_homepage_cb:
  **/
 static void
-gpk_application_menu_homepage_cb (GtkAction *action, GpkApplication *application)
+gpk_application_menu_homepage_cb (GtkAction *_action, gpointer user_data)
 {
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-	gpk_gnome_open (application->priv->url);
+	gpk_gnome_open (homepage_url);
 }
 
 /**
@@ -545,7 +494,7 @@ gpk_application_strcmp_indirect (gchar **a, gchar **b)
  * gpk_application_get_files_cb:
  **/
 static void
-gpk_application_get_files_cb (PkClient *client, GAsyncResult *res, GpkApplication *application)
+gpk_application_get_files_cb (PkClient *client, GAsyncResult *res, gpointer user_data)
 {
 	gboolean ret;
 	gchar **files = NULL;
@@ -561,8 +510,6 @@ gpk_application_get_files_cb (PkClient *client, GAsyncResult *res, GpkApplicatio
 	PkFiles *item;
 	PkResults *results;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* get the results */
 	results = pk_client_generic_finish (client, res, &error);
 	if (results == NULL) {
@@ -578,7 +525,7 @@ gpk_application_get_files_cb (PkClient *client, GAsyncResult *res, GpkApplicatio
 
 		/* if obvious message, don't tell the user */
 		if (pk_error_get_code (error_code) != PK_ERROR_ENUM_TRANSACTION_CANCELLED) {
-			window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+			window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 			gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 						gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		}
@@ -594,7 +541,7 @@ gpk_application_get_files_cb (PkClient *client, GAsyncResult *res, GpkApplicatio
 	item = g_ptr_array_index (array, 0);
 
 	/* get selection */
-	ret = gpk_application_get_selected_package (application, &package_id_selected, NULL);
+	ret = gpk_application_get_selected_package (&package_id_selected, NULL);
 	if (!ret) {
 		egg_warning ("no package selected");
 		goto out;
@@ -616,7 +563,7 @@ gpk_application_get_files_cb (PkClient *client, GAsyncResult *res, GpkApplicatio
 					   "%i files installed by %s",
 					   array_sort->len), array_sort->len, split[PK_PACKAGE_ID_NAME]);
 
-	window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+	window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 	dialog = gtk_message_dialog_new (window, GTK_DIALOG_DESTROY_WITH_PARENT,
 					 GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "%s", title);
 	gpk_dialog_embed_file_list_widget (GTK_DIALOG (dialog), array_sort);
@@ -640,33 +587,32 @@ out:
 		g_object_unref (results);
 }
 
-
 /**
  * gpk_application_status_changed_timeout_cb:
  **/
 static gboolean
-gpk_application_status_changed_timeout_cb (GpkApplication *application)
+gpk_application_status_changed_timeout_cb (gpointer user_data)
 {
 	const gchar *text;
 	GtkWidget *widget;
 
 	/* set the text and show */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "label_status"));
-	text = gpk_status_enum_to_localised_text (application->priv->status_last);
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "label_status"));
+	text = gpk_status_enum_to_localised_text (status_last);
 	gtk_label_set_label (GTK_LABEL (widget), text);
 
 	/* set icon */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "image_status"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "image_status"));
 	gtk_image_set_from_icon_name (GTK_IMAGE (widget),
-				      gpk_status_enum_to_icon_name (application->priv->status_last),
+				      gpk_status_enum_to_icon_name (status_last),
 				      GTK_ICON_SIZE_BUTTON);
 
 	/* show containing box */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "hbox_status"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "hbox_status"));
 	gtk_widget_show (widget);
 
 	/* never repeat */
-	application->priv->status_id = 0;
+	status_id = 0;
 	return FALSE;
 }
 
@@ -674,15 +620,13 @@ gpk_application_status_changed_timeout_cb (GpkApplication *application)
  * gpk_application_progress_cb:
  **/
 static void
-gpk_application_progress_cb (PkProgress *progress, PkProgressType type, GpkApplication *application)
+gpk_application_progress_cb (PkProgress *progress, PkProgressType type, gpointer user_data)
 {
 	PkStatusEnum status;
 	gint percentage;
 	gboolean allow_cancel;
 	GtkWidget *widget;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	g_object_get (progress,
 		      "status", &status,
 		      "percentage", &percentage,
@@ -693,47 +637,44 @@ gpk_application_progress_cb (PkProgress *progress, PkProgressType type, GpkAppli
 		egg_debug ("now %s", pk_status_enum_to_text (status));
 
 		if (status == PK_STATUS_ENUM_FINISHED) {
-
 			/* re-enable UI */
-			widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "treeview_packages"));
+			widget = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_packages"));
 			gtk_widget_set_sensitive (widget, TRUE);
 
 			/* make apply button sensitive */
-			widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_apply"));
+			widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_apply"));
 			gtk_widget_set_sensitive (widget, TRUE);
 
 			/* we've not yet shown, so don't bother */
-			if (application->priv->status_id > 0) {
-				g_source_remove (application->priv->status_id);
-				application->priv->status_id = 0;
+			if (status_id > 0) {
+				g_source_remove (status_id);
+				status_id = 0;
 			}
 
-			widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "hbox_status"));
+			widget = GTK_WIDGET (gtk_builder_get_object (builder, "hbox_status"));
 			gtk_widget_hide (widget);
-			widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "progressbar_progress"));
+			widget = GTK_WIDGET (gtk_builder_get_object (builder, "progressbar_progress"));
 			gtk_widget_hide (widget);
 			goto out;
 		}
 
 		/* already pending show */
-		if (application->priv->status_id > 0)
+		if (status_id > 0)
 			goto out;
 
 		/* only show after some time in the transaction */
-		application->priv->status_id =
+		status_id =
 			g_timeout_add (GPK_UI_STATUS_SHOW_DELAY,
 				       (GSourceFunc) gpk_application_status_changed_timeout_cb,
-				       application);
-#if GLIB_CHECK_VERSION(2,25,8)
-		g_source_set_name_by_id (application->priv->status_id,
+				       NULL);
+		g_source_set_name_by_id (status_id,
 					 "[GpkApplication] status-changed");
-#endif
 
 		/* save for the callback */
-		application->priv->status_last = status;
+		status_last = status;
 
 	} else if (type == PK_PROGRESS_TYPE_PERCENTAGE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "progressbar_progress"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "progressbar_progress"));
 		if (percentage > 0) {
 			gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (widget), (gfloat) percentage / 100.0f);
 			gtk_widget_show (widget);
@@ -742,7 +683,7 @@ gpk_application_progress_cb (PkProgress *progress, PkProgressType type, GpkAppli
 		}
 
 	} else if (type == PK_PROGRESS_TYPE_ALLOW_CANCEL) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_cancel"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_cancel"));
 		gtk_widget_set_sensitive (widget, allow_cancel);
 	}
 out:
@@ -753,29 +694,27 @@ out:
  * gpk_application_menu_files_cb:
  **/
 static void
-gpk_application_menu_files_cb (GtkAction *action, GpkApplication *application)
+gpk_application_menu_files_cb (GtkAction *_action, gpointer user_data)
 {
 	gboolean ret;
 	gchar **package_ids = NULL;
 	gchar *package_id_selected = NULL;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* get selection */
-	ret = gpk_application_get_selected_package (application, &package_id_selected, NULL);
+	ret = gpk_application_get_selected_package (&package_id_selected, NULL);
 	if (!ret) {
 		egg_warning ("no package selected");
 		goto out;
 	}
 
 	/* ensure new action succeeds */
-	g_cancellable_reset (application->priv->cancellable);
+	g_cancellable_reset (cancellable);
 
 	/* set correct view */
 	package_ids = pk_package_ids_from_id (package_id_selected);
-	pk_client_get_files_async (PK_CLIENT(application->priv->task), package_ids, application->priv->cancellable,
-				   (PkProgressCallback) gpk_application_progress_cb, application,
-				   (GAsyncReadyCallback) gpk_application_get_files_cb, application);
+	pk_client_get_files_async (PK_CLIENT (task), package_ids, cancellable,
+				   (PkProgressCallback) gpk_application_progress_cb, NULL,
+				   (GAsyncReadyCallback) gpk_application_get_files_cb, NULL);
 out:
 	g_free (package_id_selected);
 	g_strfreev (package_ids);
@@ -785,33 +724,31 @@ out:
  * gpk_application_remove:
  **/
 static gboolean
-gpk_application_remove (GpkApplication *application)
+gpk_application_remove (gpointer user_data)
 {
 	gboolean ret;
 	gchar *package_id_selected = NULL;
 	gchar *summary_selected = NULL;
 	PkPackage *package;
 
-	g_return_val_if_fail (GPK_IS_APPLICATION (application), FALSE);
-
 	/* get selection */
-	ret = gpk_application_get_selected_package (application, &package_id_selected, &summary_selected);
+	ret = gpk_application_get_selected_package (&package_id_selected, &summary_selected);
 	if (!ret) {
 		egg_warning ("no package selected");
 		goto out;
 	}
 
 	/* changed mind, or wrong mode */
-	if (application->priv->action == GPK_ACTION_INSTALL) {
-		ret = pk_package_sack_remove_package_by_id (application->priv->package_sack, package_id_selected);
+	if (action == GPK_ACTION_INSTALL) {
+		ret = pk_package_sack_remove_package_by_id (package_sack, package_id_selected);
 		if (ret) {
 			egg_debug ("removed %s from package array", package_id_selected);
 
 			/* correct buttons */
-			gpk_application_allow_install (application, TRUE);
-			gpk_application_allow_remove (application, FALSE);
-			gpk_application_packages_checkbox_invert (application);
-			gpk_application_set_buttons_apply_clear (application);
+			gpk_application_allow_install (TRUE);
+			gpk_application_allow_remove (FALSE);
+			gpk_application_packages_checkbox_invert (NULL);
+			gpk_application_set_buttons_apply_clear (NULL);
 			return TRUE;
 		}
 		egg_warning ("wrong mode and not in array");
@@ -819,27 +756,27 @@ gpk_application_remove (GpkApplication *application)
 	}
 
 	/* already added */
-	ret = (pk_package_sack_find_by_id (application->priv->package_sack, package_id_selected) == NULL);
+	ret = (pk_package_sack_find_by_id (package_sack, package_id_selected) == NULL);
 	if (!ret) {
 		egg_warning ("already added");
 		goto out;
 	}
 
-	application->priv->action = GPK_ACTION_REMOVE;
+	action = GPK_ACTION_REMOVE;
 	package = pk_package_new ();
 	pk_package_set_id (package, package_id_selected, NULL);
 	g_object_set (package,
 		      "info", PK_INFO_ENUM_AVAILABLE,
 		      "summary", summary_selected,
 		      NULL);
-	pk_package_sack_add_package (application->priv->package_sack, package);
+	pk_package_sack_add_package (package_sack, package);
 	g_object_unref (package);
 
 	/* correct buttons */
-	gpk_application_allow_install (application, TRUE);
-	gpk_application_allow_remove (application, FALSE);
-	gpk_application_packages_checkbox_invert (application);
-	gpk_application_set_buttons_apply_clear (application);
+	gpk_application_allow_install (TRUE);
+	gpk_application_allow_remove (FALSE);
+	gpk_application_packages_checkbox_invert (NULL);
+	gpk_application_set_buttons_apply_clear (NULL);
 out:
 	g_free (package_id_selected);
 	g_free (summary_selected);
@@ -850,25 +787,25 @@ out:
  * gpk_application_menu_install_cb:
  **/
 static void
-gpk_application_menu_install_cb (GtkAction *action, GpkApplication *application)
+gpk_application_menu_install_cb (GtkAction *_action, gpointer user_data)
 {
-	gpk_application_install (application);
+	gpk_application_install (NULL);
 }
 
 /**
  * gpk_application_menu_remove_cb:
  **/
 static void
-gpk_application_menu_remove_cb (GtkAction *action, GpkApplication *application)
+gpk_application_menu_remove_cb (GtkAction *_action, gpointer user_data)
 {
-	gpk_application_remove (application);
+	gpk_application_remove (NULL);
 }
 
 /**
  * gpk_application_menu_run_cb:
  **/
 static void
-gpk_application_menu_run_cb (GtkAction *action, GpkApplication *application)
+gpk_application_menu_run_cb (GtkAction *_action, gpointer user_data)
 {
 	gchar **package_ids;
 	GtkTreeView *treeview;
@@ -880,7 +817,7 @@ gpk_application_menu_run_cb (GtkAction *action, GpkApplication *application)
 	gchar *package_id = NULL;
 
 	/* get selection */
-	treeview = GTK_TREE_VIEW (gtk_builder_get_object (application->priv->builder, "treeview_packages"));
+	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_packages"));
 	selection = gtk_tree_view_get_selection (treeview);
 	ret = gtk_tree_selection_get_selected (selection, &model, &iter);
 	if (!ret) {
@@ -897,7 +834,7 @@ gpk_application_menu_run_cb (GtkAction *action, GpkApplication *application)
 	if (pk_bitfield_contain (state, GPK_STATE_INSTALLED)) {
 		/* run this single package id */
 		package_ids = pk_package_ids_from_id (package_id);
-		gpk_helper_run_show (application->priv->helper_run, package_ids);
+		gpk_helper_run_show (helper_run, package_ids);
 		g_strfreev (package_ids);
 	}
 	g_free (package_id);
@@ -907,7 +844,7 @@ gpk_application_menu_run_cb (GtkAction *action, GpkApplication *application)
  * gpk_application_get_requires_cb:
  **/
 static void
-gpk_application_get_requires_cb (PkClient *client, GAsyncResult *res, GpkApplication *application)
+gpk_application_get_requires_cb (PkClient *client, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	GError *error = NULL;
@@ -937,7 +874,7 @@ gpk_application_get_requires_cb (PkClient *client, GAsyncResult *res, GpkApplica
 
 		/* if obvious message, don't tell the user */
 		if (pk_error_get_code (error_code) != PK_ERROR_ENUM_TRANSACTION_CANCELLED) {
-			window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+			window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 			gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 						gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		}
@@ -945,7 +882,7 @@ gpk_application_get_requires_cb (PkClient *client, GAsyncResult *res, GpkApplica
 	}
 
 	/* get selection */
-	ret = gpk_application_get_selected_package (application, &package_id_selected, NULL);
+	ret = gpk_application_get_selected_package (&package_id_selected, NULL);
 	if (!ret) {
 		egg_warning ("no package selected");
 		goto out;
@@ -955,7 +892,7 @@ gpk_application_get_requires_cb (PkClient *client, GAsyncResult *res, GpkApplica
 	array = pk_results_get_package_array (results);
 
 	/* empty array */
-	window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+	window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 	if (array->len == 0) {
 		gpk_error_dialog_modal (window,
 					/* TRANSLATORS: no packages returned */
@@ -1002,29 +939,29 @@ out:
  * gpk_application_menu_requires_cb:
  **/
 static void
-gpk_application_menu_requires_cb (GtkAction *action, GpkApplication *application)
+gpk_application_menu_requires_cb (GtkAction *_action, gpointer user_data)
 {
 	gboolean ret;
 	gchar **package_ids = NULL;
 	gchar *package_id_selected = NULL;
 
 	/* get selection */
-	ret = gpk_application_get_selected_package (application, &package_id_selected, NULL);
+	ret = gpk_application_get_selected_package (&package_id_selected, NULL);
 	if (!ret) {
 		egg_warning ("no package selected");
 		goto out;
 	}
 
 	/* ensure new action succeeds */
-	g_cancellable_reset (application->priv->cancellable);
+	g_cancellable_reset (cancellable);
 
 	/* get the requires */
 	package_ids = pk_package_ids_from_id (package_id_selected);
-	pk_client_get_requires_async (PK_CLIENT(application->priv->task),
+	pk_client_get_requires_async (PK_CLIENT (task),
 				      pk_bitfield_value (PK_FILTER_ENUM_NONE),
-				      package_ids, TRUE, application->priv->cancellable,
-				      (PkProgressCallback) gpk_application_progress_cb, application,
-				      (GAsyncReadyCallback) gpk_application_get_requires_cb, application);
+				      package_ids, TRUE, cancellable,
+				      (PkProgressCallback) gpk_application_progress_cb, NULL,
+				      (GAsyncReadyCallback) gpk_application_get_requires_cb, NULL);
 out:
 	g_free (package_id_selected);
 	g_strfreev (package_ids);
@@ -1034,7 +971,7 @@ out:
  * gpk_application_get_depends_cb:
  **/
 static void
-gpk_application_get_depends_cb (PkClient *client, GAsyncResult *res, GpkApplication *application)
+gpk_application_get_depends_cb (PkClient *client, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	GError *error = NULL;
@@ -1064,7 +1001,7 @@ gpk_application_get_depends_cb (PkClient *client, GAsyncResult *res, GpkApplicat
 
 		/* if obvious message, don't tell the user */
 		if (pk_error_get_code (error_code) != PK_ERROR_ENUM_TRANSACTION_CANCELLED) {
-			window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+			window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 			gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 						gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		}
@@ -1075,14 +1012,14 @@ gpk_application_get_depends_cb (PkClient *client, GAsyncResult *res, GpkApplicat
 	array = pk_results_get_package_array (results);
 
 	/* get selection */
-	ret = gpk_application_get_selected_package (application, &package_id_selected, NULL);
+	ret = gpk_application_get_selected_package (&package_id_selected, NULL);
 	if (!ret) {
 		egg_warning ("no package selected");
 		goto out;
 	}
 
 	/* empty array */
-	window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+	window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 	if (array->len == 0) {
 		gpk_error_dialog_modal (window,
 					/* TRANSLATORS: no packages returned */
@@ -1129,29 +1066,29 @@ out:
  * gpk_application_menu_depends_cb:
  **/
 static void
-gpk_application_menu_depends_cb (GtkAction *action, GpkApplication *application)
+gpk_application_menu_depends_cb (GtkAction *_action, gpointer user_data)
 {
 	gboolean ret;
 	gchar **package_ids = NULL;
 	gchar *package_id_selected = NULL;
 
 	/* get selection */
-	ret = gpk_application_get_selected_package (application, &package_id_selected, NULL);
+	ret = gpk_application_get_selected_package (&package_id_selected, NULL);
 	if (!ret) {
 		egg_warning ("no package selected");
 		goto out;
 	}
 
 	/* ensure new action succeeds */
-	g_cancellable_reset (application->priv->cancellable);
+	g_cancellable_reset (cancellable);
 
 	/* get the depends */
 	package_ids = pk_package_ids_from_id (package_id_selected);
-	pk_client_get_depends_async (PK_CLIENT(application->priv->task),
+	pk_client_get_depends_async (PK_CLIENT (task),
 				     pk_bitfield_value (PK_FILTER_ENUM_NONE),
-				     package_ids, TRUE, application->priv->cancellable,
-				     (PkProgressCallback) gpk_application_progress_cb, application,
-				     (GAsyncReadyCallback) gpk_application_get_depends_cb, application);
+				     package_ids, TRUE, cancellable,
+				     (PkProgressCallback) gpk_application_progress_cb, NULL,
+				     (GAsyncReadyCallback) gpk_application_get_depends_cb, NULL);
 out:
 	g_free (package_id_selected);
 	g_strfreev (package_ids);
@@ -1161,7 +1098,7 @@ out:
  * gpk_application_get_full_repo_name:
  **/
 static const gchar *
-gpk_application_get_full_repo_name (GpkApplication *application, const gchar *data)
+gpk_application_get_full_repo_name (const gchar *data)
 {
 	const gchar *repo_name;
 
@@ -1173,7 +1110,7 @@ gpk_application_get_full_repo_name (GpkApplication *application, const gchar *da
 	}
 
 	/* try to find in cached repo array */
-	repo_name = (const gchar *) g_hash_table_lookup (application->priv->repos, data);
+	repo_name = (const gchar *) g_hash_table_lookup (repos, data);
 	if (repo_name == NULL) {
 		egg_warning ("no repo name, falling back to %s", data);
 		return data;
@@ -1185,7 +1122,7 @@ gpk_application_get_full_repo_name (GpkApplication *application, const gchar *da
  * gpk_application_add_detail_item:
  **/
 static void
-gpk_application_add_detail_item (GpkApplication *application, const gchar *title, const gchar *text, const gchar *uri)
+gpk_application_add_detail_item (const gchar *title, const gchar *text, const gchar *uri)
 {
 	gchar *markup;
 	GtkTreeView *treeview;
@@ -1193,17 +1130,17 @@ gpk_application_add_detail_item (GpkApplication *application, const gchar *title
 	GtkTreeSelection *selection;
 
 	/* we don't need to clear anymore */
-	if (application->priv->details_event_id > 0) {
-		g_source_remove (application->priv->details_event_id);
-		application->priv->details_event_id = 0;
+	if (details_event_id > 0) {
+		g_source_remove (details_event_id);
+		details_event_id = 0;
 	}
 
 	/* format */
 	markup = g_strdup_printf ("<b>%s:</b>", title);
 
 	egg_debug ("%s %s %s", markup, text, uri);
-	gtk_list_store_append (application->priv->details_store, &iter);
-	gtk_list_store_set (application->priv->details_store, &iter,
+	gtk_list_store_append (details_store, &iter);
+	gtk_list_store_set (details_store, &iter,
 			    DETAIL_COLUMN_TITLE, markup,
 			    DETAIL_COLUMN_TEXT, text,
 			    DETAIL_COLUMN_URI, uri,
@@ -1211,7 +1148,7 @@ gpk_application_add_detail_item (GpkApplication *application, const gchar *title
 
 	g_free (markup);
 
-	treeview = GTK_TREE_VIEW (gtk_builder_get_object (application->priv->builder, "treeview_detail"));
+	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_detail"));
 	selection = gtk_tree_view_get_selection (treeview);
 	gtk_tree_selection_set_mode (selection, GTK_SELECTION_NONE);
 	gtk_tree_view_columns_autosize (treeview);
@@ -1221,19 +1158,19 @@ gpk_application_add_detail_item (GpkApplication *application, const gchar *title
  * gpk_application_clear_details_really:
  **/
 static gboolean
-gpk_application_clear_details_really (GpkApplication *application)
+gpk_application_clear_details_really (gpointer user_data)
 {
 	GtkWidget *widget;
 
 	/* hide details */
-	gtk_list_store_clear (application->priv->details_store);
+	gtk_list_store_clear (details_store);
 
 	/* clear the old text */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "textview_description"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "textview_description"));
 	gpk_application_set_text_buffer (widget, NULL);
 
 	/* hide dead widgets */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "scrolledwindow_detail"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "scrolledwindow_detail"));
 	gtk_widget_hide (widget);
 
 	/* never repeat */
@@ -1244,39 +1181,37 @@ gpk_application_clear_details_really (GpkApplication *application)
  * gpk_application_clear_details:
  **/
 static void
-gpk_application_clear_details (GpkApplication *application)
+gpk_application_clear_details (gpointer user_data)
 {
 	/* only clear the last data if it takes a little while, else we flicker the display */
-	if (application->priv->details_event_id > 0)
-		g_source_remove (application->priv->details_event_id);
-	application->priv->details_event_id =
-		g_timeout_add (200, (GSourceFunc) gpk_application_clear_details_really, application);
-#if GLIB_CHECK_VERSION(2,25,8)
-	g_source_set_name_by_id (application->priv->details_event_id,
+	if (details_event_id > 0)
+		g_source_remove (details_event_id);
+	details_event_id =
+		g_timeout_add (200, (GSourceFunc) gpk_application_clear_details_really, NULL);
+	g_source_set_name_by_id (details_event_id,
 				 "[GpkApplication] clear-details");
-#endif
 }
 
 /**
  * gpk_application_clear_packages:
  **/
 static void
-gpk_application_clear_packages (GpkApplication *application)
+gpk_application_clear_packages (gpointer user_data)
 {
 	/* clear existing array */
-	gtk_list_store_clear (application->priv->packages_store);
-	application->priv->has_package = FALSE;
+	gtk_list_store_clear (packages_store);
+	has_package = FALSE;
 }
 
 /**
  * gpk_application_text_format_display:
  **/
 static gchar *
-gpk_application_text_format_display (GpkApplication *application, const gchar *ascii)
+gpk_application_text_format_display (const gchar *ascii)
 {
 	gchar *text;
-	egg_markdown_set_output (application->priv->markdown, EGG_MARKDOWN_OUTPUT_TEXT);
-	text = egg_markdown_parse (application->priv->markdown, ascii);
+	egg_markdown_set_output (markdown, EGG_MARKDOWN_OUTPUT_TEXT);
+	text = egg_markdown_parse (markdown, ascii);
 	return text;
 }
 
@@ -1284,7 +1219,7 @@ gpk_application_text_format_display (GpkApplication *application, const gchar *a
  * gpk_application_add_item_to_results:
  **/
 static void
-gpk_application_add_item_to_results (GpkApplication *application, PkPackage *item)
+gpk_application_add_item_to_results (PkPackage *item)
 {
 	GtkTreeIter iter;
 	gchar *summary_markup;
@@ -1309,14 +1244,14 @@ gpk_application_add_item_to_results (GpkApplication *application, PkPackage *ite
 		      NULL);
 
 	/* format if required */
-	egg_markdown_set_output (application->priv->markdown, EGG_MARKDOWN_OUTPUT_PANGO);
-	summary_markup = egg_markdown_parse (application->priv->markdown, summary);
+	egg_markdown_set_output (markdown, EGG_MARKDOWN_OUTPUT_PANGO);
+	summary_markup = egg_markdown_parse (markdown, summary);
 
 	/* mark as got so we don't warn */
-	application->priv->has_package = TRUE;
+	has_package = TRUE;
 
 	/* are we in the package array? */
-	in_queue = (pk_package_sack_find_by_id (application->priv->package_sack, package_id) != NULL);
+	in_queue = (pk_package_sack_find_by_id (package_sack, package_id) != NULL);
 	installed = (info == PK_INFO_ENUM_INSTALLED) || (info == PK_INFO_ENUM_COLLECTION_INSTALLED);
 
 	if (installed)
@@ -1330,7 +1265,7 @@ gpk_application_add_item_to_results (GpkApplication *application, PkPackage *ite
 
 	/* use the application icon if available */
 	split = pk_package_id_split (package_id);
-	icon = gpk_desktop_guess_icon_name (application->priv->desktop, split[PK_PACKAGE_ID_NAME]);
+	icon = gpk_desktop_guess_icon_name (desktop, split[PK_PACKAGE_ID_NAME]);
 	g_strfreev (split);
 	if (icon == NULL)
 		icon = gpk_application_state_get_icon (state);
@@ -1341,10 +1276,10 @@ gpk_application_add_item_to_results (GpkApplication *application, PkPackage *ite
 	text = gpk_package_id_format_twoline (package_id, summary_markup);
 
 	/* can we modify this? */
-	enabled = gpk_application_get_checkbox_enable (application, state);
+	enabled = gpk_application_get_checkbox_enable (state);
 
-	gtk_list_store_append (application->priv->packages_store, &iter);
-	gtk_list_store_set (application->priv->packages_store, &iter,
+	gtk_list_store_append (packages_store, &iter);
+	gtk_list_store_set (packages_store, &iter,
 			    PACKAGES_COLUMN_STATE, state,
 			    PACKAGES_COLUMN_CHECKBOX, checkbox,
 			    PACKAGES_COLUMN_CHECKBOX_VISIBLE, enabled,
@@ -1370,7 +1305,7 @@ gpk_application_add_item_to_results (GpkApplication *application, PkPackage *ite
  * gpk_application_suggest_better_search:
  **/
 static void
-gpk_application_suggest_better_search (GpkApplication *application)
+gpk_application_suggest_better_search (gpointer user_data)
 {
 	const gchar *message = NULL;
 	/* TRANSLATORS: no results were found for this search */
@@ -1379,16 +1314,16 @@ gpk_application_suggest_better_search (GpkApplication *application)
 	gchar *text;
 	PkBitfield state = 0;
 
-	if (application->priv->search_mode == GPK_MODE_GROUP ||
-	    application->priv->search_mode == GPK_MODE_ALL_PACKAGES) {
+	if (search_mode == GPK_MODE_GROUP ||
+	    search_mode == GPK_MODE_ALL_PACKAGES) {
 		/* TRANSLATORS: be helpful, but this shouldn't happen */
 		message = _("Try entering a package name in the search bar.");
-	}  else if (application->priv->search_mode == GPK_MODE_SELECTED) {
+	}  else if (search_mode == GPK_MODE_SELECTED) {
 		/* TRANSLATORS: nothing in the package queue */
 		message = _("There are no packages queued to be installed or removed.");
 	} else {
-		if (application->priv->search_type == GPK_SEARCH_NAME ||
-		    application->priv->search_type == GPK_SEARCH_FILE)
+		if (search_type == GPK_SEARCH_NAME ||
+		    search_type == GPK_SEARCH_FILE)
 			/* TRANSLATORS: tell the user to switch to details search mode */
 			message = _("Try searching package descriptions by clicking the icon next to the search text.");
 		else
@@ -1397,8 +1332,8 @@ gpk_application_suggest_better_search (GpkApplication *application)
 	}
 
 	text = g_strdup_printf ("%s\n%s", title, message);
-	gtk_list_store_append (application->priv->packages_store, &iter);
-	gtk_list_store_set (application->priv->packages_store, &iter,
+	gtk_list_store_append (packages_store, &iter);
+	gtk_list_store_set (packages_store, &iter,
 			    PACKAGES_COLUMN_STATE, state,
 			    PACKAGES_COLUMN_CHECKBOX, FALSE,
 			    PACKAGES_COLUMN_CHECKBOX_VISIBLE, FALSE,
@@ -1413,9 +1348,9 @@ gpk_application_suggest_better_search (GpkApplication *application)
  * gpk_application_perform_search_idle_cb:
  **/
 static gboolean
-gpk_application_perform_search_idle_cb (GpkApplication *application)
+gpk_application_perform_search_idle_cb (gpointer user_data)
 {
-	gpk_application_perform_search (application);
+	gpk_application_perform_search (NULL);
 	return FALSE;
 }
 
@@ -1426,7 +1361,7 @@ gpk_application_perform_search_idle_cb (GpkApplication *application)
  * results we cancel the search and start getting the package details.
  **/
 static void
-gpk_application_select_exact_match (GpkApplication *application, const gchar *text)
+gpk_application_select_exact_match (const gchar *text)
 {
 	GtkTreeView *treeview;
 	gboolean valid;
@@ -1437,10 +1372,8 @@ gpk_application_select_exact_match (GpkApplication *application, const gchar *te
 	gchar *package_id;
 	gchar **split;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* get the first iter in the array */
-	treeview = GTK_TREE_VIEW (gtk_builder_get_object (application->priv->builder, "treeview_packages"));
+	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_packages"));
 	model = gtk_tree_view_get_model (treeview);
 	valid = gtk_tree_model_get_iter_first (model, &iter);
 
@@ -1448,7 +1381,6 @@ gpk_application_select_exact_match (GpkApplication *application, const gchar *te
 	while (valid) {
 		gtk_tree_model_get (model, &iter, PACKAGES_COLUMN_ID, &package_id, -1);
 		if (package_id != NULL) {
-
 			/* exact match, so select and scroll */
 			split = pk_package_id_split (package_id);
 			if (g_strcmp0 (split[PK_PACKAGE_ID_NAME], text) == 0) {
@@ -1469,12 +1401,11 @@ gpk_application_select_exact_match (GpkApplication *application, const gchar *te
 	}
 }
 
-
 /**
  * gpk_application_run_installed:
  **/
 static void
-gpk_application_run_installed (GpkApplication *application, PkResults *results)
+gpk_application_run_installed (PkResults *results)
 {
 	guint i;
 	GPtrArray *array;
@@ -1506,7 +1437,7 @@ gpk_application_run_installed (GpkApplication *application, PkResults *results)
 
 	/* this is async */
 	package_ids = pk_ptr_array_to_strv (package_ids_array);
-	gpk_helper_run_show (application->priv->helper_run, package_ids);
+	gpk_helper_run_show (helper_run, package_ids);
 
 out:
 	g_strfreev (package_ids);
@@ -1519,11 +1450,10 @@ out:
  * gpk_application_finished_cb:
  **/
 static void
-gpk_application_finished_cb (PkClient *client, PkExitEnum exit_enum, guint runtime, GpkApplication *application)
+gpk_application_finished_cb (PkClient *client, PkExitEnum exit_enum, guint runtime, gpointer user_data)
 {
-	g_return_if_fail (GPK_IS_APPLICATION (application));
 
-//	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "progressbar_progress"));
+//	widget = GTK_WIDGET (gtk_builder_get_object (builder, "progressbar_progress"));
 //	gtk_widget_hide (widget);
 
 }
@@ -1533,33 +1463,31 @@ gpk_application_finished_cb (PkClient *client, PkExitEnum exit_enum, guint runti
  * gpk_application_cancel_cb:
  **/
 static void
-gpk_application_cancel_cb (GtkWidget *button_widget, GpkApplication *application)
+gpk_application_cancel_cb (GtkWidget *button_widget, gpointer user_data)
 {
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
-	g_cancellable_cancel (application->priv->cancellable);
+	g_cancellable_cancel (cancellable);
 
 	/* switch buttons around */
-	application->priv->search_mode = GPK_MODE_UNKNOWN;
+	search_mode = GPK_MODE_UNKNOWN;
 }
 
 /**
  * gpk_application_set_button_find_sensitivity:
  **/
 static void
-gpk_application_set_button_find_sensitivity (GpkApplication *application)
+gpk_application_set_button_find_sensitivity (gpointer user_data)
 {
 	gboolean sensitive;
 	GtkWidget *widget;
 	const gchar *search;
 
 	/* get the text in the search bar */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "entry_text"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "entry_text"));
 	search = gtk_entry_get_text (GTK_ENTRY (widget));
 
 	/* only sensitive if not in the middle of a search and has valid text */
-	sensitive = !application->priv->search_in_progress && !egg_strzero (search);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_find"));
+	sensitive = !search_in_progress && !egg_strzero (search);
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_find"));
 	gtk_widget_set_sensitive (widget, sensitive);
 }
 
@@ -1567,7 +1495,7 @@ gpk_application_set_button_find_sensitivity (GpkApplication *application)
  * gpk_application_search_cb:
  **/
 static void
-gpk_application_search_cb (PkClient *client, GAsyncResult *res, GpkApplication *application)
+gpk_application_search_cb (PkClient *client, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	GError *error = NULL;
@@ -1593,7 +1521,7 @@ gpk_application_search_cb (PkClient *client, GAsyncResult *res, GpkApplication *
 
 		/* if obvious message, don't tell the user */
 		if (pk_error_get_code (error_code) != PK_ERROR_ENUM_TRANSACTION_CANCELLED) {
-			window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+			window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 			gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 						gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		}
@@ -1604,36 +1532,36 @@ gpk_application_search_cb (PkClient *client, GAsyncResult *res, GpkApplication *
 	array = pk_results_get_package_array (results);
 	for (i=0; i<array->len; i++) {
 		item = g_ptr_array_index (array, i);
-		gpk_application_add_item_to_results (application, item);
+		gpk_application_add_item_to_results (item);
 	}
 
 	/* were there no entries found? */
-	if (!application->priv->has_package)
-		gpk_application_suggest_better_search (application);
+	if (!has_package)
+		gpk_application_suggest_better_search (NULL);
 
 	/* if there is an exact match, select it */
-	gpk_application_select_exact_match (application, application->priv->search_text);
+	gpk_application_select_exact_match (search_text);
 
 	/* focus back to the text extry */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "entry_text"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "entry_text"));
 	gtk_widget_grab_focus (widget);
 
 	/* reset UI */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "treeview_groups"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_groups"));
 	gtk_widget_set_sensitive (widget, TRUE);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "textview_description"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "textview_description"));
 	gtk_widget_set_sensitive (widget, TRUE);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "treeview_detail"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_detail"));
 	gtk_widget_set_sensitive (widget, TRUE);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "entry_text"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "entry_text"));
 	gtk_widget_set_sensitive (widget, TRUE);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_apply"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_apply"));
 	gtk_widget_set_sensitive (widget, TRUE);
-	gpk_application_set_buttons_apply_clear (application);
+	gpk_application_set_buttons_apply_clear (NULL);
 out:
 	/* mark find button sensitive */
-	application->priv->search_in_progress = FALSE;
-	gpk_application_set_button_find_sensitivity (application);
+	search_in_progress = FALSE;
+	gpk_application_set_button_find_sensitivity (NULL);
 
 	if (error_code != NULL)
 		g_object_unref (error_code);
@@ -1647,7 +1575,7 @@ out:
  * gpk_application_perform_search_name_details_file:
  **/
 static void
-gpk_application_perform_search_name_details_file (GpkApplication *application)
+gpk_application_perform_search_name_details_file (gpointer user_data)
 {
 	GtkEntry *entry;
 	GtkWindow *window;
@@ -1655,21 +1583,21 @@ gpk_application_perform_search_name_details_file (GpkApplication *application)
 	gboolean ret;
 	gchar **searches = NULL;
 
-	entry = GTK_ENTRY (gtk_builder_get_object (application->priv->builder, "entry_text"));
-	g_free (application->priv->search_text);
-	application->priv->search_text = g_strdup (gtk_entry_get_text (entry));
+	entry = GTK_ENTRY (gtk_builder_get_object (builder, "entry_text"));
+	g_free (search_text);
+	search_text = g_strdup (gtk_entry_get_text (entry));
 
 	/* have we got input? */
-	if (egg_strzero (application->priv->search_text)) {
+	if (egg_strzero (search_text)) {
 		egg_debug ("no input");
 		goto out;
 	}
 
-	ret = !egg_strzero (application->priv->search_text);
+	ret = !egg_strzero (search_text);
 	if (!ret) {
 		egg_debug ("invalid input text, will fail");
 		/* TODO - make the dialog turn red... */
-		window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+		window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 		gpk_error_dialog_modal (window,
 					/* TRANSLATORS: title: invlid text in the search bar */
 					_("Invalid search text"),
@@ -1677,42 +1605,42 @@ gpk_application_perform_search_name_details_file (GpkApplication *application)
 					_("The search text contains invalid characters"), NULL);
 		goto out;
 	}
-	egg_debug ("find %s", application->priv->search_text);
+	egg_debug ("find %s", search_text);
 
 	/* mark find button insensitive */
-	application->priv->search_in_progress = TRUE;
-	gpk_application_set_button_find_sensitivity (application);
+	search_in_progress = TRUE;
+	gpk_application_set_button_find_sensitivity (NULL);
 
 	/* ensure new action succeeds */
-	g_cancellable_reset (application->priv->cancellable);
+	g_cancellable_reset (cancellable);
 
 	/* do the search */
-	searches = g_strsplit (application->priv->search_text, " ", -1);
-	if (application->priv->search_type == GPK_SEARCH_NAME) {
-		pk_client_search_names_async (PK_CLIENT(application->priv->task),
-					     application->priv->filters_current,
-					     searches, application->priv->cancellable,
-					     (PkProgressCallback) gpk_application_progress_cb, application,
-					     (GAsyncReadyCallback) gpk_application_search_cb, application);
-	} else if (application->priv->search_type == GPK_SEARCH_DETAILS) {
-		pk_client_search_details_async (PK_CLIENT(application->priv->task),
-					     application->priv->filters_current,
-					     searches, application->priv->cancellable,
-					     (PkProgressCallback) gpk_application_progress_cb, application,
-					     (GAsyncReadyCallback) gpk_application_search_cb, application);
-	} else if (application->priv->search_type == GPK_SEARCH_FILE) {
-		pk_client_search_files_async (PK_CLIENT(application->priv->task),
-					     application->priv->filters_current,
-					     searches, application->priv->cancellable,
-					     (PkProgressCallback) gpk_application_progress_cb, application,
-					     (GAsyncReadyCallback) gpk_application_search_cb, application);
+	searches = g_strsplit (search_text, " ", -1);
+	if (search_type == GPK_SEARCH_NAME) {
+		pk_client_search_names_async (PK_CLIENT(task),
+					     filters_current,
+					     searches, cancellable,
+					     (PkProgressCallback) gpk_application_progress_cb, NULL,
+					     (GAsyncReadyCallback) gpk_application_search_cb, NULL);
+	} else if (search_type == GPK_SEARCH_DETAILS) {
+		pk_client_search_details_async (PK_CLIENT(task),
+					     filters_current,
+					     searches, cancellable,
+					     (PkProgressCallback) gpk_application_progress_cb, NULL,
+					     (GAsyncReadyCallback) gpk_application_search_cb, NULL);
+	} else if (search_type == GPK_SEARCH_FILE) {
+		pk_client_search_files_async (PK_CLIENT(task),
+					     filters_current,
+					     searches, cancellable,
+					     (PkProgressCallback) gpk_application_progress_cb, NULL,
+					     (GAsyncReadyCallback) gpk_application_search_cb, NULL);
 	} else {
 		egg_warning ("invalid search type");
 		goto out;
 	}
 
 	if (!ret) {
-		window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+		window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 		gpk_error_dialog_modal (window,
 					/* TRANSLATORS: title: we failed to execute the mthod */
 					_("The search could not be completed"),
@@ -1729,28 +1657,25 @@ out:
  * gpk_application_perform_search_others:
  **/
 static void
-gpk_application_perform_search_others (GpkApplication *application)
+gpk_application_perform_search_others (gpointer user_data)
 {
-	gchar **groups;
-
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-	g_return_if_fail (application->priv->group != NULL);
+	gchar **search_groups;
 
 	/* ensure new action succeeds */
-	g_cancellable_reset (application->priv->cancellable);
-
-	if (application->priv->search_mode == GPK_MODE_GROUP) {
-		groups = g_strsplit (application->priv->group, " ", -1);
-		pk_client_search_groups_async (PK_CLIENT(application->priv->task),
-					      application->priv->filters_current, groups, application->priv->cancellable,
-					      (PkProgressCallback) gpk_application_progress_cb, application,
-					      (GAsyncReadyCallback) gpk_application_search_cb, application);
-		g_strfreev (groups);
+	g_cancellable_reset (cancellable);
+
+	if (search_mode == GPK_MODE_GROUP) {
+		search_groups = g_strsplit (search_group, " ", -1);
+		pk_client_search_groups_async (PK_CLIENT(task),
+					       filters_current, search_groups, cancellable,
+					       (PkProgressCallback) gpk_application_progress_cb, NULL,
+					       (GAsyncReadyCallback) gpk_application_search_cb, NULL);
+		g_strfreev (search_groups);
 	} else {
-		pk_client_get_packages_async (PK_CLIENT(application->priv->task),
-					      application->priv->filters_current, application->priv->cancellable,
-					      (PkProgressCallback) gpk_application_progress_cb, application,
-					      (GAsyncReadyCallback) gpk_application_search_cb, application);
+		pk_client_get_packages_async (PK_CLIENT(task),
+					      filters_current, cancellable,
+					      (PkProgressCallback) gpk_application_progress_cb, NULL,
+					      (GAsyncReadyCallback) gpk_application_search_cb, NULL);
 	}
 }
 
@@ -1758,7 +1683,7 @@ gpk_application_perform_search_others (GpkApplication *application)
  * gpk_application_populate_selected:
  **/
 static gboolean
-gpk_application_populate_selected (GpkApplication *application)
+gpk_application_populate_selected (gpointer user_data)
 {
 	guint i;
 	PkPackage *package;
@@ -1766,18 +1691,18 @@ gpk_application_populate_selected (GpkApplication *application)
 	GPtrArray *array;
 
 	/* get size */
-	array = pk_package_sack_get_array (application->priv->package_sack);
+	array = pk_package_sack_get_array (package_sack);
 
 	/* nothing in queue */
 	if (array->len == 0) {
-		gpk_application_suggest_better_search (application);
+		gpk_application_suggest_better_search (NULL);
 		goto out;
 	}
 
 	/* dump queue to package window */
 	for (i=0; i<array->len; i++) {
 		package = g_ptr_array_index (array, i);
-		gpk_application_add_item_to_results (application, package);
+		gpk_application_add_item_to_results (package);
 	}
 out:
 	g_ptr_array_unref (array);
@@ -1785,18 +1710,18 @@ out:
 	guint len;
 
 	/* get size */
-	len = pk_package_sack_get_size (application->priv->package_sack);
+	len = pk_package_sack_get_size (package_sack);
 
 	/* nothing in queue */
 	if (len == 0) {
-		gpk_application_suggest_better_search (application);
+		gpk_application_suggest_better_search (NULL);
 		goto out;
 	}
 
 	/* dump queue to package window */
 	for (i=0; i<len; i++) {
-		package = pk_package_sack_get_index (application->priv->package_sack, i);
-		gpk_application_add_item_to_results (application, package);
+		package = pk_package_sack_get_index (package_sack, i);
+		gpk_application_add_item_to_results (package);
 	}
 out:
 #endif
@@ -1807,20 +1732,18 @@ out:
  * gpk_application_perform_search:
  **/
 static void
-gpk_application_perform_search (GpkApplication *application)
+gpk_application_perform_search (gpointer user_data)
 {
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
-	gpk_application_clear_details (application);
-	gpk_application_clear_packages (application);
-
-	if (application->priv->search_mode == GPK_MODE_NAME_DETAILS_FILE) {
-		gpk_application_perform_search_name_details_file (application);
-	} else if (application->priv->search_mode == GPK_MODE_GROUP ||
-		   application->priv->search_mode == GPK_MODE_ALL_PACKAGES) {
-		gpk_application_perform_search_others (application);
-	} else if (application->priv->search_mode == GPK_MODE_SELECTED) {
-		gpk_application_populate_selected (application);
+	gpk_application_clear_details (NULL);
+	gpk_application_clear_packages (NULL);
+
+	if (search_mode == GPK_MODE_NAME_DETAILS_FILE) {
+		gpk_application_perform_search_name_details_file (NULL);
+	} else if (search_mode == GPK_MODE_GROUP ||
+		   search_mode == GPK_MODE_ALL_PACKAGES) {
+		gpk_application_perform_search_others (NULL);
+	} else if (search_mode == GPK_MODE_SELECTED) {
+		gpk_application_populate_selected (NULL);
 	} else {
 		egg_debug ("doing nothing");
 	}
@@ -1830,12 +1753,10 @@ gpk_application_perform_search (GpkApplication *application)
  * gpk_application_find_cb:
  **/
 static void
-gpk_application_find_cb (GtkWidget *button_widget, GpkApplication *application)
+gpk_application_find_cb (GtkWidget *button_widget, gpointer user_data)
 {
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
-	application->priv->search_mode = GPK_MODE_NAME_DETAILS_FILE;
-	gpk_application_perform_search (application);
+	search_mode = GPK_MODE_NAME_DETAILS_FILE;
+	gpk_application_perform_search (NULL);
 }
 
 /**
@@ -1843,7 +1764,7 @@ gpk_application_find_cb (GtkWidget *button_widget, GpkApplication *application)
  * @event: The event type, unused.
  **/
 static gboolean
-gpk_application_quit (GpkApplication *application)
+gpk_application_quit (GtkApplication *application)
 {
 #if PK_CHECK_VERSION(0,6,1)
 	GPtrArray *array;
@@ -1853,18 +1774,16 @@ gpk_application_quit (GpkApplication *application)
 	GtkWindow *window;
 	GtkWidget *dialog;
 
-	g_return_val_if_fail (GPK_IS_APPLICATION (application), FALSE);
-
 	/* do we have any items queued for removal or installation? */
 #if PK_CHECK_VERSION(0,6,1)
-	array = pk_package_sack_get_array (application->priv->package_sack);
+	array = pk_package_sack_get_array (package_sack);
 	len = array->len;
 	g_ptr_array_unref (array);
 #else
-	len = pk_package_sack_get_size (application->priv->package_sack);
+	len = pk_package_sack_get_size (package_sack);
 #endif
 	if (len != 0) {
-		window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+		window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 		dialog = gtk_message_dialog_new (window, GTK_DIALOG_MODAL,
 						 GTK_MESSAGE_WARNING, GTK_BUTTONS_CANCEL,
 						 /* TRANSLATORS: title: warn the user they are quitting with unapplied changes */
@@ -1885,10 +1804,8 @@ gpk_application_quit (GpkApplication *application)
 	}
 
 	/* we might have visual stuff running, close them down */
-	g_cancellable_cancel (application->priv->cancellable);
-
-	egg_debug ("emitting action-close");
-	g_signal_emit (application, signals [SIGNAL_CLOSE], 0);
+	g_cancellable_cancel (cancellable);
+	g_application_release (G_APPLICATION (application));
 	return TRUE;
 }
 
@@ -1897,12 +1814,8 @@ gpk_application_quit (GpkApplication *application)
  * @event: The event type, unused.
  **/
 static gboolean
-gpk_application_delete_event_cb (GtkWidget	*widget,
-				GdkEvent	*event,
-				GpkApplication	*application)
+gpk_application_delete_event_cb (GtkWidget *widget, GdkEvent *event, GtkApplication *application)
 {
-	g_return_val_if_fail (GPK_IS_APPLICATION (application), FALSE);
-
 	return !gpk_application_quit (application);
 }
 
@@ -1910,7 +1823,7 @@ gpk_application_delete_event_cb (GtkWidget	*widget,
  * gpk_application_menu_quit_cb:
  **/
 static void
-gpk_application_menu_quit_cb (GtkAction *action, GpkApplication *application)
+gpk_application_menu_quit_cb (GtkAction *_action, GtkApplication *application)
 {
 	gpk_application_quit (application);
 }
@@ -1919,22 +1832,20 @@ gpk_application_menu_quit_cb (GtkAction *action, GpkApplication *application)
  * gpk_application_text_changed_cb:
  **/
 static gboolean
-gpk_application_text_changed_cb (GtkEntry *entry, GdkEventKey *event, GpkApplication *application)
+gpk_application_text_changed_cb (GtkEntry *entry, GdkEventKey *event, gpointer user_data)
 {
 	GtkTreeView *treeview;
 	GtkTreeSelection *selection;
 
-	g_return_val_if_fail (GPK_IS_APPLICATION (application), FALSE);
-
 	/* clear group selection if we have the tab */
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_SEARCH_GROUP)) {
-		treeview = GTK_TREE_VIEW (gtk_builder_get_object (application->priv->builder, "treeview_groups"));
+	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_SEARCH_GROUP)) {
+		treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_groups"));
 		selection = gtk_tree_view_get_selection (treeview);
 		gtk_tree_selection_unselect_all (selection);
 	}
 
 	/* mark find button sensitive */
-	gpk_application_set_button_find_sensitivity (application);
+	gpk_application_set_button_find_sensitivity (NULL);
 	return FALSE;
 }
 
@@ -1944,7 +1855,6 @@ gpk_application_text_changed_cb (GtkEntry *entry, GdkEventKey *event, GpkApplica
 static void
 gpk_application_packages_installed_clicked_cb (GtkCellRendererToggle *cell, gchar *path_str, gpointer data)
 {
-	GpkApplication *application = (GpkApplication *) data;
 	GtkTreeView *treeview;
 	GtkTreeModel *model;
 	GtkTreeIter iter;
@@ -1952,9 +1862,7 @@ gpk_application_packages_installed_clicked_cb (GtkCellRendererToggle *cell, gcha
 	GtkTreeSelection *selection;
 	PkBitfield state;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
-	treeview = GTK_TREE_VIEW (gtk_builder_get_object (application->priv->builder, "treeview_packages"));
+	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_packages"));
 	model = gtk_tree_view_get_model (treeview);
 	path = gtk_tree_path_new_from_string (path_str);
 
@@ -1969,20 +1877,20 @@ gpk_application_packages_installed_clicked_cb (GtkCellRendererToggle *cell, gcha
 	gtk_tree_selection_select_iter (selection, &iter);
 
 	if (gpk_application_state_get_checkbox (state)) {
-		gpk_application_remove (application);
+		gpk_application_remove (NULL);
 	} else {
-		gpk_application_install (application);
+		gpk_application_install (NULL);
 	}
 	gtk_tree_path_free (path);
 }
 
-static void gpk_application_packages_treeview_clicked_cb (GtkTreeSelection *selection, GpkApplication *application);
+static void gpk_application_packages_treeview_clicked_cb (GtkTreeSelection *selection, gpointer user_data);
 
 /**
  * gpk_application_button_help_cb:
  **/
 static void
-gpk_application_button_help_cb (GtkWidget *widget_button, GpkApplication *application)
+gpk_application_button_help_cb (GtkWidget *widget_button, gpointer user_data)
 {
 	gpk_gnome_help ("add-remove");
 }
@@ -1991,7 +1899,7 @@ gpk_application_button_help_cb (GtkWidget *widget_button, GpkApplication *applic
  * gpk_application_button_clear_cb:
  **/
 static void
-gpk_application_button_clear_cb (GtkWidget *widget_button, GpkApplication *application)
+gpk_application_button_clear_cb (GtkWidget *widget_button, gpointer user_data)
 {
 	GtkTreeView *treeview;
 	gboolean valid;
@@ -2003,10 +1911,8 @@ gpk_application_button_clear_cb (GtkWidget *widget_button, GpkApplication *appli
 	PkBitfield state;
 	gboolean ret;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* get the first iter in the array */
-	treeview = GTK_TREE_VIEW (gtk_builder_get_object (application->priv->builder, "treeview_packages"));
+	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_packages"));
 	model = gtk_tree_view_get_model (treeview);
 	valid = gtk_tree_model_get_iter_first (model, &iter);
 
@@ -2031,20 +1937,20 @@ gpk_application_button_clear_cb (GtkWidget *widget_button, GpkApplication *appli
 	}
 
 	/* clear queue */
-	pk_package_sack_clear (application->priv->package_sack);
+	pk_package_sack_clear (package_sack);
 
 	/* force a button refresh */
 	selection = gtk_tree_view_get_selection (treeview);
-	gpk_application_packages_treeview_clicked_cb (selection, application);
+	gpk_application_packages_treeview_clicked_cb (selection, NULL);
 
-	gpk_application_set_buttons_apply_clear (application);
+	gpk_application_set_buttons_apply_clear (NULL);
 }
 
 /**
  * gpk_application_install_packages_cb:
  **/
 static void
-gpk_application_install_packages_cb (PkTask *task, GAsyncResult *res, GpkApplication *application)
+gpk_application_install_packages_cb (PkTask *_task, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	GError *error = NULL;
@@ -2067,7 +1973,7 @@ gpk_application_install_packages_cb (PkTask *task, GAsyncResult *res, GpkApplica
 
 		/* if obvious message, don't tell the user */
 		if (pk_error_get_code (error_code) != PK_ERROR_ENUM_TRANSACTION_CANCELLED) {
-			window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+			window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 			gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 						gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		}
@@ -2075,18 +1981,16 @@ gpk_application_install_packages_cb (PkTask *task, GAsyncResult *res, GpkApplica
 	}
 
 	/* idle add in the background */
-	idle_id = g_idle_add ((GSourceFunc) gpk_application_perform_search_idle_cb, application);
-#if GLIB_CHECK_VERSION(2,25,8)
+	idle_id = g_idle_add ((GSourceFunc) gpk_application_perform_search_idle_cb, NULL);
 	g_source_set_name_by_id (idle_id, "[GpkApplication] search");
-#endif
 
 	/* find applications that were installed, and offer to run them */
-	gpk_application_run_installed (application, results);
+	gpk_application_run_installed (results);
 
 	/* clear if success */
-	pk_package_sack_clear (application->priv->package_sack);
-	application->priv->action = GPK_ACTION_NONE;
-	gpk_application_set_buttons_apply_clear (application);
+	pk_package_sack_clear (package_sack);
+	action = GPK_ACTION_NONE;
+	gpk_application_set_buttons_apply_clear (NULL);
 out:
 	if (error_code != NULL)
 		g_object_unref (error_code);
@@ -2098,7 +2002,7 @@ out:
  * gpk_application_remove_packages_cb:
  **/
 static void
-gpk_application_remove_packages_cb (PkTask *task, GAsyncResult *res, GpkApplication *application)
+gpk_application_remove_packages_cb (PkTask *_task, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	GError *error = NULL;
@@ -2121,7 +2025,7 @@ gpk_application_remove_packages_cb (PkTask *task, GAsyncResult *res, GpkApplicat
 
 		/* if obvious message, don't tell the user */
 		if (pk_error_get_code (error_code) != PK_ERROR_ENUM_TRANSACTION_CANCELLED) {
-			window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+			window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 			gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 						gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		}
@@ -2129,15 +2033,13 @@ gpk_application_remove_packages_cb (PkTask *task, GAsyncResult *res, GpkApplicat
 	}
 
 	/* idle add in the background */
-	idle_id = g_idle_add ((GSourceFunc) gpk_application_perform_search_idle_cb, application);
-#if GLIB_CHECK_VERSION(2,25,8)
+	idle_id = g_idle_add ((GSourceFunc) gpk_application_perform_search_idle_cb, NULL);
 	g_source_set_name_by_id (idle_id, "[GpkApplication] search");
-#endif
 
 	/* clear if success */
-	pk_package_sack_clear (application->priv->package_sack);
-	application->priv->action = GPK_ACTION_NONE;
-	gpk_application_set_buttons_apply_clear (application);
+	pk_package_sack_clear (package_sack);
+	action = GPK_ACTION_NONE;
+	gpk_application_set_buttons_apply_clear (NULL);
 out:
 	if (error_code != NULL)
 		g_object_unref (error_code);
@@ -2149,47 +2051,43 @@ out:
  * gpk_application_button_apply_cb:
  **/
 static void
-gpk_application_button_apply_cb (GtkWidget *widget, GpkApplication *application)
+gpk_application_button_apply_cb (GtkWidget *widget, gpointer user_data)
 {
 	gchar **package_ids = NULL;
 	gboolean autoremove;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* ensure new action succeeds */
-	g_cancellable_reset (application->priv->cancellable);
-
-	package_ids = pk_package_sack_get_ids (application->priv->package_sack);
-	if (application->priv->action == GPK_ACTION_INSTALL) {
+	g_cancellable_reset (cancellable);
 
+	package_ids = pk_package_sack_get_ids (package_sack);
+	if (action == GPK_ACTION_INSTALL) {
 		/* install */
-		pk_task_install_packages_async (application->priv->task, package_ids, application->priv->cancellable,
-						(PkProgressCallback) gpk_application_progress_cb, application,
-						(GAsyncReadyCallback) gpk_application_install_packages_cb, application);
+		pk_task_install_packages_async (task, package_ids, cancellable,
+						(PkProgressCallback) gpk_application_progress_cb, NULL,
+						(GAsyncReadyCallback) gpk_application_install_packages_cb, NULL);
 
 		/* make package array insensitive */
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "treeview_packages"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_packages"));
 		gtk_widget_set_sensitive (widget, FALSE);
 
 		/* make apply button insensitive */
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_apply"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_apply"));
 		gtk_widget_set_sensitive (widget, FALSE);
 
-	} else if (application->priv->action == GPK_ACTION_REMOVE) {
-
-		autoremove = g_settings_get_boolean (application->priv->settings, GPK_SETTINGS_ENABLE_AUTOREMOVE);
+	} else if (action == GPK_ACTION_REMOVE) {
+		autoremove = g_settings_get_boolean (settings, GPK_SETTINGS_ENABLE_AUTOREMOVE);
 
 		/* remove */
-		pk_task_remove_packages_async (application->priv->task, package_ids, TRUE, autoremove, application->priv->cancellable,
-					       (PkProgressCallback) gpk_application_progress_cb, application,
-					       (GAsyncReadyCallback) gpk_application_remove_packages_cb, application);
+		pk_task_remove_packages_async (task, package_ids, TRUE, autoremove, cancellable,
+					       (PkProgressCallback) gpk_application_progress_cb, NULL,
+					       (GAsyncReadyCallback) gpk_application_remove_packages_cb, NULL);
 
 		/* make package array insensitive */
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "treeview_packages"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_packages"));
 		gtk_widget_set_sensitive (widget, FALSE);
 
 		/* make apply button insensitive */
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_apply"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_apply"));
 		gtk_widget_set_sensitive (widget, FALSE);
 	}
 	g_strfreev (package_ids);
@@ -2197,17 +2095,17 @@ gpk_application_button_apply_cb (GtkWidget *widget, GpkApplication *application)
 }
 
 static void
-gpk_application_packages_add_columns (GpkApplication *application)
+gpk_application_packages_add_columns (gpointer user_data)
 {
 	GtkCellRenderer *renderer;
 	GtkTreeViewColumn *column;
 	GtkTreeView *treeview;
 
-	treeview = GTK_TREE_VIEW (gtk_builder_get_object (application->priv->builder, "treeview_packages"));
+	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_packages"));
 
 	/* column for installed toggles */
 	renderer = gtk_cell_renderer_toggle_new ();
-	g_signal_connect (renderer, "toggled", G_CALLBACK (gpk_application_packages_installed_clicked_cb), application);
+	g_signal_connect (renderer, "toggled", G_CALLBACK (gpk_application_packages_installed_clicked_cb), NULL);
 
 	/* TRANSLATORS: column for installed status */
 	column = gtk_tree_view_column_new_with_attributes (_("Installed"), renderer,
@@ -2260,7 +2158,7 @@ gpk_application_groups_add_columns (GtkTreeView *treeview)
  * gpk_application_groups_treeview_changed_cb:
  **/
 static void
-gpk_application_groups_treeview_changed_cb (GtkTreeSelection *selection, GpkApplication *application)
+gpk_application_groups_treeview_changed_cb (GtkTreeSelection *selection, gpointer user_data)
 {
 	GtkTreeModel *model;
 	GtkTreeIter iter;
@@ -2268,23 +2166,21 @@ gpk_application_groups_treeview_changed_cb (GtkTreeSelection *selection, GpkAppl
 	GtkTreePath *path;
 	gboolean active;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* hide details */
-	gpk_application_clear_details (application);
-	gpk_application_clear_packages (application);
+	gpk_application_clear_details (NULL);
+	gpk_application_clear_packages (NULL);
 
 	/* clear the search text if we clicked the group array */
-	entry = GTK_ENTRY (gtk_builder_get_object (application->priv->builder, "entry_text"));
+	entry = GTK_ENTRY (gtk_builder_get_object (builder, "entry_text"));
 	gtk_entry_set_text (entry, "");
 
 	/* This will only work in single or browse selection mode! */
 	if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
-		g_free (application->priv->group);
+		g_free (search_group);
 		gtk_tree_model_get (model, &iter,
-				     GROUPS_COLUMN_ID, &application->priv->group,
-				     GROUPS_COLUMN_ACTIVE, &active, -1);
-		egg_debug ("selected row is: %s (%i)", application->priv->group, active);
+				    GROUPS_COLUMN_ID, &search_group,
+				    GROUPS_COLUMN_ACTIVE, &active, -1);
+		egg_debug ("selected row is: %s (%i)", search_group, active);
 
 		/* don't search parent groups */
 		if (!active) {
@@ -2297,15 +2193,15 @@ gpk_application_groups_treeview_changed_cb (GtkTreeSelection *selection, GpkAppl
 		}
 
 		/* GetPackages? */
-		if (g_strcmp0 (application->priv->group, "all-packages") == 0)
-			application->priv->search_mode = GPK_MODE_ALL_PACKAGES;
-		else if (g_strcmp0 (application->priv->group, "selected") == 0)
-			application->priv->search_mode = GPK_MODE_SELECTED;
+		if (g_strcmp0 (search_group, "all-packages") == 0)
+			search_mode = GPK_MODE_ALL_PACKAGES;
+		else if (g_strcmp0 (search_group, "selected") == 0)
+			search_mode = GPK_MODE_SELECTED;
 		else
-			application->priv->search_mode = GPK_MODE_GROUP;
+			search_mode = GPK_MODE_GROUP;
 
 		/* actually do the search */
-		gpk_application_perform_search (application);
+		gpk_application_perform_search (NULL);
 	}
 }
 
@@ -2313,7 +2209,7 @@ gpk_application_groups_treeview_changed_cb (GtkTreeSelection *selection, GpkAppl
  * gpk_application_get_details_cb:
  **/
 static void
-gpk_application_get_details_cb (PkClient *client, GAsyncResult *res, GpkApplication *application)
+gpk_application_get_details_cb (PkClient *client, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	GError *error = NULL;
@@ -2335,8 +2231,6 @@ gpk_application_get_details_cb (PkClient *client, GAsyncResult *res, GpkApplicat
 	gchar *description = NULL;
 	guint64 size;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* get the results */
 	results = pk_client_generic_finish (client, res, &error);
 	if (results == NULL) {
@@ -2352,7 +2246,7 @@ gpk_application_get_details_cb (PkClient *client, GAsyncResult *res, GpkApplicat
 
 		/* if obvious message, don't tell the user */
 		if (pk_error_get_code (error_code) != PK_ERROR_ENUM_TRANSACTION_CANCELLED) {
-			window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+			window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 			gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 						gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		}
@@ -2370,10 +2264,10 @@ gpk_application_get_details_cb (PkClient *client, GAsyncResult *res, GpkApplicat
 	item = g_ptr_array_index (array, 0);
 
 	/* hide to start */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "scrolledwindow_detail"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "scrolledwindow_detail"));
 	gtk_widget_show (widget);
 
-	gtk_list_store_clear (application->priv->details_store);
+	gtk_list_store_clear (details_store);
 
 	/* get data */
 	g_object_get (item,
@@ -2391,10 +2285,10 @@ gpk_application_get_details_cb (PkClient *client, GAsyncResult *res, GpkApplicat
 	/* if a collection, mark as such */
 	if (g_strcmp0 (split[PK_PACKAGE_ID_DATA], "meta") == 0)
 		/* TRANSLATORS: the type of package is a collection (metagroup) */
-		gpk_application_add_detail_item (application, _("Type"), _("Collection"), NULL);
+		gpk_application_add_detail_item (_("Type"), _("Collection"), NULL);
 
 	/* homepage */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_homepage"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_homepage"));
 	if (egg_strzero (url) == FALSE) {
 		gtk_widget_set_sensitive (widget, TRUE);
 
@@ -2404,11 +2298,11 @@ gpk_application_get_details_cb (PkClient *client, GAsyncResult *res, GpkApplicat
 		g_free (text);
 
 		/* TRANSLATORS: add an entry to go to the project home page */
-		gpk_application_add_detail_item (application, _("Project"), _("Homepage"), url);
+		gpk_application_add_detail_item (_("Project"), _("Homepage"), url);
 
 		/* save the url for the button */
-		g_free (application->priv->url);
-		application->priv->url = g_strdup (url);
+		g_free (homepage_url);
+		homepage_url = g_strdup (url);
 
 	} else {
 		gtk_widget_set_sensitive (widget, FALSE);
@@ -2418,30 +2312,30 @@ gpk_application_get_details_cb (PkClient *client, GAsyncResult *res, GpkApplicat
 	if (group != PK_GROUP_ENUM_UNKNOWN) {
 		group_text = gpk_group_enum_to_localised_text (group);
 		/* TRANSLATORS: the group the package belongs in */
-		gpk_application_add_detail_item (application, _("Group"), group_text, NULL);
+		gpk_application_add_detail_item (_("Group"), group_text, NULL);
 	}
 
 	/* group */
 	if (!egg_strzero (license)) {
 		/* TRANSLATORS: the licence string for the package */
-		gpk_application_add_detail_item (application, _("License"), license, NULL);
+		gpk_application_add_detail_item (_("License"), license, NULL);
 	}
 
 	/* menu path */
-	value = gpk_desktop_guess_best_file (application->priv->desktop, split[PK_PACKAGE_ID_NAME]);
+	value = gpk_desktop_guess_best_file (desktop, split[PK_PACKAGE_ID_NAME]);
 	if (value != NULL) {
 		text = gpk_desktop_get_menu_path (value);
 		if (text != NULL) {
 			/* TRANSLATORS: the path in the menu, e.g. Applications -> Games */
-			gpk_application_add_detail_item (application, _("Menu"), text, NULL);
+			gpk_application_add_detail_item (_("Menu"), text, NULL);
 		}
 		g_free (text);
 	}
 	g_free (value);
 
 	/* set the description */
-	text = gpk_application_text_format_display (application, description);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "textview_description"));
+	text = gpk_application_text_format_display (description);
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "textview_description"));
 	gpk_application_set_text_buffer (widget, text);
 	g_free (text);
 
@@ -2451,22 +2345,22 @@ gpk_application_get_details_cb (PkClient *client, GAsyncResult *res, GpkApplicat
 		value = g_format_size_for_display (size);
 		if (g_strcmp0 (split[PK_PACKAGE_ID_DATA], "meta") == 0)
 			/* TRANSLATORS: the size of the meta package */
-			gpk_application_add_detail_item (application, _("Size"), value, NULL);
+			gpk_application_add_detail_item (_("Size"), value, NULL);
 		else if (installed)
 			/* TRANSLATORS: the installed size in bytes of the package */
-			gpk_application_add_detail_item (application, _("Installed size"), value, NULL);
+			gpk_application_add_detail_item (_("Installed size"), value, NULL);
 		else
 			/* TRANSLATORS: the download size of the package */
-			gpk_application_add_detail_item (application, _("Download size"), value, NULL);
+			gpk_application_add_detail_item (_("Download size"), value, NULL);
 		g_free (value);
 	}
 
 	/* set the repo text, or hide if installed */
 	if (!installed && g_strcmp0 (split[PK_PACKAGE_ID_DATA], "meta") != 0) {
 		/* get the full name of the repo from the repo_id */
-		repo_name = gpk_application_get_full_repo_name (application, split[PK_PACKAGE_ID_DATA]);
+		repo_name = gpk_application_get_full_repo_name (split[PK_PACKAGE_ID_DATA]);
 		/* TRANSLATORS: where the package came from, the software source name */
-		gpk_application_add_detail_item (application, _("Source"), repo_name, NULL);
+		gpk_application_add_detail_item (_("Source"), repo_name, NULL);
 	}
 out:
 	g_free (package_id);
@@ -2486,7 +2380,7 @@ out:
  * gpk_application_packages_treeview_clicked_cb:
  **/
 static void
-gpk_application_packages_treeview_clicked_cb (GtkTreeSelection *selection, GpkApplication *application)
+gpk_application_packages_treeview_clicked_cb (GtkTreeSelection *selection, gpointer user_data)
 {
 	GtkWidget *widget;
 	GtkTreeModel *model;
@@ -2498,20 +2392,18 @@ gpk_application_packages_treeview_clicked_cb (GtkTreeSelection *selection, GpkAp
 	gchar **package_ids = NULL;
 	gchar *package_id = NULL;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* This will only work in single or browse selection mode! */
 	if (!gtk_tree_selection_get_selected (selection, &model, &iter)) {
 		egg_debug ("no row selected");
 
 		/* we cannot now add it */
-		gpk_application_allow_install (application, FALSE);
-		gpk_application_allow_remove (application, FALSE);
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_selection"));
+		gpk_application_allow_install (FALSE);
+		gpk_application_allow_remove (FALSE);
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_selection"));
 		gtk_widget_hide (widget);
 
 		/* hide details */
-		gpk_application_clear_details (application);
+		gpk_application_clear_details (NULL);
 		goto out;
 	}
 
@@ -2526,7 +2418,7 @@ gpk_application_packages_treeview_clicked_cb (GtkTreeSelection *selection, GpkAp
 	}
 
 	/* show the menu item */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_selection"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_selection"));
 	gtk_widget_show (widget);
 
 	show_install = (state == 0 ||
@@ -2534,31 +2426,31 @@ gpk_application_packages_treeview_clicked_cb (GtkTreeSelection *selection, GpkAp
 	show_remove = (state == pk_bitfield_value (GPK_STATE_INSTALLED) ||
 		       state == pk_bitfield_value (GPK_STATE_IN_LIST));
 
-	if (application->priv->action == GPK_ACTION_INSTALL && !pk_bitfield_contain (state, GPK_STATE_IN_LIST))
+	if (action == GPK_ACTION_INSTALL && !pk_bitfield_contain (state, GPK_STATE_IN_LIST))
 		show_remove = FALSE;
-	if (application->priv->action == GPK_ACTION_REMOVE && !pk_bitfield_contain (state, GPK_STATE_IN_LIST))
+	if (action == GPK_ACTION_REMOVE && !pk_bitfield_contain (state, GPK_STATE_IN_LIST))
 		show_install = FALSE;
 
 	/* only show buttons if we are in the correct mode */
-	gpk_application_allow_install (application, show_install);
-	gpk_application_allow_remove (application, show_remove);
+	gpk_application_allow_install (show_install);
+	gpk_application_allow_remove (show_remove);
 
 	/* hide details */
-	gpk_application_clear_details (application);
+	gpk_application_clear_details (NULL);
 
 	/* only show run menuitem for installed programs */
 	ret = pk_bitfield_contain (state, GPK_STATE_INSTALLED);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_run"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_run"));
 	gtk_widget_set_sensitive (widget, ret);
 
 	/* ensure new action succeeds */
-	g_cancellable_reset (application->priv->cancellable);
+	g_cancellable_reset (cancellable);
 
 	/* get the details */
 	package_ids = pk_package_ids_from_id (package_id);
-	pk_client_get_details_async (PK_CLIENT(application->priv->task), package_ids, application->priv->cancellable,
-				     (PkProgressCallback) gpk_application_progress_cb, application,
-				     (GAsyncReadyCallback) gpk_application_get_details_cb, application);
+	pk_client_get_details_async (PK_CLIENT(task), package_ids, cancellable,
+				     (PkProgressCallback) gpk_application_progress_cb, NULL,
+				     (GAsyncReadyCallback) gpk_application_get_details_cb, NULL);
 out:
 	g_free (package_id);
 	g_strfreev (package_ids);
@@ -2568,12 +2460,10 @@ out:
  * gpk_application_notify_network_state_cb:
  **/
 static void
-gpk_application_notify_network_state_cb (PkControl *control, GParamSpec *pspec, GpkApplication *application)
+gpk_application_notify_network_state_cb (PkControl *_control, GParamSpec *pspec, gpointer user_data)
 {
 	PkNetworkEnum state;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* show icon? */
 	g_object_get (control,
 		      "network-state", &state,
@@ -2585,17 +2475,17 @@ gpk_application_notify_network_state_cb (PkControl *control, GParamSpec *pspec,
  * gpk_application_group_add_data:
  **/
 static void
-gpk_application_group_add_data (GpkApplication *application, PkGroupEnum group)
+gpk_application_group_add_data (PkGroupEnum group)
 {
 	GtkTreeIter iter;
 	const gchar *icon_name;
 	const gchar *text;
 
-	gtk_tree_store_append (application->priv->groups_store, &iter, NULL);
+	gtk_tree_store_append (groups_store, &iter, NULL);
 
 	text = gpk_group_enum_to_localised_text (group);
 	icon_name = gpk_group_enum_to_icon_name (group);
-	gtk_tree_store_set (application->priv->groups_store, &iter,
+	gtk_tree_store_set (groups_store, &iter,
 			    GROUPS_COLUMN_NAME, text,
 			    GROUPS_COLUMN_SUMMARY, NULL,
 			    GROUPS_COLUMN_ID, pk_group_enum_to_text (group),
@@ -2608,12 +2498,12 @@ gpk_application_group_add_data (GpkApplication *application, PkGroupEnum group)
  * gpk_application_group_add_selected:
  **/
 static void
-gpk_application_group_add_selected (GpkApplication *application)
+gpk_application_group_add_selected (gpointer user_data)
 {
 	GtkTreeIter iter;
 
-	gtk_tree_store_append (application->priv->groups_store, &iter, NULL);
-	gtk_tree_store_set (application->priv->groups_store, &iter,
+	gtk_tree_store_append (groups_store, &iter, NULL);
+	gtk_tree_store_set (groups_store, &iter,
 			    /* TRANSLATORS: this is a menu group of packages in the queue */
 			    GROUPS_COLUMN_NAME, _("Selected packages"),
 			    GROUPS_COLUMN_SUMMARY, NULL,
@@ -2655,19 +2545,18 @@ static void
 gpk_application_menu_search_by_name (GtkMenuItem *item, gpointer data)
 {
 	GtkWidget *widget;
-	GpkApplication *application = GPK_APPLICATION (data);
 
 	/* change type */
-	application->priv->search_type = GPK_SEARCH_NAME;
-	egg_debug ("set search type=%i", application->priv->search_type);
+	search_type = GPK_SEARCH_NAME;
+	egg_debug ("set search type=%i", search_type);
 
 	/* save default to GSettings */
-	g_settings_set_enum (application->priv->settings,
+	g_settings_set_enum (settings,
 			     GPK_SETTINGS_SEARCH_MODE,
-			     application->priv->search_type);
+			     search_type);
 
 	/* set the new icon */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "entry_text"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "entry_text"));
 	/* TRANSLATORS: entry tooltip: basic search */
 	gtk_widget_set_tooltip_text (widget, _("Searching by name"));
 	gtk_entry_set_icon_from_stock (GTK_ENTRY (widget), GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_FIND);
@@ -2680,19 +2569,18 @@ static void
 gpk_application_menu_search_by_description (GtkMenuItem *item, gpointer data)
 {
 	GtkWidget *widget;
-	GpkApplication *application = GPK_APPLICATION (data);
 
 	/* set type */
-	application->priv->search_type = GPK_SEARCH_DETAILS;
-	egg_debug ("set search type=%i", application->priv->search_type);
+	search_type = GPK_SEARCH_DETAILS;
+	egg_debug ("set search type=%i", search_type);
 
 	/* save default to GSettings */
-	g_settings_set_enum (application->priv->settings,
+	g_settings_set_enum (settings,
 			     GPK_SETTINGS_SEARCH_MODE,
-			     application->priv->search_type);
+			     search_type);
 
 	/* set the new icon */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "entry_text"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "entry_text"));
 	/* TRANSLATORS: entry tooltip: detailed search */
 	gtk_widget_set_tooltip_text (widget, _("Searching by description"));
 	gtk_entry_set_icon_from_stock (GTK_ENTRY (widget), GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_EDIT);
@@ -2705,19 +2593,18 @@ static void
 gpk_application_menu_search_by_file (GtkMenuItem *item, gpointer data)
 {
 	GtkWidget *widget;
-	GpkApplication *application = GPK_APPLICATION (data);
 
 	/* set type */
-	application->priv->search_type = GPK_SEARCH_FILE;
-	egg_debug ("set search type=%i", application->priv->search_type);
+	search_type = GPK_SEARCH_FILE;
+	egg_debug ("set search type=%i", search_type);
 
 	/* save default to GSettings */
-	g_settings_set_enum (application->priv->settings,
+	g_settings_set_enum (settings,
 			     GPK_SETTINGS_SEARCH_MODE,
-			     application->priv->search_type);
+			     search_type);
 
 	/* set the new icon */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "entry_text"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "entry_text"));
 	/* TRANSLATORS: entry tooltip: file search */
 	gtk_widget_set_tooltip_text (widget, _("Searching by file"));
 	gtk_entry_set_icon_from_stock (GTK_ENTRY (widget), GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_OPEN);
@@ -2732,9 +2619,6 @@ gpk_application_entry_text_icon_press_cb (GtkEntry *entry, GtkEntryIconPosition
 	GtkMenu *menu = (GtkMenu*) gtk_menu_new ();
 	GtkWidget *item;
 	GtkWidget *image;
-	GpkApplication *application = GPK_APPLICATION (data);
-
-	g_return_if_fail (GPK_IS_APPLICATION (application));
 
 	/* only respond to left button */
 	if (event->button != 1)
@@ -2742,36 +2626,36 @@ gpk_application_entry_text_icon_press_cb (GtkEntry *entry, GtkEntryIconPosition
 
 	egg_debug ("icon_pos=%i", icon_pos);
 
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_SEARCH_NAME)) {
+	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_SEARCH_NAME)) {
 		/* TRANSLATORS: context menu item for the search type icon */
 		item = gtk_image_menu_item_new_with_mnemonic (_("Search by name"));
 		image = gtk_image_new_from_stock (GTK_STOCK_FIND, GTK_ICON_SIZE_MENU);
 		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
 		gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (item), TRUE);
 		g_signal_connect (G_OBJECT (item), "activate",
-				  G_CALLBACK (gpk_application_menu_search_by_name), application);
+				  G_CALLBACK (gpk_application_menu_search_by_name), NULL);
 		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 	}
 
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_SEARCH_DETAILS)) {
+	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_SEARCH_DETAILS)) {
 		/* TRANSLATORS: context menu item for the search type icon */
 		item = gtk_image_menu_item_new_with_mnemonic (_("Search by description"));
 		image = gtk_image_new_from_stock (GTK_STOCK_EDIT, GTK_ICON_SIZE_MENU);
 		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
 		gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (item), TRUE);
 		g_signal_connect (G_OBJECT (item), "activate",
-				  G_CALLBACK (gpk_application_menu_search_by_description), application);
+				  G_CALLBACK (gpk_application_menu_search_by_description), NULL);
 		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 	}
 
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_SEARCH_FILE)) {
+	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_SEARCH_FILE)) {
 		/* TRANSLATORS: context menu item for the search type icon */
 		item = gtk_image_menu_item_new_with_mnemonic (_("Search by file name"));
 		image = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
 		gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
 		gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (item), TRUE);
 		g_signal_connect (G_OBJECT (item), "activate",
-				  G_CALLBACK (gpk_application_menu_search_by_file), application);
+				  G_CALLBACK (gpk_application_menu_search_by_file), NULL);
 		gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
 	}
 
@@ -2785,7 +2669,7 @@ gpk_application_entry_text_icon_press_cb (GtkEntry *entry, GtkEntryIconPosition
  * gpk_application_menu_help_cb:
  **/
 static void
-gpk_application_menu_help_cb (GtkAction *action, GpkApplication *application)
+gpk_application_menu_help_cb (GtkAction *_action, gpointer user_data)
 {
 	gpk_gnome_help ("add-remove");
 }
@@ -2794,7 +2678,7 @@ gpk_application_menu_help_cb (GtkAction *action, GpkApplication *application)
  * gpk_application_menu_about_cb:
  **/
 static void
-gpk_application_menu_about_cb (GtkAction *action, GpkApplication *application)
+gpk_application_menu_about_cb (GtkAction *_action, gpointer user_data)
 {
 	GtkWidget *main_window;
 	const char *authors[] = {
@@ -2834,7 +2718,7 @@ gpk_application_menu_about_cb (GtkAction *action, GpkApplication *application)
 				     _(license[2]), "\n\n", _(license[3]), "\n",  NULL);
 
 	/* use parent */
-	main_window = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "window_manager"));
+	main_window = GTK_WIDGET (gtk_builder_get_object (builder, "window_manager"));
 
 	gtk_window_set_default_icon_name (GPK_ICON_SOFTWARE_INSTALLER);
 	gtk_show_about_dialog (GTK_WINDOW (main_window),
@@ -2844,7 +2728,7 @@ gpk_application_menu_about_cb (GtkAction *action, GpkApplication *application)
 			       "wrap-license", TRUE,
 			       "website-label", _("PackageKit Website"),
 			       "website", "http://www.packagekit.org";,
-				/* TRANSLATORS: description of application, gpk-application that is */
+				/* TRANSLATORS: description of NULL, gpk-application that is */
 			       "comments", _("Package Manager for GNOME"),
 			       "authors", authors,
 			       "documenters", documenters,
@@ -2859,17 +2743,15 @@ gpk_application_menu_about_cb (GtkAction *action, GpkApplication *application)
  * gpk_application_menu_sources_cb:
  **/
 static void
-gpk_application_menu_sources_cb (GtkAction *action, GpkApplication *application)
+gpk_application_menu_sources_cb (GtkAction *_action, gpointer user_data)
 {
 	gboolean ret;
 	guint xid;
 	gchar *command;
 	GtkWidget *window;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* get xid */
-	window = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "window_manager"));
+	window = GTK_WIDGET (gtk_builder_get_object (builder, "window_manager"));
 	xid = gdk_x11_drawable_get_xid (gtk_widget_get_window (window));
 
 	command = g_strdup_printf ("%s/gnome-control-center update --parent-window %u", BINDIR, xid);
@@ -2885,17 +2767,15 @@ gpk_application_menu_sources_cb (GtkAction *action, GpkApplication *application)
  * gpk_application_menu_log_cb:
  **/
 static void
-gpk_application_menu_log_cb (GtkAction *action, GpkApplication *application)
+gpk_application_menu_log_cb (GtkAction *_action, gpointer user_data)
 {
 	gboolean ret;
 	guint xid;
 	gchar *command;
 	GtkWidget *window;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* get xid */
-	window = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "window_manager"));
+	window = GTK_WIDGET (gtk_builder_get_object (builder, "window_manager"));
 	xid = gdk_x11_drawable_get_xid (gtk_widget_get_window (window));
 
 	command = g_strdup_printf ("%s/gpk-log --parent-window %u", BINDIR, xid);
@@ -2911,7 +2791,7 @@ gpk_application_menu_log_cb (GtkAction *action, GpkApplication *application)
  * gpk_application_refresh_cache_cb:
  **/
 static void
-gpk_application_refresh_cache_cb (PkClient *client, GAsyncResult *res, GpkApplication *application)
+gpk_application_refresh_cache_cb (PkClient *client, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	GError *error = NULL;
@@ -2933,7 +2813,7 @@ gpk_application_refresh_cache_cb (PkClient *client, GAsyncResult *res, GpkApplic
 
 		/* if obvious message, don't tell the user */
 		if (pk_error_get_code (error_code) != PK_ERROR_ENUM_TRANSACTION_CANCELLED) {
-			window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+			window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 			gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 						gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		}
@@ -2950,16 +2830,14 @@ out:
  * gpk_application_menu_refresh_cb:
  **/
 static void
-gpk_application_menu_refresh_cb (GtkAction *action, GpkApplication *application)
+gpk_application_menu_refresh_cb (GtkAction *_action, gpointer user_data)
 {
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* ensure new action succeeds */
-	g_cancellable_reset (application->priv->cancellable);
+	g_cancellable_reset (cancellable);
 
-	pk_task_refresh_cache_async (application->priv->task, TRUE, application->priv->cancellable,
-				     (PkProgressCallback) gpk_application_progress_cb, application,
-				     (GAsyncReadyCallback) gpk_application_refresh_cache_cb, application);
+	pk_task_refresh_cache_async (task, TRUE, cancellable,
+				     (PkProgressCallback) gpk_application_progress_cb, NULL,
+				     (GAsyncReadyCallback) gpk_application_refresh_cache_cb, NULL);
 }
 
 /**
@@ -2967,12 +2845,10 @@ gpk_application_menu_refresh_cb (GtkAction *action, GpkApplication *application)
  * @widget: The GtkWidget object
  **/
 static void
-gpk_application_menu_filter_installed_cb (GtkWidget *widget, GpkApplication *application)
+gpk_application_menu_filter_installed_cb (GtkWidget *widget, gpointer user_data)
 {
 	const gchar *name;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	name = gtk_buildable_get_name (GTK_BUILDABLE (widget));
 
 	/* only care about new state */
@@ -2981,18 +2857,18 @@ gpk_application_menu_filter_installed_cb (GtkWidget *widget, GpkApplication *app
 
 	/* set new filter */
 	if (g_str_has_suffix (name, "_yes")) {
-		pk_bitfield_add (application->priv->filters_current, PK_FILTER_ENUM_INSTALLED);
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_NOT_INSTALLED);
+		pk_bitfield_add (filters_current, PK_FILTER_ENUM_INSTALLED);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_NOT_INSTALLED);
 	} else if (g_str_has_suffix (name, "_no")) {
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_INSTALLED);
-		pk_bitfield_add (application->priv->filters_current, PK_FILTER_ENUM_NOT_INSTALLED);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_INSTALLED);
+		pk_bitfield_add (filters_current, PK_FILTER_ENUM_NOT_INSTALLED);
 	} else {
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_INSTALLED);
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_NOT_INSTALLED);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_INSTALLED);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_NOT_INSTALLED);
 	}
 
 	/* refresh the search results */
-	gpk_application_perform_search (application);
+	gpk_application_perform_search (NULL);
 }
 
 /**
@@ -3000,12 +2876,10 @@ gpk_application_menu_filter_installed_cb (GtkWidget *widget, GpkApplication *app
  * @widget: The GtkWidget object
  **/
 static void
-gpk_application_menu_filter_devel_cb (GtkWidget *widget, GpkApplication *application)
+gpk_application_menu_filter_devel_cb (GtkWidget *widget, gpointer user_data)
 {
 	const gchar *name;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	name = gtk_buildable_get_name (GTK_BUILDABLE (widget));
 
 	/* only care about new state */
@@ -3014,18 +2888,18 @@ gpk_application_menu_filter_devel_cb (GtkWidget *widget, GpkApplication *applica
 
 	/* set new filter */
 	if (g_str_has_suffix (name, "_yes")) {
-		pk_bitfield_add (application->priv->filters_current, PK_FILTER_ENUM_DEVELOPMENT);
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_NOT_DEVELOPMENT);
+		pk_bitfield_add (filters_current, PK_FILTER_ENUM_DEVELOPMENT);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_NOT_DEVELOPMENT);
 	} else if (g_str_has_suffix (name, "_no")) {
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_DEVELOPMENT);
-		pk_bitfield_add (application->priv->filters_current, PK_FILTER_ENUM_NOT_DEVELOPMENT);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_DEVELOPMENT);
+		pk_bitfield_add (filters_current, PK_FILTER_ENUM_NOT_DEVELOPMENT);
 	} else {
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_DEVELOPMENT);
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_NOT_DEVELOPMENT);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_DEVELOPMENT);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_NOT_DEVELOPMENT);
 	}
 
 	/* refresh the search results */
-	gpk_application_perform_search (application);
+	gpk_application_perform_search (NULL);
 }
 
 /**
@@ -3033,12 +2907,10 @@ gpk_application_menu_filter_devel_cb (GtkWidget *widget, GpkApplication *applica
  * @widget: The GtkWidget object
  **/
 static void
-gpk_application_menu_filter_gui_cb (GtkWidget *widget, GpkApplication *application)
+gpk_application_menu_filter_gui_cb (GtkWidget *widget, gpointer user_data)
 {
 	const gchar *name;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	name = gtk_buildable_get_name (GTK_BUILDABLE (widget));
 
 	/* only care about new state */
@@ -3047,18 +2919,18 @@ gpk_application_menu_filter_gui_cb (GtkWidget *widget, GpkApplication *applicati
 
 	/* set new filter */
 	if (g_str_has_suffix (name, "_yes")) {
-		pk_bitfield_add (application->priv->filters_current, PK_FILTER_ENUM_GUI);
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_NOT_GUI);
+		pk_bitfield_add (filters_current, PK_FILTER_ENUM_GUI);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_NOT_GUI);
 	} else if (g_str_has_suffix (name, "_no")) {
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_GUI);
-		pk_bitfield_add (application->priv->filters_current, PK_FILTER_ENUM_NOT_GUI);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_GUI);
+		pk_bitfield_add (filters_current, PK_FILTER_ENUM_NOT_GUI);
 	} else {
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_GUI);
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_NOT_GUI);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_GUI);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_NOT_GUI);
 	}
 
 	/* refresh the search results */
-	gpk_application_perform_search (application);
+	gpk_application_perform_search (NULL);
 }
 
 /**
@@ -3066,12 +2938,10 @@ gpk_application_menu_filter_gui_cb (GtkWidget *widget, GpkApplication *applicati
  * @widget: The GtkWidget object
  **/
 static void
-gpk_application_menu_filter_free_cb (GtkWidget *widget, GpkApplication *application)
+gpk_application_menu_filter_free_cb (GtkWidget *widget, gpointer user_data)
 {
 	const gchar *name;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	name = gtk_buildable_get_name (GTK_BUILDABLE (widget));
 
 	/* only care about new state */
@@ -3080,18 +2950,18 @@ gpk_application_menu_filter_free_cb (GtkWidget *widget, GpkApplication *applicat
 
 	/* set new filter */
 	if (g_str_has_suffix (name, "_yes")) {
-		pk_bitfield_add (application->priv->filters_current, PK_FILTER_ENUM_FREE);
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_NOT_FREE);
+		pk_bitfield_add (filters_current, PK_FILTER_ENUM_FREE);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_NOT_FREE);
 	} else if (g_str_has_suffix (name, "_no")) {
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_FREE);
-		pk_bitfield_add (application->priv->filters_current, PK_FILTER_ENUM_NOT_FREE);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_FREE);
+		pk_bitfield_add (filters_current, PK_FILTER_ENUM_NOT_FREE);
 	} else {
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_FREE);
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_NOT_FREE);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_FREE);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_NOT_FREE);
 	}
 
 	/* refresh the search results */
-	gpk_application_perform_search (application);
+	gpk_application_perform_search (NULL);
 }
 
 /**
@@ -3099,12 +2969,10 @@ gpk_application_menu_filter_free_cb (GtkWidget *widget, GpkApplication *applicat
  * @widget: The GtkWidget object
  **/
 static void
-gpk_application_menu_filter_source_cb (GtkWidget *widget, GpkApplication *application)
+gpk_application_menu_filter_source_cb (GtkWidget *widget, gpointer user_data)
 {
 	const gchar *name;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	name = gtk_buildable_get_name (GTK_BUILDABLE (widget));
 
 	/* only care about new state */
@@ -3113,18 +2981,18 @@ gpk_application_menu_filter_source_cb (GtkWidget *widget, GpkApplication *applic
 
 	/* set new filter */
 	if (g_str_has_suffix (name, "_yes")) {
-		pk_bitfield_add (application->priv->filters_current, PK_FILTER_ENUM_SOURCE);
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_NOT_SOURCE);
+		pk_bitfield_add (filters_current, PK_FILTER_ENUM_SOURCE);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_NOT_SOURCE);
 	} else if (g_str_has_suffix (name, "_no")) {
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_SOURCE);
-		pk_bitfield_add (application->priv->filters_current, PK_FILTER_ENUM_NOT_SOURCE);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_SOURCE);
+		pk_bitfield_add (filters_current, PK_FILTER_ENUM_NOT_SOURCE);
 	} else {
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_SOURCE);
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_NOT_SOURCE);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_SOURCE);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_NOT_SOURCE);
 	}
 
 	/* refresh the sesource results */
-	gpk_application_perform_search (application);
+	gpk_application_perform_search (NULL);
 }
 
 /**
@@ -3132,25 +3000,23 @@ gpk_application_menu_filter_source_cb (GtkWidget *widget, GpkApplication *applic
  * @widget: The GtkWidget object
  **/
 static void
-gpk_application_menu_filter_basename_cb (GtkWidget *widget, GpkApplication *application)
+gpk_application_menu_filter_basename_cb (GtkWidget *widget, gpointer user_data)
 {
 	gboolean enabled;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* save users preference to GSettings */
 	enabled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
-	g_settings_set_boolean (application->priv->settings,
+	g_settings_set_boolean (settings,
 			       GPK_SETTINGS_FILTER_BASENAME, enabled);
 
 	/* change the filter */
 	if (enabled)
-		pk_bitfield_add (application->priv->filters_current, PK_FILTER_ENUM_BASENAME);
+		pk_bitfield_add (filters_current, PK_FILTER_ENUM_BASENAME);
 	else
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_BASENAME);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_BASENAME);
 
 	/* refresh the search results */
-	gpk_application_perform_search (application);
+	gpk_application_perform_search (NULL);
 }
 
 /**
@@ -3158,25 +3024,23 @@ gpk_application_menu_filter_basename_cb (GtkWidget *widget, GpkApplication *appl
  * @widget: The GtkWidget object
  **/
 static void
-gpk_application_menu_filter_newest_cb (GtkWidget *widget, GpkApplication *application)
+gpk_application_menu_filter_newest_cb (GtkWidget *widget, gpointer user_data)
 {
 	gboolean enabled;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* save users preference to GSettings */
 	enabled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
-	g_settings_set_boolean (application->priv->settings,
+	g_settings_set_boolean (settings,
 			       GPK_SETTINGS_FILTER_NEWEST, enabled);
 
 	/* change the filter */
 	if (enabled)
-		pk_bitfield_add (application->priv->filters_current, PK_FILTER_ENUM_NEWEST);
+		pk_bitfield_add (filters_current, PK_FILTER_ENUM_NEWEST);
 	else
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_NEWEST);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_NEWEST);
 
 	/* refresh the search results */
-	gpk_application_perform_search (application);
+	gpk_application_perform_search (NULL);
 }
 
 /**
@@ -3184,25 +3048,23 @@ gpk_application_menu_filter_newest_cb (GtkWidget *widget, GpkApplication *applic
  * @widget: The GtkWidget object
  **/
 static void
-gpk_application_menu_filter_arch_cb (GtkWidget *widget, GpkApplication *application)
+gpk_application_menu_filter_arch_cb (GtkWidget *widget, gpointer user_data)
 {
 	gboolean enabled;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* save users preference to GSettings */
 	enabled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
-	g_settings_set_boolean (application->priv->settings,
+	g_settings_set_boolean (settings,
 			       GPK_SETTINGS_FILTER_ARCH, enabled);
 
 	/* change the filter */
 	if (enabled)
-		pk_bitfield_add (application->priv->filters_current, PK_FILTER_ENUM_ARCH);
+		pk_bitfield_add (filters_current, PK_FILTER_ENUM_ARCH);
 	else
-		pk_bitfield_remove (application->priv->filters_current, PK_FILTER_ENUM_ARCH);
+		pk_bitfield_remove (filters_current, PK_FILTER_ENUM_ARCH);
 
 	/* refresh the search results */
-	gpk_application_perform_search (application);
+	gpk_application_perform_search (NULL);
 }
 
 /**
@@ -3210,7 +3072,7 @@ gpk_application_menu_filter_arch_cb (GtkWidget *widget, GpkApplication *applicat
  **/
 static void
 gpk_application_package_row_activated_cb (GtkTreeView *treeview, GtkTreePath *path,
-					  GtkTreeViewColumn *col, GpkApplication *application)
+					  GtkTreeViewColumn *col, gpointer user_data)
 {
 	GtkTreeModel *model;
 	GtkTreeIter iter;
@@ -3218,8 +3080,6 @@ gpk_application_package_row_activated_cb (GtkTreeView *treeview, GtkTreePath *pa
 	PkBitfield state;
 	gchar *package_id = NULL;
 
-	g_return_if_fail (GPK_IS_APPLICATION (application));
-
 	/* get selection */
 	model = gtk_tree_view_get_model (treeview);
 	ret = gtk_tree_model_get_iter (model, &iter, path);
@@ -3241,9 +3101,9 @@ gpk_application_package_row_activated_cb (GtkTreeView *treeview, GtkTreePath *pa
 	}
 
 	if (gpk_application_state_get_checkbox (state))
-		gpk_application_remove (application);
+		gpk_application_remove (NULL);
 	else
-		gpk_application_install (application);
+		gpk_application_install (NULL);
 out:
 	g_free (package_id);
 }
@@ -3266,7 +3126,7 @@ gpk_application_group_row_separator_func (GtkTreeModel *model, GtkTreeIter *iter
  * gpk_application_treeview_renderer_clicked:
  **/
 static void
-gpk_application_treeview_renderer_clicked (GtkCellRendererToggle *cell, gchar *uri, GpkApplication *application)
+gpk_application_treeview_renderer_clicked (GtkCellRendererToggle *cell, gchar *uri, gpointer user_data)
 {
 	egg_debug ("clicked %s", uri);
 	gpk_gnome_open (uri);
@@ -3276,13 +3136,13 @@ gpk_application_treeview_renderer_clicked (GtkCellRendererToggle *cell, gchar *u
  * gpk_application_treeview_add_columns_description:
  **/
 static void
-gpk_application_treeview_add_columns_description (GpkApplication *application)
+gpk_application_treeview_add_columns_description (gpointer user_data)
 {
 	GtkCellRenderer *renderer;
 	GtkTreeViewColumn *column;
 	GtkTreeView *treeview;
 
-	treeview = GTK_TREE_VIEW (gtk_builder_get_object (application->priv->builder, "treeview_detail"));
+	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_detail"));
 
 	/* title */
 	column = gtk_tree_view_column_new ();
@@ -3293,7 +3153,7 @@ gpk_application_treeview_add_columns_description (GpkApplication *application)
 
 	/* column for uris */
 	renderer = gpk_cell_renderer_uri_new ();
-	g_signal_connect (renderer, "clicked", G_CALLBACK (gpk_application_treeview_renderer_clicked), application);
+	g_signal_connect (renderer, "clicked", G_CALLBACK (gpk_application_treeview_renderer_clicked), NULL);
 	/* TRANSLATORS: single column for the package details, not visible at the moment */
 	column = gtk_tree_view_column_new_with_attributes (_("Text"), renderer,
 							   "text", DETAIL_COLUMN_TEXT,
@@ -3306,24 +3166,24 @@ gpk_application_treeview_add_columns_description (GpkApplication *application)
  * gpk_application_add_welcome:
  **/
 static void
-gpk_application_add_welcome (GpkApplication *application)
+gpk_application_add_welcome (gpointer user_data)
 {
 	GtkTreeIter iter;
 	const gchar *welcome;
 	PkBitfield state = 0;
 
-	gpk_application_clear_packages (application);
-	gtk_list_store_append (application->priv->packages_store, &iter);
+	gpk_application_clear_packages (NULL);
+	gtk_list_store_append (packages_store, &iter);
 
 	/* enter something nice */
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_SEARCH_GROUP)) {
+	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_SEARCH_GROUP)) {
 		/* TRANSLATORS: welcome text if we can click the group array */
 		welcome = _("Enter a package name and then click find, or click a group to get started.");
 	} else {
 		/* TRANSLATORS: welcome text if we have to search by name */
 		welcome = _("Enter a package name and then click find to get started.");
 	}
-	gtk_list_store_set (application->priv->packages_store, &iter,
+	gtk_list_store_set (packages_store, &iter,
 			    PACKAGES_COLUMN_STATE, state,
 			    PACKAGES_COLUMN_CHECKBOX, FALSE,
 			    PACKAGES_COLUMN_CHECKBOX_VISIBLE, FALSE,
@@ -3338,23 +3198,23 @@ gpk_application_add_welcome (GpkApplication *application)
  * gpk_application_create_group_array_enum:
  **/
 static void
-gpk_application_create_group_array_enum (GpkApplication *application)
+gpk_application_create_group_array_enum (gpointer user_data)
 {
 	GtkWidget *widget;
 	guint i;
 
 	/* set to no indent */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "treeview_groups"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_groups"));
 	gtk_tree_view_set_show_expanders (GTK_TREE_VIEW (widget), FALSE);
 	gtk_tree_view_set_level_indentation  (GTK_TREE_VIEW (widget), 0);
 
 	/* create group tree view if we can search by group */
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_SEARCH_GROUP)) {
+	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_SEARCH_GROUP)) {
 		/* add all the groups supported (except collections, which we handled above */
 		for (i=0; i<PK_GROUP_ENUM_LAST; i++) {
-			if (pk_bitfield_contain (application->priv->groups, i) &&
+			if (pk_bitfield_contain (groups, i) &&
 			    i != PK_GROUP_ENUM_COLLECTIONS && i != PK_GROUP_ENUM_NEWEST)
-				gpk_application_group_add_data (application, i);
+				gpk_application_group_add_data (i);
 		}
 	}
 }
@@ -3363,7 +3223,7 @@ gpk_application_create_group_array_enum (GpkApplication *application)
  * gpk_application_get_categories_cb:
  **/
 static void
-gpk_application_get_categories_cb (PkClient *client, GAsyncResult *res, GpkApplication *application)
+gpk_application_get_categories_cb (PkClient *client, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	GError *error = NULL;
@@ -3402,7 +3262,7 @@ gpk_application_get_categories_cb (PkClient *client, GAsyncResult *res, GpkAppli
 
 		/* if obvious message, don't tell the user */
 		if (pk_error_get_code (error_code) != PK_ERROR_ENUM_TRANSACTION_CANCELLED) {
-			window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+			window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 			gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 						gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		}
@@ -3410,7 +3270,7 @@ gpk_application_get_categories_cb (PkClient *client, GAsyncResult *res, GpkAppli
 	}
 
 	/* set to expanders with indent */
-	treeview = GTK_TREE_VIEW (gtk_builder_get_object (application->priv->builder, "treeview_groups"));
+	treeview = GTK_TREE_VIEW (gtk_builder_get_object (builder, "treeview_groups"));
 	gtk_tree_view_set_show_expanders (treeview, TRUE);
 	gtk_tree_view_set_level_indentation  (treeview, 3);
 
@@ -3425,8 +3285,8 @@ gpk_application_get_categories_cb (PkClient *client, GAsyncResult *res, GpkAppli
 			      "icon", &icon,
 			      NULL);
 
-		gtk_tree_store_append (application->priv->groups_store, &iter, NULL);
-		gtk_tree_store_set (application->priv->groups_store, &iter,
+		gtk_tree_store_append (groups_store, &iter, NULL);
+		gtk_tree_store_set (groups_store, &iter,
 				    GROUPS_COLUMN_NAME, name,
 				    GROUPS_COLUMN_SUMMARY, summary,
 				    GROUPS_COLUMN_ID, cat_id,
@@ -3445,8 +3305,8 @@ gpk_application_get_categories_cb (PkClient *client, GAsyncResult *res, GpkAppli
 				      "icon", &icon_tmp,
 				      NULL);
 			if (g_strcmp0 (parent_id_tmp, cat_id) == 0) {
-				gtk_tree_store_append (application->priv->groups_store, &iter2, &iter);
-				gtk_tree_store_set (application->priv->groups_store, &iter2,
+				gtk_tree_store_append (groups_store, &iter2, &iter);
+				gtk_tree_store_set (groups_store, &iter2,
 						    GROUPS_COLUMN_NAME, name_tmp,
 						    GROUPS_COLUMN_SUMMARY, summary_tmp,
 						    GROUPS_COLUMN_ID, cat_id_tmp,
@@ -3485,15 +3345,15 @@ out:
  * gpk_application_create_group_array_categories:
  **/
 static void
-gpk_application_create_group_array_categories (GpkApplication *application)
+gpk_application_create_group_array_categories (gpointer user_data)
 {
 	/* ensure new action succeeds */
-	g_cancellable_reset (application->priv->cancellable);
+	g_cancellable_reset (cancellable);
 
 	/* get categories supported */
-	pk_client_get_categories_async (PK_CLIENT(application->priv->task), application->priv->cancellable,
-				        (PkProgressCallback) gpk_application_progress_cb, application,
-				        (GAsyncReadyCallback) gpk_application_get_categories_cb, application);
+	pk_client_get_categories_async (PK_CLIENT(task), cancellable,
+				        (PkProgressCallback) gpk_application_progress_cb, NULL,
+				        (GAsyncReadyCallback) gpk_application_get_categories_cb, NULL);
 }
 
 /**
@@ -3502,7 +3362,7 @@ gpk_application_create_group_array_categories (GpkApplication *application)
  * We might have to do things when the keys change; do them here.
  **/
 static void
-gpk_application_key_changed_cb (GSettings *settings, const gchar *key, GpkApplication *application)
+gpk_application_key_changed_cb (GSettings *_settings, const gchar *key, gpointer user_data)
 {
 	GtkEntryCompletion *completion;
 	gboolean ret;
@@ -3510,14 +3370,14 @@ gpk_application_key_changed_cb (GSettings *settings, const gchar *key, GpkApplic
 
 	if (g_strcmp0 (key, GPK_SETTINGS_CATEGORY_GROUPS) == 0) {
 		ret = g_settings_get_boolean (settings, key);
-		gtk_tree_store_clear (application->priv->groups_store);
+		gtk_tree_store_clear (groups_store);
 		if (ret)
-			gpk_application_create_group_array_categories (application);
+			gpk_application_create_group_array_categories (NULL);
 		else
-			gpk_application_create_group_array_enum (application);
+			gpk_application_create_group_array_enum (NULL);
 	} else if (g_strcmp0 (key, GPK_SETTINGS_AUTOCOMPLETE) == 0) {
 		ret = g_settings_get_boolean (settings, key);
-		entry = GTK_ENTRY (gtk_builder_get_object (application->priv->builder, "entry_text"));
+		entry = GTK_ENTRY (gtk_builder_get_object (builder, "entry_text"));
 		if (ret) {
 			completion = gpk_package_entry_completion_new ();
 			gtk_entry_set_completion (entry, completion);
@@ -3532,17 +3392,16 @@ gpk_application_key_changed_cb (GSettings *settings, const gchar *key, GpkApplic
  * pk_backend_status_get_properties_cb:
  **/
 static void
-pk_backend_status_get_properties_cb (GObject *object, GAsyncResult *res, GpkApplication *application)
+pk_backend_status_get_properties_cb (GObject *object, GAsyncResult *res, gpointer user_data)
 {
 	GtkWidget *widget;
 	GError *error = NULL;
-	PkControl *control = PK_CONTROL(object);
+//	PkControl *control = PK_CONTROL(object);
 	gboolean ret;
 	PkBitfield filters;
 	gboolean enabled;
 	GtkTreeIter iter;
 	const gchar *icon_name;
-	GpkSearchType search_type;
 
 	/* get the result */
 	ret = pk_control_get_properties_finish (control, res, &error);
@@ -3555,117 +3414,117 @@ pk_backend_status_get_properties_cb (GObject *object, GAsyncResult *res, GpkAppl
 
 	/* get values */
 	g_object_get (control,
-		      "roles", &application->priv->roles,
+		      "roles", &roles,
 		      "filters", &filters,
-		      "groups", &application->priv->groups,
+		      "groups", &groups,
 		      NULL);
 
 	/* Remove description/file array if needed. */
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_GET_DETAILS) == FALSE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "scrolledwindow2"));
+	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_GET_DETAILS) == FALSE) {
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "scrolledwindow2"));
 		gtk_widget_hide (widget);
 	}
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_GET_FILES) == FALSE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_files"));
+	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_GET_FILES) == FALSE) {
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_files"));
 		gtk_widget_hide (widget);
 	}
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_GET_DEPENDS) == FALSE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_depends"));
+	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_GET_DEPENDS) == FALSE) {
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_depends"));
 		gtk_widget_hide (widget);
 	}
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_GET_REQUIRES) == FALSE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_requires"));
+	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_GET_REQUIRES) == FALSE) {
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_requires"));
 		gtk_widget_hide (widget);
 	}
 
 	/* hide the group selector if we don't support search-groups */
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_SEARCH_GROUP) == FALSE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "scrolledwindow_groups"));
+	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_SEARCH_GROUP) == FALSE) {
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "scrolledwindow_groups"));
 		gtk_widget_hide (widget);
 	}
 
 	/* hide the refresh cache button if we can't do it */
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_REFRESH_CACHE) == FALSE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_refresh"));
+	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_REFRESH_CACHE) == FALSE) {
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_refresh"));
 		gtk_widget_hide (widget);
 	}
 
 	/* hide the software-sources button if we can't do it */
-	if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_GET_REPO_LIST) == FALSE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_sources"));
+	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_GET_REPO_LIST) == FALSE) {
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_sources"));
 		gtk_widget_hide (widget);
 	}
 
 	/* hide the filters we can't support */
 	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_INSTALLED) == FALSE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_installed"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_installed"));
 		gtk_widget_hide (widget);
 	}
 	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_DEVELOPMENT) == FALSE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_devel"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_devel"));
 		gtk_widget_hide (widget);
 	}
 	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_GUI) == FALSE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_gui"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_gui"));
 		gtk_widget_hide (widget);
 	}
 	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_FREE) == FALSE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_free"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_free"));
 		gtk_widget_hide (widget);
 	}
 	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_ARCH) == FALSE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_arch"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_arch"));
 		gtk_widget_hide (widget);
 	}
 	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_SOURCE) == FALSE) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_source"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_source"));
 		gtk_widget_hide (widget);
 	}
 
 	/* BASENAME, use by default, or hide */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_basename"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_basename"));
 	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_BASENAME)) {
-		enabled = g_settings_get_boolean (application->priv->settings,
+		enabled = g_settings_get_boolean (settings,
 						 GPK_SETTINGS_FILTER_BASENAME);
 		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (widget), enabled);
 		/* work round a gtk2+ bug: toggled should be fired when doing gtk_check_menu_item_set_active */
-		gpk_application_menu_filter_basename_cb (widget, application);
+		gpk_application_menu_filter_basename_cb (widget, NULL);
 	} else {
 		gtk_widget_hide (widget);
 	}
 
 	/* NEWEST, use by default, or hide */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_newest"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_newest"));
 	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_NEWEST)) {
 		/* set from remembered state */
-		enabled = g_settings_get_boolean (application->priv->settings,
+		enabled = g_settings_get_boolean (settings,
 						  GPK_SETTINGS_FILTER_NEWEST);
 		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (widget), enabled);
 		/* work round a gtk2+ bug: toggled should be fired when doing gtk_check_menu_item_set_active */
-		gpk_application_menu_filter_newest_cb (widget, application);
+		gpk_application_menu_filter_newest_cb (widget, NULL);
 	} else {
 		gtk_widget_hide (widget);
 	}
 
 	/* ARCH, use by default, or hide */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_arch"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_arch"));
 	if (pk_bitfield_contain (filters, PK_FILTER_ENUM_ARCH)) {
 		/* set from remembered state */
-		enabled = g_settings_get_boolean (application->priv->settings,
+		enabled = g_settings_get_boolean (settings,
 						  GPK_SETTINGS_FILTER_ARCH);
 		gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (widget), enabled);
 		/* work round a gtk2+ bug: toggled should be fired when doing gtk_check_menu_item_set_active */
-		gpk_application_menu_filter_arch_cb (widget, application);
+		gpk_application_menu_filter_arch_cb (widget, NULL);
 	} else {
 		gtk_widget_hide (widget);
 	}
 
 	/* add an "all" entry if we can GetPackages */
-	ret = g_settings_get_boolean (application->priv->settings, GPK_SETTINGS_SHOW_ALL_PACKAGES);
-	if (ret && pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_GET_PACKAGES)) {
-		gtk_tree_store_append (application->priv->groups_store, &iter, NULL);
+	ret = g_settings_get_boolean (settings, GPK_SETTINGS_SHOW_ALL_PACKAGES);
+	if (ret && pk_bitfield_contain (roles, PK_ROLE_ENUM_GET_PACKAGES)) {
+		gtk_tree_store_append (groups_store, &iter, NULL);
 		icon_name = gpk_role_enum_to_icon_name (PK_ROLE_ENUM_GET_PACKAGES);
-		gtk_tree_store_set (application->priv->groups_store, &iter,
+		gtk_tree_store_set (groups_store, &iter,
 				    /* TRANSLATORS: title: all of the packages on the system and availble in sources */
 				    GROUPS_COLUMN_NAME, _("All packages"),
 				    /* TRANSLATORS: tooltip: all packages */
@@ -3676,60 +3535,60 @@ pk_backend_status_get_properties_cb (GObject *object, GAsyncResult *res, GpkAppl
 	}
 
 	/* add these at the top of the array */
-	if (pk_bitfield_contain (application->priv->groups, PK_GROUP_ENUM_COLLECTIONS))
-		gpk_application_group_add_data (application, PK_GROUP_ENUM_COLLECTIONS);
-	if (pk_bitfield_contain (application->priv->groups, PK_GROUP_ENUM_NEWEST))
-		gpk_application_group_add_data (application, PK_GROUP_ENUM_NEWEST);
+	if (pk_bitfield_contain (groups, PK_GROUP_ENUM_COLLECTIONS))
+		gpk_application_group_add_data (PK_GROUP_ENUM_COLLECTIONS);
+	if (pk_bitfield_contain (groups, PK_GROUP_ENUM_NEWEST))
+		gpk_application_group_add_data (PK_GROUP_ENUM_NEWEST);
 
 	/* add group item for selected items */
-	gpk_application_group_add_selected (application);
+	gpk_application_group_add_selected (NULL);
 
 	/* add a separator */
-	gtk_tree_store_append (application->priv->groups_store, &iter, NULL);
-	gtk_tree_store_set (application->priv->groups_store, &iter,
+	gtk_tree_store_append (groups_store, &iter, NULL);
+	gtk_tree_store_set (groups_store, &iter,
 			    GROUPS_COLUMN_ID, "separator", -1);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "treeview_groups"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_groups"));
 	gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (widget),
 					      gpk_application_group_row_separator_func, NULL, NULL);
 
 	/* simple array or category tree? */
-	ret = g_settings_get_boolean (application->priv->settings, GPK_SETTINGS_CATEGORY_GROUPS);
-	if (ret && pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_GET_CATEGORIES))
-		gpk_application_create_group_array_categories (application);
+	ret = g_settings_get_boolean (settings, GPK_SETTINGS_CATEGORY_GROUPS);
+	if (ret && pk_bitfield_contain (roles, PK_ROLE_ENUM_GET_CATEGORIES))
+		gpk_application_create_group_array_categories (NULL);
 	else
-		gpk_application_create_group_array_enum (application);
+		gpk_application_create_group_array_enum (NULL);
 
 	/* set the search mode */
-	search_type = g_settings_get_enum (application->priv->settings, GPK_SETTINGS_SEARCH_MODE);
+	search_type = g_settings_get_enum (settings, GPK_SETTINGS_SEARCH_MODE);
 
 	/* search by name */
 	if (search_type == GPK_SEARCH_NAME) {
-		gpk_application_menu_search_by_name (NULL, application);
+		gpk_application_menu_search_by_name (NULL, NULL);
 
 	/* set to details if we can we do the action? */
 	} else if (search_type == GPK_SEARCH_DETAILS) {
-		if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_SEARCH_DETAILS)) {
-			gpk_application_menu_search_by_description (NULL, application);
+		if (pk_bitfield_contain (roles, PK_ROLE_ENUM_SEARCH_DETAILS)) {
+			gpk_application_menu_search_by_description (NULL, NULL);
 		} else {
 			egg_warning ("cannont use mode %i as not capable, using name", search_type);
-			gpk_application_menu_search_by_name (NULL, application);
+			gpk_application_menu_search_by_name (NULL, NULL);
 		}
 
 	/* set to file if we can we do the action? */
 	} else if (search_type == GPK_SEARCH_FILE) {
-		gpk_application_menu_search_by_file (NULL, application);
+		gpk_application_menu_search_by_file (NULL, NULL);
 
-		if (pk_bitfield_contain (application->priv->roles, PK_ROLE_ENUM_SEARCH_FILE)) {
-			gpk_application_menu_search_by_file (NULL, application);
+		if (pk_bitfield_contain (roles, PK_ROLE_ENUM_SEARCH_FILE)) {
+			gpk_application_menu_search_by_file (NULL, NULL);
 		} else {
 			egg_warning ("cannont use mode %i as not capable, using name", search_type);
-			gpk_application_menu_search_by_name (NULL, application);
+			gpk_application_menu_search_by_name (NULL, NULL);
 		}
 
 	/* mode not recognised */
 	} else {
 		egg_warning ("cannot recognise mode %i, using name", search_type);
-		gpk_application_menu_search_by_name (NULL, application);
+		gpk_application_menu_search_by_name (NULL, NULL);
 	}
 out:
 	return;
@@ -3739,7 +3598,7 @@ out:
  * gpk_application_get_repo_list_cb:
  **/
 static void
-gpk_application_get_repo_list_cb (PkClient *client, GAsyncResult *res, GpkApplication *application)
+gpk_application_get_repo_list_cb (PkClient *client, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	GError *error = NULL;
@@ -3766,7 +3625,7 @@ gpk_application_get_repo_list_cb (PkClient *client, GAsyncResult *res, GpkApplic
 
 		/* if obvious message, don't tell the user */
 		if (pk_error_get_code (error_code) != PK_ERROR_ENUM_TRANSACTION_CANCELLED) {
-			window = GTK_WINDOW (gtk_builder_get_object (application->priv->builder, "window_manager"));
+			window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
 			gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 						gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		}
@@ -3785,7 +3644,7 @@ gpk_application_get_repo_list_cb (PkClient *client, GAsyncResult *res, GpkApplic
 		egg_debug ("repo = %s:%s", repo_id, description);
 		/* no problem, just no point adding as we will fallback to the repo_id */
 		if (description != NULL)
-			g_hash_table_insert (application->priv->repos, g_strdup (repo_id), g_strdup (description));
+			g_hash_table_insert (repos, g_strdup (repo_id), g_strdup (description));
 		g_free (repo_id);
 		g_free (description);
 	}
@@ -3800,10 +3659,21 @@ out:
 }
 
 /**
- * gpk_application_init:
+ * gpk_application_activate_cb:
  **/
 static void
-gpk_application_init (GpkApplication *application)
+gpk_application_activate_cb (GtkApplication *_application, gpointer user_data)
+{
+	GtkWindow *window;
+	window = GTK_WINDOW (gtk_builder_get_object (builder, "window_manager"));
+	gtk_window_present (window);
+}
+
+/**
+ * gpk_application_startup_cb:
+ **/
+static void
+gpk_application_startup_cb (GtkApplication *application, gpointer user_data)
 {
 	GtkWidget *main_window;
 	GtkWidget *widget;
@@ -3815,49 +3685,36 @@ gpk_application_init (GpkApplication *application)
 	GSList *array;
 	guint retval;
 
-	application->priv = GPK_APPLICATION_GET_PRIVATE (application);
-	application->priv->group = NULL;
-	application->priv->url = NULL;
-	application->priv->search_text = NULL;
-	application->priv->has_package = FALSE;
-	application->priv->details_event_id = 0;
-	application->priv->status_id = 0;
-	application->priv->status_last = PK_STATUS_ENUM_UNKNOWN;
-	application->priv->package_sack = pk_package_sack_new ();
+	package_sack = pk_package_sack_new ();
+	settings = g_settings_new (GPK_SETTINGS_SCHEMA);
+	cancellable = g_cancellable_new ();
+	repos = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
 
-	application->priv->settings = g_settings_new (GPK_SETTINGS_SCHEMA);
-	application->priv->cancellable = g_cancellable_new ();
-	application->priv->repos = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
-
-	application->priv->search_type = GPK_SEARCH_UNKNOWN;
-	application->priv->search_mode = GPK_MODE_UNKNOWN;
-	application->priv->filters_current = 0;
-
-	application->priv->markdown = egg_markdown_new ();
-	egg_markdown_set_max_lines (application->priv->markdown, 50);
+	markdown = egg_markdown_new ();
+	egg_markdown_set_max_lines (markdown, 50);
 
 	/* watch gnome-packagekit keys */
-	g_signal_connect (application->priv->settings, "changed", G_CALLBACK (gpk_application_key_changed_cb), application);
+	g_signal_connect (settings, "changed", G_CALLBACK (gpk_application_key_changed_cb), NULL);
 
 	/* create array stores */
-	application->priv->packages_store = gtk_list_store_new (PACKAGES_COLUMN_LAST,
-							        G_TYPE_STRING,
-								G_TYPE_UINT64,
-							        G_TYPE_BOOLEAN,
-							        G_TYPE_BOOLEAN,
-							        G_TYPE_STRING,
-							        G_TYPE_STRING,
-							        G_TYPE_STRING);
-	application->priv->groups_store = gtk_tree_store_new (GROUPS_COLUMN_LAST,
-							      G_TYPE_STRING,
-							      G_TYPE_STRING,
-							      G_TYPE_STRING,
-							      G_TYPE_STRING,
-							      G_TYPE_BOOLEAN);
-	application->priv->details_store = gtk_list_store_new (DETAIL_COLUMN_LAST,
-							       G_TYPE_STRING,
-							       G_TYPE_STRING,
-							       G_TYPE_STRING);
+	packages_store = gtk_list_store_new (PACKAGES_COLUMN_LAST,
+					      G_TYPE_STRING,
+					      G_TYPE_UINT64,
+					      G_TYPE_BOOLEAN,
+					      G_TYPE_BOOLEAN,
+					      G_TYPE_STRING,
+					      G_TYPE_STRING,
+					      G_TYPE_STRING);
+	groups_store = gtk_tree_store_new (GROUPS_COLUMN_LAST,
+					   G_TYPE_STRING,
+					   G_TYPE_STRING,
+					   G_TYPE_STRING,
+					   G_TYPE_STRING,
+					   G_TYPE_BOOLEAN);
+	details_store = gtk_list_store_new (DETAIL_COLUMN_LAST,
+					    G_TYPE_STRING,
+					    G_TYPE_STRING,
+					    G_TYPE_STRING);
 
 	/* add application specific icons to search path */
 	gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
@@ -3865,39 +3722,40 @@ gpk_application_init (GpkApplication *application)
 	gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
 					   "/usr/share/PackageKit/icons");
 
-	application->priv->control = pk_control_new ();
+	control = pk_control_new ();
 
 	/* this is what we use mainly */
-	application->priv->task = PK_TASK(gpk_task_new ());
-	g_object_set (application->priv->task,
+	task = PK_TASK (gpk_task_new ());
+	g_object_set (task,
 		      "background", FALSE,
 		      NULL);
 
 	/* get properties */
-	pk_control_get_properties_async (application->priv->control, NULL, (GAsyncReadyCallback) pk_backend_status_get_properties_cb, application);
-	g_signal_connect (application->priv->control, "notify::network-state",
-			  G_CALLBACK (gpk_application_notify_network_state_cb), application);
+	pk_control_get_properties_async (control, NULL, (GAsyncReadyCallback) pk_backend_status_get_properties_cb, NULL);
+	g_signal_connect (control, "notify::network-state",
+			  G_CALLBACK (gpk_application_notify_network_state_cb), NULL);
 
 	/* get localised data from sqlite database */
-	application->priv->desktop = pk_desktop_new ();
-	ret = pk_desktop_open_database (application->priv->desktop, NULL);
+	desktop = pk_desktop_new ();
+	ret = pk_desktop_open_database (desktop, NULL);
 	if (!ret)
 		egg_warning ("Failure opening database");
 
 	/* get UI */
-	application->priv->builder = gtk_builder_new ();
-	retval = gtk_builder_add_from_file (application->priv->builder, GPK_DATA "/gpk-application.ui", &error);
+	builder = gtk_builder_new ();
+	retval = gtk_builder_add_from_file (builder, GPK_DATA "/gpk-application.ui", &error);
 	if (retval == 0) {
 		egg_warning ("failed to load ui: %s", error->message);
 		g_error_free (error);
-		goto out_build;
+		goto out;
 	}
 
-	main_window = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "window_manager"));
+	main_window = GTK_WIDGET (gtk_builder_get_object (builder, "window_manager"));
+	gtk_application_add_window (application, GTK_WINDOW (main_window));
 
 	/* helpers */
-	application->priv->helper_run = gpk_helper_run_new ();
-	gpk_helper_run_set_parent (application->priv->helper_run, GTK_WINDOW (main_window));
+	helper_run = gpk_helper_run_new ();
+	gpk_helper_run_set_parent (helper_run, GTK_WINDOW (main_window));
 
 	/* Hide window first so that the dialogue resizes itself without redrawing */
 	gtk_widget_hide (main_window);
@@ -3909,24 +3767,24 @@ gpk_application_init (GpkApplication *application)
 			  G_CALLBACK (gpk_application_delete_event_cb), application);
 
 	/* clear */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_clear"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_clear"));
 	g_signal_connect (widget, "clicked",
-			  G_CALLBACK (gpk_application_button_clear_cb), application);
+			  G_CALLBACK (gpk_application_button_clear_cb), NULL);
 	/* TRANSLATORS: tooltip on the clear button */
 	gtk_widget_set_tooltip_text (widget, _("Clear current selection"));
 
 	/* help */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_help"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_help"));
 	g_signal_connect (widget, "clicked",
-			  G_CALLBACK (gpk_application_button_help_cb), application);
+			  G_CALLBACK (gpk_application_button_help_cb), NULL);
 
 	/* set F1 = contents */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menu_about"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menu_about"));
 	array = gtk_accel_groups_from_object (G_OBJECT (main_window));
 	if (array != NULL)
 		gtk_menu_set_accel_group (GTK_MENU (widget), GTK_ACCEL_GROUP (array->data));
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_help"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_help"));
 	gtk_menu_item_set_accel_path (GTK_MENU_ITEM (widget),
 			              "<gpk-application>/menuitem_help");
 	gtk_accel_map_add_entry ("<gpk-application>/menuitem_help", GDK_KEY_F1, 0);
@@ -3934,159 +3792,159 @@ gpk_application_init (GpkApplication *application)
 	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (widget), image);
 
 	/* install */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_apply"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_apply"));
 	g_signal_connect (widget, "clicked",
-			  G_CALLBACK (gpk_application_button_apply_cb), application);
+			  G_CALLBACK (gpk_application_button_apply_cb), NULL);
 	/* TRANSLATORS: tooltip on the apply button */
 	gtk_widget_set_tooltip_text (widget, _("Changes are not applied instantly, this button applies all changes"));
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_about"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_about"));
 	g_signal_connect (widget, "activate",
-			  G_CALLBACK (gpk_application_menu_about_cb), application);
+			  G_CALLBACK (gpk_application_menu_about_cb), NULL);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_help"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_help"));
 	g_signal_connect (widget, "activate",
-			  G_CALLBACK (gpk_application_menu_help_cb), application);
+			  G_CALLBACK (gpk_application_menu_help_cb), NULL);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_sources"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_sources"));
 	g_signal_connect (widget, "activate",
-			  G_CALLBACK (gpk_application_menu_sources_cb), application);
+			  G_CALLBACK (gpk_application_menu_sources_cb), NULL);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_refresh"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_refresh"));
 	g_signal_connect (widget, "activate",
-			  G_CALLBACK (gpk_application_menu_refresh_cb), application);
+			  G_CALLBACK (gpk_application_menu_refresh_cb), NULL);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_log"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_log"));
 	g_signal_connect (widget, "activate",
-			  G_CALLBACK (gpk_application_menu_log_cb), application);
+			  G_CALLBACK (gpk_application_menu_log_cb), NULL);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_homepage"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_homepage"));
 	g_signal_connect (widget, "activate",
-			  G_CALLBACK (gpk_application_menu_homepage_cb), application);
+			  G_CALLBACK (gpk_application_menu_homepage_cb), NULL);
 	/* TRANSLATORS: tooltip on the homepage button */
 	gtk_widget_set_tooltip_text (widget, _("Visit home page for selected package"));
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_files"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_files"));
 	g_signal_connect (widget, "activate",
-			  G_CALLBACK (gpk_application_menu_files_cb), application);
+			  G_CALLBACK (gpk_application_menu_files_cb), NULL);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_install"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_install"));
 	g_signal_connect (widget, "activate",
-			  G_CALLBACK (gpk_application_menu_install_cb), application);
+			  G_CALLBACK (gpk_application_menu_install_cb), NULL);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_remove"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_remove"));
 	g_signal_connect (widget, "activate",
-			  G_CALLBACK (gpk_application_menu_remove_cb), application);
+			  G_CALLBACK (gpk_application_menu_remove_cb), NULL);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_depends"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_depends"));
 	g_signal_connect (widget, "activate",
-			  G_CALLBACK (gpk_application_menu_depends_cb), application);
+			  G_CALLBACK (gpk_application_menu_depends_cb), NULL);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_requires"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_requires"));
 	g_signal_connect (widget, "activate",
-			  G_CALLBACK (gpk_application_menu_requires_cb), application);
+			  G_CALLBACK (gpk_application_menu_requires_cb), NULL);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_run"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_run"));
 	g_signal_connect (widget, "activate",
-			  G_CALLBACK (gpk_application_menu_run_cb), application);
+			  G_CALLBACK (gpk_application_menu_run_cb), NULL);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_quit"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_quit"));
 	g_signal_connect (widget, "activate",
 			  G_CALLBACK (gpk_application_menu_quit_cb), application);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_selection"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_selection"));
 	gtk_widget_hide (widget);
 
 	/* installed filter */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_installed_yes"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_installed_yes"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_installed_cb), application);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_installed_no"));
+			  G_CALLBACK (gpk_application_menu_filter_installed_cb), NULL);
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_installed_no"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_installed_cb), application);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_installed_both"));
+			  G_CALLBACK (gpk_application_menu_filter_installed_cb), NULL);
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_installed_both"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_installed_cb), application);
+			  G_CALLBACK (gpk_application_menu_filter_installed_cb), NULL);
 
 	/* devel filter */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_devel_yes"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_devel_yes"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_devel_cb), application);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_devel_no"));
+			  G_CALLBACK (gpk_application_menu_filter_devel_cb), NULL);
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_devel_no"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_devel_cb), application);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_devel_both"));
+			  G_CALLBACK (gpk_application_menu_filter_devel_cb), NULL);
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_devel_both"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_devel_cb), application);
+			  G_CALLBACK (gpk_application_menu_filter_devel_cb), NULL);
 
 	/* gui filter */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_gui_yes"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_gui_yes"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_gui_cb), application);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_gui_no"));
+			  G_CALLBACK (gpk_application_menu_filter_gui_cb), NULL);
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_gui_no"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_gui_cb), application);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_gui_both"));
+			  G_CALLBACK (gpk_application_menu_filter_gui_cb), NULL);
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_gui_both"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_gui_cb), application);
+			  G_CALLBACK (gpk_application_menu_filter_gui_cb), NULL);
 
 	/* free filter */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_free_yes"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_free_yes"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_free_cb), application);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_free_no"));
+			  G_CALLBACK (gpk_application_menu_filter_free_cb), NULL);
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_free_no"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_free_cb), application);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_free_both"));
+			  G_CALLBACK (gpk_application_menu_filter_free_cb), NULL);
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_free_both"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_free_cb), application);
+			  G_CALLBACK (gpk_application_menu_filter_free_cb), NULL);
 
 	/* source filter */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_source_yes"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_source_yes"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_source_cb), application);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_source_no"));
+			  G_CALLBACK (gpk_application_menu_filter_source_cb), NULL);
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_source_no"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_source_cb), application);
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_source_both"));
+			  G_CALLBACK (gpk_application_menu_filter_source_cb), NULL);
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_source_both"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_source_cb), application);
+			  G_CALLBACK (gpk_application_menu_filter_source_cb), NULL);
 
 	/* basename filter */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_basename"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_basename"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_basename_cb), application);
+			  G_CALLBACK (gpk_application_menu_filter_basename_cb), NULL);
 
 	/* newest filter */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_newest"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_newest"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_newest_cb), application);
+			  G_CALLBACK (gpk_application_menu_filter_newest_cb), NULL);
 
 	/* newest filter */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "menuitem_arch"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "menuitem_arch"));
 	g_signal_connect (widget, "toggled",
-			  G_CALLBACK (gpk_application_menu_filter_arch_cb), application);
+			  G_CALLBACK (gpk_application_menu_filter_arch_cb), NULL);
 
 	/* simple find button */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_find"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_find"));
 	g_signal_connect (widget, "clicked",
-			  G_CALLBACK (gpk_application_find_cb), application);
+			  G_CALLBACK (gpk_application_find_cb), NULL);
 	/* TRANSLATORS: tooltip on the find button */
 	gtk_widget_set_tooltip_text (widget, _("Find packages"));
 
 	/* search cancel button */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "button_cancel"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "button_cancel"));
 	g_signal_connect (widget, "clicked",
-			  G_CALLBACK (gpk_application_cancel_cb), application);
+			  G_CALLBACK (gpk_application_cancel_cb), NULL);
 	gtk_widget_set_sensitive (widget, FALSE);
 	/* TRANSLATORS: tooltip on the cancel button */
 	gtk_widget_set_tooltip_text (widget, _("Cancel search"));
 
 	/* the fancy text entry widget */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "entry_text"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "entry_text"));
 
 	/* autocompletion can be turned off as it's slow */
-	ret = g_settings_get_boolean (application->priv->settings, GPK_SETTINGS_AUTOCOMPLETE);
+	ret = g_settings_get_boolean (settings, GPK_SETTINGS_AUTOCOMPLETE);
 	if (ret) {
 		/* create the completion object */
 		completion = gpk_package_entry_completion_new ();
@@ -4100,65 +3958,65 @@ gpk_application_init (GpkApplication *application)
 	gtk_entry_set_icon_sensitive (GTK_ENTRY (widget), GTK_ENTRY_ICON_PRIMARY, TRUE);
 
 	g_signal_connect (widget, "activate",
-			  G_CALLBACK (gpk_application_find_cb), application);
+			  G_CALLBACK (gpk_application_find_cb), NULL);
 	g_signal_connect (widget, "paste-clipboard",
-			  G_CALLBACK (gpk_application_find_cb), application);
+			  G_CALLBACK (gpk_application_find_cb), NULL);
 	g_signal_connect (widget, "icon-press",
-			  G_CALLBACK (gpk_application_entry_text_icon_press_cb), application);
+			  G_CALLBACK (gpk_application_entry_text_icon_press_cb), NULL);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "entry_text"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "entry_text"));
 	g_signal_connect (widget, "key-press-event",
-			  G_CALLBACK (gpk_application_text_changed_cb), application);
+			  G_CALLBACK (gpk_application_text_changed_cb), NULL);
 	g_signal_connect (widget, "key-release-event",
-			  G_CALLBACK (gpk_application_text_changed_cb), application);
+			  G_CALLBACK (gpk_application_text_changed_cb), NULL);
 
 	/* mark find button insensitive */
-	gpk_application_set_button_find_sensitivity (application);
+	gpk_application_set_button_find_sensitivity (NULL);
 
 	/* set a size, if the screen allows */
 	ret = gpk_window_set_size_request (GTK_WINDOW (main_window), 1000, 500);
 
 	/* we are small form factor */
 	if (!ret) {
-		widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "hbox_packages"));
+		widget = GTK_WIDGET (gtk_builder_get_object (builder, "hbox_packages"));
 		gtk_box_set_homogeneous (GTK_BOX (widget), FALSE);
 	}
 	gtk_widget_show (GTK_WIDGET(main_window));
 
 	/* set details box decent size */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "hbox_packages"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "hbox_packages"));
 	gtk_widget_set_size_request (widget, -1, 120);
 
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "treeview_packages"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_packages"));
 	gtk_tree_view_columns_autosize (GTK_TREE_VIEW (widget));
 	g_signal_connect (GTK_TREE_VIEW (widget), "row-activated",
-			  G_CALLBACK (gpk_application_package_row_activated_cb), application);
+			  G_CALLBACK (gpk_application_package_row_activated_cb), NULL);
 
 	/* use a array store for the extra data */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "treeview_detail"));
-	gtk_tree_view_set_model (GTK_TREE_VIEW (widget), GTK_TREE_MODEL (application->priv->details_store));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_detail"));
+	gtk_tree_view_set_model (GTK_TREE_VIEW (widget), GTK_TREE_MODEL (details_store));
 
 	/* add columns to the tree view */
-	gpk_application_treeview_add_columns_description (application);
+	gpk_application_treeview_add_columns_description (NULL);
 
 	/* sorted */
-	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (application->priv->packages_store),
+	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (packages_store),
 					      PACKAGES_COLUMN_ID, GTK_SORT_ASCENDING);
 
 	/* create package tree view */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "treeview_packages"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_packages"));
 	gtk_tree_view_set_model (GTK_TREE_VIEW (widget),
-				 GTK_TREE_MODEL (application->priv->packages_store));
+				 GTK_TREE_MODEL (packages_store));
 
 	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
 	g_signal_connect (selection, "changed",
-			  G_CALLBACK (gpk_application_packages_treeview_clicked_cb), application);
+			  G_CALLBACK (gpk_application_packages_treeview_clicked_cb), NULL);
 
 	/* add columns to the tree view */
-	gpk_application_packages_add_columns (application);
+	gpk_application_packages_add_columns (NULL);
 
 	/* set up the groups checkbox */
-	widget = GTK_WIDGET (gtk_builder_get_object (application->priv->builder, "treeview_groups"));
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "treeview_groups"));
 
 	/* add columns to the tree view */
 	gpk_application_groups_add_columns (GTK_TREE_VIEW (widget));
@@ -4166,79 +4024,123 @@ gpk_application_init (GpkApplication *application)
 	gtk_tree_view_set_show_expanders (GTK_TREE_VIEW (widget), FALSE);
 	gtk_tree_view_set_level_indentation  (GTK_TREE_VIEW (widget), 9);
 	gtk_tree_view_set_model (GTK_TREE_VIEW (widget),
-				 GTK_TREE_MODEL (application->priv->groups_store));
+				 GTK_TREE_MODEL (groups_store));
 
 	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
 	g_signal_connect (selection, "changed",
-			  G_CALLBACK (gpk_application_groups_treeview_changed_cb), application);
+			  G_CALLBACK (gpk_application_groups_treeview_changed_cb), NULL);
 
 	/* get repos, so we can show the full name in the software source box */
-	pk_client_get_repo_list_async (PK_CLIENT(application->priv->task),
+	pk_client_get_repo_list_async (PK_CLIENT (task),
 				       pk_bitfield_value (PK_FILTER_ENUM_NONE),
-				       application->priv->cancellable,
-				       (PkProgressCallback) gpk_application_progress_cb, application,
-				       (GAsyncReadyCallback) gpk_application_get_repo_list_cb, application);
+				       cancellable,
+				       (PkProgressCallback) gpk_application_progress_cb, NULL,
+				       (GAsyncReadyCallback) gpk_application_get_repo_list_cb, NULL);
 
 	/* set current action */
-	application->priv->action = GPK_ACTION_NONE;
-	gpk_application_set_buttons_apply_clear (application);
+	action = GPK_ACTION_NONE;
+	gpk_application_set_buttons_apply_clear (NULL);
 
 	/* hide details */
-	gpk_application_clear_details (application);
-
-out_build:
+	gpk_application_clear_details (NULL);
+out:
 	/* welcome */
-	gpk_application_add_welcome (application);
+	gpk_application_add_welcome (NULL);
 }
 
 /**
- * gpk_application_finalize:
- * @object: This graph class instance
+ * main:
  **/
-static void
-gpk_application_finalize (GObject *object)
+int
+main (int argc, char *argv[])
 {
-	GpkApplication *application;
-	g_return_if_fail (GPK_IS_APPLICATION (object));
-
-	application = GPK_APPLICATION (object);
-	application->priv = GPK_APPLICATION_GET_PRIVATE (application);
-
-	if (application->priv->details_event_id > 0)
-		g_source_remove (application->priv->details_event_id);
-
-	g_object_unref (application->priv->packages_store);
-	g_object_unref (application->priv->details_store);
-	g_object_unref (application->priv->control);
-	g_object_unref (PK_CLIENT(application->priv->task));
-	g_object_unref (application->priv->desktop);
-	g_object_unref (application->priv->settings);
-	g_object_unref (application->priv->markdown);
-	g_object_unref (application->priv->builder);
-	g_object_unref (application->priv->helper_run);
-	g_object_unref (application->priv->cancellable);
-	g_object_unref (application->priv->package_sack);
-
-	if (application->priv->status_id > 0)
-		g_source_remove (application->priv->status_id);
-
-	g_free (application->priv->url);
-	g_free (application->priv->group);
-	g_free (application->priv->search_text);
-	g_hash_table_destroy (application->priv->repos);
-
-	G_OBJECT_CLASS (gpk_application_parent_class)->finalize (object);
-}
+	gboolean program_version = FALSE;
+	GOptionContext *context;
+	GtkApplication *application;
+	gboolean ret;
+	gint status = 0;
 
-/**
- * gpk_application_new:
- * Return value: new GpkApplication instance.
- **/
-GpkApplication *
-gpk_application_new (void)
-{
-	GpkApplication *application;
-	application = g_object_new (GPK_TYPE_APPLICATION, NULL);
-	return GPK_APPLICATION (application);
+	const GOptionEntry options[] = {
+		{ "version", '\0', 0, G_OPTION_ARG_NONE, &program_version,
+		  /* TRANSLATORS: show the program version */
+		  _("Show the program version and exit"), NULL },
+		{ NULL}
+	};
+
+	setlocale (LC_ALL, "");
+
+	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+
+	if (! g_thread_supported ())
+		g_thread_init (NULL);
+	dbus_g_thread_init ();
+	g_type_init ();
+	gtk_init (&argc, &argv);
+
+	context = g_option_context_new (NULL);
+	g_option_context_set_summary (context, _("Add/Remove Software"));
+	g_option_context_add_main_entries (context, options, NULL);
+	g_option_context_add_group (context, egg_debug_get_option_group ());
+	g_option_context_add_group (context, gtk_get_option_group (TRUE));
+	g_option_context_parse (context, &argc, &argv, NULL);
+	g_option_context_free (context);
+
+	if (program_version) {
+		g_print (VERSION "\n");
+		return 0;
+	}
+
+	/* are we running privileged */
+	ret = gpk_check_privileged_user (_("Package installer"), TRUE);
+	if (!ret)
+		return 1;
+
+	/* are we already activated? */
+	application = gtk_application_new ("org.freedesktop.PackageKit.Application", 0);
+	g_signal_connect (application, "startup",
+			  G_CALLBACK (gpk_application_startup_cb), NULL);
+	g_signal_connect (application, "activate",
+			  G_CALLBACK (gpk_application_activate_cb), NULL);
+
+	/* run */
+	status = g_application_run (G_APPLICATION (application), argc, argv);
+	g_object_unref (application);
+
+	if (details_event_id > 0)
+		g_source_remove (details_event_id);
+
+	if (packages_store != NULL)
+		g_object_unref (packages_store);
+	if (details_store != NULL)
+		g_object_unref (details_store);
+	if (control != NULL)
+		g_object_unref (control);
+	if (task != NULL)
+		g_object_unref (task);
+	if (desktop != NULL)
+		g_object_unref (desktop);
+	if (settings != NULL)
+		g_object_unref (settings);
+	if (markdown != NULL)
+		g_object_unref (markdown);
+	if (builder != NULL)
+		g_object_unref (builder);
+	if (helper_run != NULL)
+		g_object_unref (helper_run);
+	if (cancellable != NULL)
+		g_object_unref (cancellable);
+	if (package_sack != NULL)
+		g_object_unref (package_sack);
+	if (repos != NULL)
+		g_hash_table_destroy (repos);
+	if (status_id > 0)
+		g_source_remove (status_id);
+	g_free (homepage_url);
+	g_free (search_group);
+	g_free (search_text);
+
+	return status;
 }
 
diff --git a/src/gpk-auto-refresh.c b/src/gpk-auto-refresh.c
index 452329a..41efed7 100644
--- a/src/gpk-auto-refresh.c
+++ b/src/gpk-auto-refresh.c
@@ -386,10 +386,8 @@ gpk_auto_refresh_change_state (GpkAutoRefresh *arefresh)
 					g_timeout_add_seconds (GPK_UPDATES_LOGIN_TIMEOUT,
 							       (GSourceFunc) gpk_auto_refresh_maybe_get_updates_logon_cb,
 							       arefresh);
-#if GLIB_CHECK_VERSION(2,25,8)
 				g_source_set_name_by_id (arefresh->priv->force_get_updates_login_timeout_id,
 							 "[GpkAutoRefresh] maybe-get-updates");
-#endif
 			}
 		}
 	}
@@ -401,9 +399,7 @@ gpk_auto_refresh_change_state (GpkAutoRefresh *arefresh)
 	egg_debug ("defering action for %i seconds", value);
 	arefresh->priv->timeout_id =
 		g_timeout_add_seconds (value, (GSourceFunc) gpk_auto_refresh_change_state_cb, arefresh);
-#if GLIB_CHECK_VERSION(2,25,8)
 	g_source_set_name_by_id (arefresh->priv->timeout_id, "[GpkAutoRefresh] change-state");
-#endif
 
 	return TRUE;
 }
@@ -613,9 +609,7 @@ gpk_auto_refresh_init (GpkAutoRefresh *arefresh)
 	arefresh->priv->periodic_id =
 		g_timeout_add_seconds (GPK_AUTO_REFRESH_PERIODIC_CHECK,
 				       gpk_auto_refresh_timeout_cb, arefresh);
-#if GLIB_CHECK_VERSION(2,25,8)
 	g_source_set_name_by_id (arefresh->priv->periodic_id, "[GpkAutoRefresh] periodic check");
-#endif
 
 	/* check system state */
 	gpk_auto_refresh_change_state (arefresh);
diff --git a/src/gpk-check-update.c b/src/gpk-check-update.c
index c2076e2..54d7f1d 100644
--- a/src/gpk-check-update.c
+++ b/src/gpk-check-update.c
@@ -502,9 +502,7 @@ gpk_check_update_update_system_finished_cb (PkTask *task, GAsyncResult *res, Gpk
 		gpk_check_update_set_gicon (cupdate, NULL);
 		timer_id = g_timeout_add_seconds (GPK_CHECK_UPDATE_FAILED_TASK_RECHECK_DELAY,
 						  (GSourceFunc) gpk_check_update_get_updates_post_update_cb, cupdate);
-#if GLIB_CHECK_VERSION(2,25,8)
 		g_source_set_name_by_id (timer_id, "[GpkCheckUpdate] failed");
-#endif
 		goto out;
 	}
 
@@ -1097,10 +1095,8 @@ gpk_check_update_updates_changed_cb (PkControl *control, GpkCheckUpdate *cupdate
 	cupdate->priv->updates_changed_id =
 		g_timeout_add_seconds (GPK_CHECK_UPDATE_UPDATES_CHANGED_TIMEOUT,
 				       (GSourceFunc) gpk_check_update_query_updates_changed_cb, cupdate);
-#if GLIB_CHECK_VERSION(2,25,8)
 	g_source_set_name_by_id (cupdate->priv->updates_changed_id,
 				 "[GpkCheckUpdate] updates-changed");
-#endif
 }
 
 /**
diff --git a/src/gpk-dbus-service.c b/src/gpk-dbus-service.c
index 05f558d..9c22eb5 100644
--- a/src/gpk-dbus-service.c
+++ b/src/gpk-dbus-service.c
@@ -193,9 +193,7 @@ main (int argc, char *argv[])
 	/* only timeout if we have specified iton the command line */
 	if (!no_timed_exit) {
 		timer_id = g_timeout_add_seconds (5, (GSourceFunc) gpk_dbus_service_check_idle_cb, dbus);
-#if GLIB_CHECK_VERSION(2,25,8)
 		g_source_set_name_by_id (timer_id, "[GpkDbusService] timed exit");
-#endif
 	}
 
 	/* wait */
diff --git a/src/gpk-firmware.c b/src/gpk-firmware.c
index a60e5f8..cb2bb90 100644
--- a/src/gpk-firmware.c
+++ b/src/gpk-firmware.c
@@ -932,9 +932,7 @@ gpk_firmware_scan_directory (GpkFirmware *firmware)
 	/* don't spam the user at startup, so wait a little delay */
 	if (array->len > 0) {
 		scan_id = g_timeout_add_seconds (GPK_FIRMWARE_PROCESS_DELAY, gpk_firmware_timeout_cb, firmware);
-#if GLIB_CHECK_VERSION(2,25,8)
 		g_source_set_name_by_id (scan_id, "[GpkFirmware] process");
-#endif
 	}
 }
 
@@ -964,9 +962,7 @@ gpk_firmware_monitor_changed_cb (GFileMonitor *monitor, GFile *file, GFile *othe
 	/* wait for the device to settle */
 	firmware->priv->timeout_id =
 		g_timeout_add_seconds (GPK_FIRMWARE_INSERT_DELAY, (GSourceFunc) gpk_firmware_scan_directory_cb, firmware);
-#if GLIB_CHECK_VERSION(2,25,8)
 	g_source_set_name_by_id (firmware->priv->timeout_id, "[GpkFirmware] changed");
-#endif
 }
 
 /**
@@ -1021,9 +1017,7 @@ out:
 	g_object_unref (file);
 	firmware->priv->timeout_id =
 		g_timeout_add_seconds (GPK_FIRMWARE_LOGIN_DELAY, (GSourceFunc) gpk_firmware_scan_directory_cb, firmware);
-#if GLIB_CHECK_VERSION(2,25,8)
 	g_source_set_name_by_id (firmware->priv->timeout_id, "[GpkFirmware] login coldplug");
-#endif
 }
 
 /**
diff --git a/src/gpk-hardware.c b/src/gpk-hardware.c
index d8d7996..5c80737 100644
--- a/src/gpk-hardware.c
+++ b/src/gpk-hardware.c
@@ -251,9 +251,7 @@ gpk_hardware_device_added_cb (DBusGProxy *proxy, const gchar *udi, GpkHardware *
 		hardware->priv->udi = g_strdup (udi);
 		added_id = g_timeout_add_seconds (GPK_HARDWARE_MULTIPLE_HAL_SIGNALS_DELAY,
 				       gpk_hardware_device_added_timeout, hardware);
-#if GLIB_CHECK_VERSION(2,25,8)
 		g_source_set_name_by_id (added_id, "[GpkHardware] added");
-#endif
 	}
 }
 
@@ -314,9 +312,7 @@ gpk_hardware_init (GpkHardware *hardware)
 
 	/* check at startup (plus delay) and see if there is cold plugged hardware needing drivers */
 	login_id = g_timeout_add_seconds (GPK_HARDWARE_LOGIN_DELAY, gpk_hardware_timeout_cb, hardware);
-#if GLIB_CHECK_VERSION(2,25,8)
 	g_source_set_name_by_id (login_id, "[GpkHardware] login");
-#endif
 }
 
 /**
@@ -346,7 +342,8 @@ gpk_hardware_finalize (GObject *object)
 
 	g_return_if_fail (hardware->priv != NULL);
 	g_object_unref (hardware->priv->settings);
-	g_object_unref (PK_CLIENT(hardware->priv->task));
+	if (hardware->priv->task != NULL)
+		g_object_unref (hardware->priv->task);
 	g_strfreev (hardware->priv->package_ids);
 
 	G_OBJECT_CLASS (gpk_hardware_parent_class)->finalize (object);
diff --git a/src/gpk-log.c b/src/gpk-log.c
index 7acf57c..477f1c2 100644
--- a/src/gpk-log.c
+++ b/src/gpk-log.c
@@ -43,6 +43,7 @@ static gchar *transaction_id = NULL;
 static gchar *filter = NULL;
 static GPtrArray *transactions = NULL;
 static GtkTreePath *path_global = NULL;
+static guint xid = 0;
 
 enum
 {
@@ -657,7 +658,7 @@ gpk_log_entry_filter_cb (GtkWidget *widget, GdkEventKey *event, gpointer user_da
 static gboolean
 gpk_log_delete_event_cb (GtkWidget *widget, GdkEvent *event, GtkApplication *application)
 {
-	gtk_application_quit (application);
+	g_application_release (G_APPLICATION (application));
 	return FALSE;
 }
 
@@ -667,66 +668,34 @@ gpk_log_delete_event_cb (GtkWidget *widget, GdkEvent *event, GtkApplication *app
 static void
 gpk_log_button_close_cb (GtkWidget *widget, GtkApplication *application)
 {
-	gtk_application_quit (application);
+	g_application_release (G_APPLICATION (application));
 }
 
 /**
- * main:
+ * gpk_log_activate_cb:
  **/
-int
-main (int argc, char *argv[])
+static void
+gpk_log_activate_cb (GtkApplication *application, gpointer user_data)
 {
-	GOptionContext *context;
+	GtkWindow *window;
+	window = GTK_WINDOW (gtk_builder_get_object (builder, "dialog_simple"));
+	gtk_window_present (window);
+}
+
+/**
+ * gpk_log_startup_cb:
+ **/
+static void
+gpk_log_startup_cb (GtkApplication *application, gpointer user_data)
+{
+	gboolean ret;
+	GError *error = NULL;
 	GSettings *settings;
-	GtkWidget *widget;
-	GtkTreeSelection *selection;
 	GtkEntryCompletion *completion;
-	GtkApplication *application;
-	gboolean ret;
+	GtkTreeSelection *selection;
+	GtkWidget *widget;
+	GtkWindow *window;
 	guint retval;
-	guint xid = 0;
-	GError *error = NULL;
-
-	const GOptionEntry options[] = {
-		{ "filter", 'f', 0, G_OPTION_ARG_STRING, &filter,
-		  /* TRANSLATORS: preset the GtktextBox with this filter text */
-		  N_("Set the filter to this value"), NULL },
-		{ "parent-window", 'p', 0, G_OPTION_ARG_INT, &xid,
-		  /* TRANSLATORS: we can make this modal (stay on top of) another window */
-		  _("Set the parent window to make this modal"), NULL },
-		{ NULL}
-	};
-
-	setlocale (LC_ALL, "");
-
-	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
-	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-	textdomain (GETTEXT_PACKAGE);
-
-	if (! g_thread_supported ())
-		g_thread_init (NULL);
-	g_type_init ();
-	gtk_init (&argc, &argv);
-
-	context = g_option_context_new (NULL);
-	g_option_context_set_summary (context, _("Software Log Viewer"));
-	g_option_context_add_main_entries (context, options, NULL);
-	g_option_context_add_group (context, egg_debug_get_option_group ());
-	g_option_context_add_group (context, gtk_get_option_group (TRUE));
-	g_option_context_parse (context, &argc, &argv, NULL);
-	g_option_context_free (context);
-
-	/* are we running privileged */
-	ret = gpk_check_privileged_user (_("Log viewer"), TRUE);
-	if (!ret)
-		return 1;
-
-	/* are we already activated? */
-	application = gtk_application_new ("org.freedesktop.PackageKit.LogViewer", &argc, &argv);
-
-	/* add application specific icons to search path */
-	gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
-					   GPK_DATA G_DIR_SEPARATOR_S "icons");
 
 	client = pk_client_new ();
 	g_object_set (client,
@@ -739,18 +708,18 @@ main (int argc, char *argv[])
 	if (retval == 0) {
 		egg_warning ("failed to load ui: %s", error->message);
 		g_error_free (error);
-		goto out_build;
+		goto out;
 	}
 
-	widget = GTK_WIDGET (gtk_builder_get_object (builder, "dialog_simple"));
-	gtk_window_set_icon_name (GTK_WINDOW (widget), GPK_ICON_SOFTWARE_LOG);
-	gtk_application_add_window (application, GTK_WINDOW (widget));
+	window = GTK_WINDOW (gtk_builder_get_object (builder, "dialog_simple"));
+	gtk_window_set_icon_name (window, GPK_ICON_SOFTWARE_LOG);
+	gtk_window_set_application (window, application);
 
 	/* set a size, if the screen allows */
-	gpk_window_set_size_request (GTK_WINDOW (widget), 900, 300);
+	gpk_window_set_size_request (window, 900, 300);
 
 	/* Get the main window quit */
-	g_signal_connect (widget, "delete-event",
+	g_signal_connect (window, "delete-event",
 			  G_CALLBACK (gpk_log_delete_event_cb), application);
 
 	/* if command line arguments are set, then setup UI */
@@ -824,18 +793,76 @@ main (int argc, char *argv[])
 
 	/* get the update list */
 	gpk_log_refresh ();
-
-	/* run */
-	gtk_application_run (application);
-
-out_build:
-	g_object_unref (builder);
+out:
 	g_object_unref (list_store);
 	g_object_unref (client);
 	g_free (transaction_id);
 	g_free (filter);
 	if (transactions != NULL)
 		g_ptr_array_unref (transactions);
+}
+
+/**
+ * main:
+ **/
+int
+main (int argc, char *argv[])
+{
+	gboolean ret;
+	gint status = 1;
+	GOptionContext *context;
+	GtkApplication *application;
+
+	const GOptionEntry options[] = {
+		{ "filter", 'f', 0, G_OPTION_ARG_STRING, &filter,
+		  /* TRANSLATORS: preset the GtktextBox with this filter text */
+		  N_("Set the filter to this value"), NULL },
+		{ "parent-window", 'p', 0, G_OPTION_ARG_INT, &xid,
+		  /* TRANSLATORS: we can make this modal (stay on top of) another window */
+		  _("Set the parent window to make this modal"), NULL },
+		{ NULL}
+	};
+
+	setlocale (LC_ALL, "");
+
+	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+
+	if (! g_thread_supported ())
+		g_thread_init (NULL);
+	g_type_init ();
+	gtk_init (&argc, &argv);
+
+	context = g_option_context_new (NULL);
+	g_option_context_set_summary (context, _("Software Log Viewer"));
+	g_option_context_add_main_entries (context, options, NULL);
+	g_option_context_add_group (context, egg_debug_get_option_group ());
+	g_option_context_add_group (context, gtk_get_option_group (TRUE));
+	g_option_context_parse (context, &argc, &argv, NULL);
+	g_option_context_free (context);
+
+	/* are we running privileged */
+	ret = gpk_check_privileged_user (_("Log viewer"), TRUE);
+	if (!ret)
+		goto out;
+
+	/* add application specific icons to search path */
+	gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
+					   GPK_DATA G_DIR_SEPARATOR_S "icons");
+
+	/* are we already activated? */
+	application = gtk_application_new ("org.freedesktop.PackageKit.LogViewer", 0);
+	g_signal_connect (application, "startup",
+			  G_CALLBACK (gpk_log_startup_cb), NULL);
+	g_signal_connect (application, "activate",
+			  G_CALLBACK (gpk_log_activate_cb), NULL);
+
+	/* run */
+	status = g_application_run (G_APPLICATION (application), argc, argv);
+out:
+	if (builder != NULL)
+		g_object_unref (builder);
 	g_object_unref (application);
-	return 0;
+	return status;
 }
diff --git a/src/gpk-modal-dialog.c b/src/gpk-modal-dialog.c
index b7ba566..a09b404 100644
--- a/src/gpk-modal-dialog.c
+++ b/src/gpk-modal-dialog.c
@@ -383,9 +383,7 @@ gpk_modal_dialog_make_progressbar_pulse (GpkModalDialog *dialog)
 		progress_bar = GTK_PROGRESS_BAR (gtk_builder_get_object (dialog->priv->builder, "progressbar_percent"));
 		gtk_progress_bar_set_pulse_step (progress_bar, 0.04);
 		dialog->priv->pulse_timer_id = g_timeout_add (75, (GSourceFunc) gpk_modal_dialog_pulse_progress, dialog);
-#if GLIB_CHECK_VERSION(2,25,8)
 		g_source_set_name_by_id (dialog->priv->pulse_timer_id, "[GpkModalDialog] pulse");
-#endif
 	}
 }
 
diff --git a/src/gpk-service-pack.c b/src/gpk-service-pack.c
index 0c5056f..bdcd75f 100644
--- a/src/gpk-service-pack.c
+++ b/src/gpk-service-pack.c
@@ -161,9 +161,7 @@ gpk_pack_set_percentage (guint percentage)
 		/* set pulsing */
 		if (pulse_id == 0) {
 			pulse_id = g_timeout_add (100, gpk_pack_percentage_pulse_cb, NULL);
-#if GLIB_CHECK_VERSION(2,25,8)
 			g_source_set_name_by_id (pulse_id, "[GpkServicePack] pulse");
-#endif
 		}
 		return;
 	}
@@ -682,7 +680,7 @@ gpk_pack_radio_copy_cb (GtkWidget *widget2, gpointer data)
 static gboolean
 gpk_pack_delete_event_cb (GtkWidget *widget, GdkEvent *event, GtkApplication *application)
 {
-	gtk_application_quit (application);
+	g_application_release (G_APPLICATION (application));
 	return FALSE;
 }
 
@@ -692,74 +690,24 @@ gpk_pack_delete_event_cb (GtkWidget *widget, GdkEvent *event, GtkApplication *ap
 static void
 gpk_pack_button_close_cb (GtkWidget *widget, GtkApplication *application)
 {
-	gtk_application_quit (application);
+	g_application_release (G_APPLICATION (application));
 }
 
 /**
- * main:
+ * gpk_pack_startup_cb:
  **/
-int
-main (int argc, char *argv[])
+static void
+gpk_pack_startup_cb (GtkApplication *application, gpointer user_data)
 {
-	GOptionContext *context;
 	GtkWidget *main_window;
 	GtkWidget *widget;
 	GtkFileFilter *filter;
 	GtkEntryCompletion *completion;
-	GtkApplication *application;
 	gboolean ret;
-	GSettings *settings = NULL;
-	gchar *option = NULL;
-	gchar *package = NULL;
-	gchar *with_array = NULL;
-	gchar *output = NULL;
 	guint retval;
+	GSettings *settings = NULL;
 	GError *error = NULL;
 
-	const GOptionEntry options[] = {
-		{ "option", 'o', 0, G_OPTION_ARG_STRING, &option,
-		  /* TRANSLATORS: the constants should not be translated */
-		  _("Set the option, allowable values are 'array', 'updates' and 'package'"), NULL },
-		{ "package", 'p', 0, G_OPTION_ARG_STRING, &package,
-		  /* TRANSLATORS: this refers to the GtkTextEntry in gpk-service-pack */
-		  _("Add the package name to the text entry box"), NULL },
-		{ "with-array", 'p', 0, G_OPTION_ARG_STRING, &with_array,
-		  /* TRANSLATORS: this is the destination computer package array */
-		  _("Set the remote package array filename"), NULL },
-		{ "output", 'p', 0, G_OPTION_ARG_STRING, &output,
-		  /* TRANSLATORS: this is the file output directory */
-		  _("Set the default output directory"), NULL },
-		{ NULL}
-	};
-
-	setlocale (LC_ALL, "");
-
-	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
-	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-	textdomain (GETTEXT_PACKAGE);
-
-	if (! g_thread_supported ())
-		g_thread_init (NULL);
-	g_type_init ();
-
-	context = g_option_context_new (NULL);
-	/* TRANSLATORS: program description, an application to create service packs */
-	g_option_context_set_summary (context, _("Service Pack Creator"));
-	g_option_context_add_main_entries (context, options, NULL);
-	g_option_context_add_group (context, egg_debug_get_option_group ());
-	g_option_context_add_group (context, gtk_get_option_group (TRUE));
-	ret = g_option_context_parse (context, &argc, &argv, &error);
-	if (!ret) {
-		g_error ("failed to parse %s", error->message);
-		g_error_free (error);
-	}
-	g_option_context_free (context);
-
-	gtk_init (&argc, &argv);
-
-	/* are we already activated? */
-	application = gtk_application_new ("org.freedesktop.PackageKit.ServicePack", &argc, &argv);
-
 	/* use a client to download packages */
 	client = pk_client_new ();
 	g_object_set (client,
@@ -780,7 +728,7 @@ main (int argc, char *argv[])
 	if (retval == 0) {
 		egg_warning ("failed to load ui: %s", error->message);
 		g_error_free (error);
-		goto out_build;
+		goto out;
 	}
 
 	main_window = GTK_WIDGET (gtk_builder_get_object (builder, "dialog_pack"));
@@ -836,6 +784,59 @@ main (int argc, char *argv[])
 		g_object_unref (completion);
 	}
 
+	gtk_widget_show (main_window);
+out:
+	if (settings != NULL)
+		g_object_unref (settings);
+}
+
+/**
+ * gpm_pack_commandline_cb:
+ **/
+static int
+gpm_pack_commandline_cb (GApplication *application,
+			 GApplicationCommandLine *cmdline,
+			 gpointer user_data)
+{
+	gboolean ret;
+	gchar **argv;
+	gchar *option = NULL;
+	gchar *package = NULL;
+	gchar *with_array = NULL;
+	gchar *output = NULL;
+	gint argc;
+	GOptionContext *context;
+	GtkWidget *widget;
+	GtkWindow *window;
+
+	const GOptionEntry options[] = {
+		{ "option", 'o', 0, G_OPTION_ARG_STRING, &option,
+		  /* TRANSLATORS: the constants should not be translated */
+		  _("Set the option, allowable values are 'array', 'updates' and 'package'"), NULL },
+		{ "package", 'p', 0, G_OPTION_ARG_STRING, &package,
+		  /* TRANSLATORS: this refers to the GtkTextEntry in gpk-service-pack */
+		  _("Add the package name to the text entry box"), NULL },
+		{ "with-array", 'p', 0, G_OPTION_ARG_STRING, &with_array,
+		  /* TRANSLATORS: this is the destination computer package array */
+		  _("Set the remote package array filename"), NULL },
+		{ "output", 'p', 0, G_OPTION_ARG_STRING, &output,
+		  /* TRANSLATORS: this is the file output directory */
+		  _("Set the default output directory"), NULL },
+		{ NULL}
+	};
+
+	/* get arguments */
+	argv = g_application_command_line_get_arguments (cmdline, &argc);
+
+	context = g_option_context_new (NULL);
+	/* TRANSLATORS: the program name */
+	g_option_context_set_summary (context, _("Service Pack Creator"));
+	g_option_context_add_main_entries (context, options, NULL);
+//	g_option_context_add_group (context, gpk_debug_get_option_group ());
+	ret = g_option_context_parse (context, &argc, &argv, NULL);
+	if (!ret)
+		goto out;
+
 	/* if command line arguments are set, then setup UI */
 	if (option != NULL) {
 		if (g_strcmp0 (option, "array") == 0) {
@@ -862,24 +863,58 @@ main (int argc, char *argv[])
 		gtk_file_chooser_set_filename (GTK_FILE_CHOOSER(widget), output);
 	}
 
-	gtk_widget_show (main_window);
+	/* make sure the window is raised */
+	window = GTK_WINDOW (gtk_builder_get_object (builder, "dialog_pack"));
+	gtk_window_present (window);
+out:
+	g_free (option);
+	g_free (package);
+	g_free (with_array);
+	g_free (output);
+	g_strfreev (argv);
+	g_option_context_free (context);
+	return ret;
+}
+
+/**
+ * main:
+ **/
+int
+main (int argc, char *argv[])
+{
+	GtkApplication *application;
+	gint status = 0;
+
+	setlocale (LC_ALL, "");
+
+	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+
+	if (! g_thread_supported ())
+		g_thread_init (NULL);
+	g_type_init ();
+
+	gtk_init (&argc, &argv);
+
+	/* are we already activated? */
+	application = gtk_application_new ("org.freedesktop.PackageKit.ServicePack",
+					   G_APPLICATION_HANDLES_COMMAND_LINE);
+	g_signal_connect (application, "startup",
+			  G_CALLBACK (gpk_pack_startup_cb), NULL);
+	g_signal_connect (application, "command-line",
+			  G_CALLBACK (gpm_pack_commandline_cb), NULL);
 
 	/* run */
-	gtk_application_run (application);
+	status = g_application_run (G_APPLICATION (application), argc, argv);
 
-out_build:
-	g_object_unref (builder);
 	g_object_unref (application);
-	if (settings != NULL)
-		g_object_unref (settings);
+	if (builder != NULL)
+		g_object_unref (builder);
 	if (control != NULL)
 		g_object_unref (control);
 	if (client != NULL)
 		g_object_unref (client);
-	g_free (option);
-	g_free (package);
-	g_free (with_array);
-	g_free (output);
 
-	return 0;
+	return status;
 }
diff --git a/src/gpk-session.c b/src/gpk-session.c
index 29a80e7..23d3f3e 100644
--- a/src/gpk-session.c
+++ b/src/gpk-session.c
@@ -481,7 +481,8 @@ gpk_session_finalize (GObject *object)
 
 	g_object_unref (session->priv->proxy);
 	g_object_unref (session->priv->proxy_presence);
-	g_object_unref (session->priv->proxy_client_private);
+	if (session->priv->proxy_client_private != NULL)
+		g_object_unref (session->priv->proxy_client_private);
 	g_object_unref (session->priv->proxy_prop);
 
 	G_OBJECT_CLASS (gpk_session_parent_class)->finalize (object);
diff --git a/src/gpk-update-icon.c b/src/gpk-update-icon.c
index 0dce1f9..25f0354 100644
--- a/src/gpk-update-icon.c
+++ b/src/gpk-update-icon.c
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007-2009 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2010 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -42,32 +42,55 @@
 #include "gpk-hardware.h"
 #include "gpk-common.h"
 
+static GpkCheckUpdate *cupdate = NULL;
+static GpkWatch *watch = NULL;
+static GpkFirmware *firmware = NULL;
+static GpkHardware *hardware = NULL;
+static guint timer_id = 0;
+static gboolean timed_exit = FALSE;
+
 /**
  * gpk_icon_timed_exit_cb:
  **/
 static gboolean
 gpk_icon_timed_exit_cb (GtkApplication *application)
 {
-	gtk_application_quit (application);
+	g_application_release (G_APPLICATION (application));
 	return FALSE;
 }
 
 /**
- * main:
+ * gpk_icon_startup_cb:
  **/
-int
-main (int argc, char *argv[])
+static void
+gpk_icon_startup_cb (GtkApplication *application, gpointer user_data)
+{
+	/* create new objects */
+	cupdate = gpk_check_update_new ();
+	watch = gpk_watch_new ();
+	firmware = gpk_firmware_new ();
+	hardware = gpk_hardware_new ();
+
+	/* Only timeout if we have specified iton the command line */
+	if (timed_exit) {
+		timer_id = g_timeout_add_seconds (120, (GSourceFunc) gpk_icon_timed_exit_cb, application);
+		g_source_set_name_by_id (timer_id, "[GpkUpdateIcon] timed exit");
+	}
+}
+
+/**
+ * gpm_pack_commandline_cb:
+ **/
+static int
+gpm_pack_commandline_cb (GApplication *application,
+			 GApplicationCommandLine *cmdline,
+			 gpointer user_data)
 {
+	gchar **argv;
+	gint argc;
 	gboolean program_version = FALSE;
-	gboolean timed_exit = FALSE;
-	GpkCheckUpdate *cupdate = NULL;
-	GpkWatch *watch = NULL;
-	GpkFirmware *firmware = NULL;
-	GpkHardware *hardware = NULL;
 	GOptionContext *context;
-	GtkApplication *application;
 	gboolean ret;
-	guint timer_id = 0;
 
 	const GOptionEntry options[] = {
 		{ "timed-exit", '\0', 0, G_OPTION_ARG_NONE, &timed_exit,
@@ -77,21 +100,9 @@ main (int argc, char *argv[])
 		{ NULL}
 	};
 
-	setlocale (LC_ALL, "");
-
-	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
-	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-	textdomain (GETTEXT_PACKAGE);
+	/* get arguments */
+	argv = g_application_command_line_get_arguments (cmdline, &argc);
 
-	if (! g_thread_supported ())
-		g_thread_init (NULL);
-	g_type_init ();
-	gtk_init (&argc, &argv);
-	dbus_g_thread_init ();
-	notify_init ("gpk-update-icon");
-
-	/* TRANSLATORS: program name, a session wide daemon to watch for updates and changing system state */
-	g_set_application_name (_("Update Applet"));
 	context = g_option_context_new (NULL);
 	g_option_context_set_summary (context, _("Update Applet"));
 	g_option_context_add_main_entries (context, options, NULL);
@@ -112,35 +123,62 @@ main (int argc, char *argv[])
 		return 1;
 	}
 
+	g_strfreev (argv);
+	return 0;
+}
+
+/**
+ * main:
+ **/
+int
+main (int argc, char *argv[])
+{
+	GtkApplication *application;
+	gint status = 0;
+
+	setlocale (LC_ALL, "");
+
+	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+
+	if (! g_thread_supported ())
+		g_thread_init (NULL);
+	g_type_init ();
+	gtk_init (&argc, &argv);
+	dbus_g_thread_init ();
+	notify_init ("gpk-update-icon");
+
+	/* TRANSLATORS: program name, a session wide daemon to watch for updates and changing system state */
+	g_set_application_name (_("Update Applet"));
+
 	/* are we already activated? */
-	application = gtk_application_new ("org.freedesktop.PackageKit.UpdateIcon", &argc, &argv);
+	application = gtk_application_new ("org.freedesktop.PackageKit.UpdateIcon",
+					   G_APPLICATION_HANDLES_COMMAND_LINE);
+	g_signal_connect (application, "startup",
+			  G_CALLBACK (gpk_icon_startup_cb), NULL);
+	g_signal_connect (application, "command-line",
+			  G_CALLBACK (gpm_pack_commandline_cb), NULL);
 
 	/* add application specific icons to search path */
 	gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
 					   GPK_DATA G_DIR_SEPARATOR_S "icons");
 
-	/* create new objects */
-	cupdate = gpk_check_update_new ();
-	watch = gpk_watch_new ();
-	firmware = gpk_firmware_new ();
-	hardware = gpk_hardware_new ();
-
-	/* Only timeout if we have specified iton the command line */
-	if (timed_exit) {
-		timer_id = g_timeout_add_seconds (120, (GSourceFunc) gpk_icon_timed_exit_cb, application);
-#if GLIB_CHECK_VERSION(2,25,8)
-		g_source_set_name_by_id (timer_id, "[GpkUpdateIcon] timed exit");
-#endif
-	}
+	/* we don't have any windows to assign */
+	g_application_hold (G_APPLICATION (application));
 
 	/* run */
-	gtk_application_run (application);
-
-	g_object_unref (cupdate);
-	g_object_unref (watch);
-	g_object_unref (firmware);
-	g_object_unref (hardware);
+	status = g_application_run (G_APPLICATION (application), argc, argv);
+
+	if (cupdate != NULL)
+		g_object_unref (cupdate);
+	if (watch != NULL)
+		g_object_unref (watch);
+	if (firmware != NULL)
+		g_object_unref (firmware);
+	if (hardware != NULL)
+		g_object_unref (hardware);
 	g_object_unref (application);
-	return 0;
+	return status;
 }
 
diff --git a/src/gpk-update-viewer.c b/src/gpk-update-viewer.c
index 71980e5..3e7d921 100644
--- a/src/gpk-update-viewer.c
+++ b/src/gpk-update-viewer.c
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
  *
- * Copyright (C) 2007-2009 Richard Hughes <richard hughsie com>
+ * Copyright (C) 2007-2010 Richard Hughes <richard hughsie com>
  *
  * Licensed under the GNU General Public License Version 2
  *
@@ -20,65 +20,59 @@
  */
 
 #include "config.h"
-#include <glib/gi18n.h>
 
-#include <gtk/gtk.h>
+#include <canberra-gtk.h>
+#include <dbus/dbus-glib.h>
 #include <gdk/gdkkeysyms.h>
+#include <glib/gi18n.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <gtk/gtk.h>
+#include <locale.h>
 #include <packagekit-glib2/packagekit.h>
-#include <canberra-gtk.h>
 
 #include "egg-debug.h"
 #include "egg-string.h"
 #include "egg-markdown.h"
 #include "egg-console-kit.h"
 
-#include "gpk-common.h"
-#include "gpk-gnome.h"
-#include "gpk-dialog.h"
-#include "gpk-error.h"
-#include "gpk-cell-renderer-size.h"
 #include "gpk-cell-renderer-info.h"
 #include "gpk-cell-renderer-restart.h"
+#include "gpk-cell-renderer-size.h"
+#include "gpk-common.h"
+#include "gpk-dialog.h"
 #include "gpk-enum.h"
-#include "gpk-task.h"
+#include "gpk-error.h"
+#include "gpk-gnome.h"
 #include "gpk-session.h"
-#include "gpk-update-viewer.h"
+#include "gpk-task.h"
 
 #define GPK_UPDATE_VIEWER_AUTO_QUIT_TIMEOUT	10 /* seconds */
 #define GPK_UPDATE_VIEWER_AUTO_RESTART_TIMEOUT	60 /* seconds */
 #define GPK_UPDATE_VIEWER_MOBILE_SMALL_SIZE	512*1024 /* bytes */
 
-#define GPK_UPDATE_VIEWER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GPK_TYPE_UPDATE_VIEWER, GpkUpdateViewerPrivate))
-
-struct GpkUpdateViewerPrivate
-{
-	gboolean		 ignore_updates_changed;
-	gboolean		 other_updates_held_back;
-	gchar			*package_id_last;
-	guint			 auto_shutdown_id;
-	guint			 size_total;
-	guint			 number_total;
-	PkRestartEnum		 restart_worst;
-	EggConsoleKit		*console;
-	EggMarkdown		*markdown;
-	GCancellable		*cancellable;
-	GSettings		*settings;
-	GPtrArray		*update_array;
-	GtkBuilder		*builder;
-	GtkTreeStore		*array_store_updates;
-	GtkTextBuffer		*text_buffer;
-	PkControl		*control;
-	PkRestartEnum		 restart_update;
-	PkTask			*task;
-	GtkWidget		*info_updates;
-	GtkWidget		*info_mobile;
-	GtkWidget		*info_mobile_label;
-};
-
-enum {
-	SIGNAL_CLOSE,
-	SIGNAL_LAST
-};
+static	gboolean		 ignore_updates_changed = FALSE;
+static	gboolean		 other_updates_held_back = FALSE;
+static	gchar			*package_id_last = NULL;
+static	guint			 auto_shutdown_id = 0;
+static	guint			 size_total = 0;
+static	guint			 number_total = 0;
+static	PkRestartEnum		 restart_worst = 0;
+static	EggConsoleKit		*console = NULL;
+static	EggMarkdown		*markdown = NULL;
+static	GCancellable		*cancellable = NULL;
+static	GSettings		*settings = NULL;
+static	GPtrArray		*update_array = NULL;
+static	GtkBuilder		*builder = NULL;
+static	GtkTreeStore		*array_store_updates = NULL;
+static	GtkTextBuffer		*text_buffer = NULL;
+static	PkControl		*control = NULL;
+static	PkRestartEnum		 restart_update = 0;
+static	PkTask			*task = NULL;
+static	GtkWidget		*info_updates = NULL;
+static	GtkWidget		*info_mobile = NULL;
+static	GtkWidget		*info_mobile_label = NULL;
+static	GtkApplication		*application = NULL;
 
 enum {
 	GPK_UPDATES_COLUMN_TEXT,
@@ -98,30 +92,15 @@ enum {
 	GPK_UPDATES_COLUMN_LAST
 };
 
-static guint signals [SIGNAL_LAST] = { 0 };
-
-G_DEFINE_TYPE (GpkUpdateViewer, gpk_update_viewer, G_TYPE_OBJECT)
-
-static gboolean gpk_update_viewer_get_new_update_array (GpkUpdateViewer *update_viewer);
-
-/**
- * gpk_update_viewer_show:
- **/
-void
-gpk_update_viewer_show (GpkUpdateViewer *update_viewer)
-{
-	GtkWindow *window;
-	window = GTK_WINDOW(gtk_builder_get_object (update_viewer->priv->builder, "dialog_updates"));
-	gtk_window_present (window);
-}
+static gboolean gpk_update_viewer_get_new_update_array (void);
 
 /**
  * gpk_update_viewer_button_help_cb:
  **/
 static void
-gpk_update_viewer_button_help_cb (GtkWidget *widget, gpointer data)
+gpk_update_viewer_button_help_cb (GtkWidget *widget, gpointer user_data)
 {
-	const gchar *id = data;
+	const gchar *id = user_data;
 	gpk_gnome_help (id);
 }
 
@@ -129,29 +108,27 @@ gpk_update_viewer_button_help_cb (GtkWidget *widget, gpointer data)
  * gpk_update_viewer_quit:
  **/
 static void
-gpk_update_viewer_quit (GpkUpdateViewer *update_viewer)
+gpk_update_viewer_quit (void)
 {
 	/* are we in a transaction */
-	g_cancellable_cancel (update_viewer->priv->cancellable);
-
-	egg_debug ("emitting action-close");
-	g_signal_emit (update_viewer, signals [SIGNAL_CLOSE], 0);
+	g_cancellable_cancel (cancellable);
+	g_application_release (G_APPLICATION (application));
 }
 
 /**
  * gpk_update_viewer_button_quit_cb:
  **/
 static void
-gpk_update_viewer_button_quit_cb (GtkWidget *widget, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_button_quit_cb (GtkWidget *widget, gpointer user_data)
 {
-	gpk_update_viewer_quit (update_viewer);
+	gpk_update_viewer_quit ();
 }
 
 /**
  * gpk_update_viewer_packages_set_sensitive:
  **/
 static void
-gpk_update_viewer_packages_set_sensitive (GpkUpdateViewer *update_viewer, gboolean sensitive)
+gpk_update_viewer_packages_set_sensitive (gboolean sensitive)
 {
 	GtkTreeView *treeview;
 	GtkTreeModel *model;
@@ -159,15 +136,14 @@ gpk_update_viewer_packages_set_sensitive (GpkUpdateViewer *update_viewer, gboole
 	gboolean valid;
 	gboolean child_valid;
 	GtkTreeIter child_iter;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	model = gtk_tree_view_get_model (treeview);
 
 	/* set all the checkboxes sensitive */
 	valid = gtk_tree_model_get_iter_first (model, &iter);
 	while (valid) {
-		gtk_tree_store_set (priv->array_store_updates, &iter,
+		gtk_tree_store_set (array_store_updates, &iter,
 				    GPK_UPDATES_COLUMN_SENSITIVE, sensitive,
 				    GPK_UPDATES_COLUMN_CLICKABLE, sensitive,
 				    -1);
@@ -201,10 +177,9 @@ gpk_update_viewer_auto_shutdown_cb (GtkDialog *dialog)
  * gpk_update_viewer_error_dialog:
  **/
 static void
-gpk_update_viewer_error_dialog (GpkUpdateViewer *update_viewer, const gchar *title, const gchar *message, const gchar *details)
+gpk_update_viewer_error_dialog (const gchar *title, const gchar *message, const gchar *details)
 {
 	GtkWindow *window;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* fallback */
 	if (message == NULL) {
@@ -213,7 +188,7 @@ gpk_update_viewer_error_dialog (GpkUpdateViewer *update_viewer, const gchar *tit
 	}
 
 	egg_warning ("%s: %s", title, details);
-	window = GTK_WINDOW(gtk_builder_get_object (priv->builder, "dialog_updates"));
+	window = GTK_WINDOW(gtk_builder_get_object (builder, "dialog_updates"));
 	gpk_error_dialog_modal (window, title, message, details);
 }
 
@@ -221,7 +196,7 @@ gpk_update_viewer_error_dialog (GpkUpdateViewer *update_viewer, const gchar *tit
  * gpk_update_viewer_check_restart:
  **/
 static gboolean
-gpk_update_viewer_check_restart (GpkUpdateViewer *update_viewer)
+gpk_update_viewer_check_restart (void)
 {
 	GtkWindow *window;
 	GtkWidget *dialog;
@@ -232,29 +207,28 @@ gpk_update_viewer_check_restart (GpkUpdateViewer *update_viewer)
 	GtkResponseType response;
 	gboolean show_button = TRUE;
 	GError *error = NULL;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* get the text */
-	title = gpk_restart_enum_to_localised_text (priv->restart_update);
-	if (priv->restart_update == PK_RESTART_ENUM_SYSTEM) {
+	title = gpk_restart_enum_to_localised_text (restart_update);
+	if (restart_update == PK_RESTART_ENUM_SYSTEM) {
 		/* TRANSLATORS: the message text for the restart */
 		message = _("Some of the updates that were installed require the computer to be restarted before the changes will be applied.");
 		/* TRANSLATORS: the button text for the restart */
 		button = _("Restart Computer");
 
-	} else if (priv->restart_update == PK_RESTART_ENUM_SECURITY_SYSTEM) {
+	} else if (restart_update == PK_RESTART_ENUM_SECURITY_SYSTEM) {
 		/* TRANSLATORS: the message text for the restart */
 		message = _("Some of the updates that were installed require the computer to be restarted to remain secure.");
 		/* TRANSLATORS: the button text for the restart */
 		button = _("Restart Computer");
 
-	} else if (priv->restart_update == PK_RESTART_ENUM_SESSION) {
+	} else if (restart_update == PK_RESTART_ENUM_SESSION) {
 		/* TRANSLATORS: the message text for the logout */
 		message = _("Some of the updates that were installed require you to log out and back in before the changes will be applied.");
 		/* TRANSLATORS: the button text for the logout */
 		button = _("Log Out");
 
-	} else if (priv->restart_update == PK_RESTART_ENUM_SECURITY_SESSION) {
+	} else if (restart_update == PK_RESTART_ENUM_SECURITY_SESSION) {
 		/* TRANSLATORS: the message text for the logout */
 		message = _("Some of the updates that were installed require you to log out and back in to remain secure.");
 		/* TRANSLATORS: the button text for the logout */
@@ -266,15 +240,15 @@ gpk_update_viewer_check_restart (GpkUpdateViewer *update_viewer)
 	}
 
 	/* show modal dialog */
-	window = GTK_WINDOW(gtk_builder_get_object (priv->builder, "dialog_updates"));
+	window = GTK_WINDOW(gtk_builder_get_object (builder, "dialog_updates"));
 	dialog = gtk_message_dialog_new (window, GTK_DIALOG_MODAL,
 					 GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE,
 					 "%s", title);
 
 	/* check to see if restart is possible */
-	if (priv->restart_update == PK_RESTART_ENUM_SYSTEM ||
-	    priv->restart_update == PK_RESTART_ENUM_SECURITY_SYSTEM) {
-		egg_console_kit_can_restart (priv->console, &show_button, NULL);
+	if (restart_update == PK_RESTART_ENUM_SYSTEM ||
+	    restart_update == PK_RESTART_ENUM_SECURITY_SYSTEM) {
+		egg_console_kit_can_restart (console, &show_button, NULL);
 	}
 
 	/* only show the button if we can do the action */
@@ -284,21 +258,18 @@ gpk_update_viewer_check_restart (GpkUpdateViewer *update_viewer)
 	gtk_window_set_icon_name (GTK_WINDOW(dialog), GPK_ICON_SOFTWARE_INSTALLER);
 
 	/* setup a callback so we autoclose */
-	g_object_set_data_full (G_OBJECT(dialog), "instance", g_object_ref (update_viewer), (GDestroyNotify) g_object_unref);
-	priv->auto_shutdown_id =
+	auto_shutdown_id =
 		g_timeout_add_seconds (GPK_UPDATE_VIEWER_AUTO_RESTART_TIMEOUT,
 				       (GSourceFunc) gpk_update_viewer_auto_shutdown_cb, dialog);
-#if GLIB_CHECK_VERSION(2,25,8)
-	g_source_set_name_by_id (priv->auto_shutdown_id, "[GpkUpdateViewer] auto-restart");
-#endif
+	g_source_set_name_by_id (auto_shutdown_id, "[GpkUpdateViewer] auto-restart");
 
 	response = gtk_dialog_run (GTK_DIALOG(dialog));
 	gtk_widget_destroy (dialog);
 
 	/* remove auto-shutdown */
-	if (priv->auto_shutdown_id != 0) {
-		g_source_remove (priv->auto_shutdown_id);
-		priv->auto_shutdown_id = 0;
+	if (auto_shutdown_id != 0) {
+		g_source_remove (auto_shutdown_id);
+		auto_shutdown_id = 0;
 	}
 
 	/* cancel */
@@ -309,15 +280,15 @@ gpk_update_viewer_check_restart (GpkUpdateViewer *update_viewer)
 	ret = TRUE;
 
 	/* do the action */
-	if (priv->restart_update == PK_RESTART_ENUM_SYSTEM)
+	if (restart_update == PK_RESTART_ENUM_SYSTEM)
 		/* use consolekit to restart */
-		ret = egg_console_kit_restart (priv->console, &error);
+		ret = egg_console_kit_restart (console, &error);
 		if (!ret) {
 			/* TRANSLATORS: the PackageKit request did not complete, and it did not send an error */
-			gpk_update_viewer_error_dialog (update_viewer, _("Could not restart"), NULL, error->message);
+			gpk_update_viewer_error_dialog (_("Could not restart"), NULL, error->message);
 			g_error_free (error);
 		}
-	else if (priv->restart_update == PK_RESTART_ENUM_SESSION) {
+	else if (restart_update == PK_RESTART_ENUM_SESSION) {
 		GpkSession *session;
 		session = gpk_session_new ();
 		/* use gnome-session to log out */
@@ -332,7 +303,7 @@ out:
  * gpk_update_viewer_check_blocked_packages:
  **/
 static void
-gpk_update_viewer_check_blocked_packages (GpkUpdateViewer *update_viewer, GPtrArray *array)
+gpk_update_viewer_check_blocked_packages (GPtrArray *array)
 {
 	guint i;
 	PkPackage *item;
@@ -380,7 +351,7 @@ gpk_update_viewer_check_blocked_packages (GpkUpdateViewer *update_viewer, GPtrAr
 		goto out;
 
 	/* throw up dialog */
-	window = GTK_WINDOW(gtk_builder_get_object (update_viewer->priv->builder, "dialog_updates"));
+	window = GTK_WINDOW(gtk_builder_get_object (builder, "dialog_updates"));
 	/* TRANSLATORS: we failed to install all the updates we requested */
 	gpk_error_dialog_modal (window, _("Some updates were not installed"), text, NULL);
 out:
@@ -429,7 +400,7 @@ out:
  * gpk_update_viewer_update_packages_cb:
  **/
 static void
-gpk_update_viewer_update_packages_cb (PkTask *task, GAsyncResult *res, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_update_packages_cb (PkTask *_task, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	GError *error = NULL;
@@ -444,7 +415,6 @@ gpk_update_viewer_update_packages_cb (PkTask *task, GAsyncResult *res, GpkUpdate
 	const gchar *message;
 	GtkTreeView *treeview;
 	GtkTreeModel *model;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* get the results */
 	results = pk_task_generic_finish (task, res, &error);
@@ -452,27 +422,26 @@ gpk_update_viewer_update_packages_cb (PkTask *task, GAsyncResult *res, GpkUpdate
 		/* not a PK error */
 		if (error->domain != PK_CLIENT_ERROR) {
 			/* TRANSLATORS: the PackageKit request did not complete, and it did not send an error */
-			gpk_update_viewer_error_dialog (update_viewer, _("Could not update packages"), NULL, error->message);
+			gpk_update_viewer_error_dialog (_("Could not update packages"), NULL, error->message);
 		} else if (error->code == PK_CLIENT_ERROR_DECLINED_SIMULATION) {
 			egg_debug ("ignoring the declined-simulation error");
 		} else if (error->code > PK_CLIENT_ERROR_LAST) {
 			gint code = error->code - PK_CLIENT_ERROR_LAST;
 			/* we've passed the PackageKit error code in the GError->code */
-			gpk_update_viewer_error_dialog (update_viewer,
-							gpk_error_enum_to_localised_text (code),
+			gpk_update_viewer_error_dialog (gpk_error_enum_to_localised_text (code),
 							gpk_error_enum_to_localised_message (code),
 							error->message);
 		} else {
 			/* TRANSLATORS: the PackageKit request did not complete, and it did not send an error */
-			gpk_update_viewer_error_dialog (update_viewer, _("Could not update packages"), NULL, error->message);
+			gpk_update_viewer_error_dialog (_("Could not update packages"), NULL, error->message);
 		}
 		g_error_free (error);
 
 		/* re-enable the package list */
-		gpk_update_viewer_packages_set_sensitive (update_viewer, TRUE);
+		gpk_update_viewer_packages_set_sensitive (TRUE);
 
 		/* allow clicking again */
-		widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_install"));
+		widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_install"));
 		gtk_widget_set_sensitive (widget, TRUE);
 
 		goto out;
@@ -491,21 +460,21 @@ gpk_update_viewer_update_packages_cb (PkTask *task, GAsyncResult *res, GpkUpdate
 				 /* TRANSLATORS: this is the sound description */
 				 CA_PROP_EVENT_DESCRIPTION, _("Failed to update"), NULL);
 
-		window = GTK_WINDOW(gtk_builder_get_object (priv->builder, "dialog_updates"));
+		window = GTK_WINDOW(gtk_builder_get_object (builder, "dialog_updates"));
 		gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 					gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 
 		/* re-enable the package list */
-		gpk_update_viewer_packages_set_sensitive (update_viewer, TRUE);
+		gpk_update_viewer_packages_set_sensitive (TRUE);
 
 		/* allow clicking again */
-		widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_install"));
+		widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_install"));
 		gtk_widget_set_sensitive (widget, TRUE);
 
 		goto out;
 	}
 
-	gpk_update_viewer_packages_set_sensitive (update_viewer, TRUE);
+	gpk_update_viewer_packages_set_sensitive (TRUE);
 
 	/* TODO: use ca_gtk_context_get_for_screen to allow use of GDK_MULTIHEAD_SAFE */
 
@@ -520,41 +489,41 @@ gpk_update_viewer_update_packages_cb (PkTask *task, GAsyncResult *res, GpkUpdate
 
 	/* get the worst restart case */
 	restart = pk_results_get_require_restart_worst (results);
-	if (restart > priv->restart_update)
-		priv->restart_update = restart;
+	if (restart > restart_update)
+		restart_update = restart;
 
 	/* check blocked */
 	array = pk_results_get_package_array (results);
-	gpk_update_viewer_check_blocked_packages (update_viewer, array);
+	gpk_update_viewer_check_blocked_packages (array);
 
 	/* check restart */
-	if (priv->restart_update == PK_RESTART_ENUM_SYSTEM ||
-	    priv->restart_update == PK_RESTART_ENUM_SESSION ||
-	    priv->restart_update == PK_RESTART_ENUM_SECURITY_SESSION ||
-	    priv->restart_update == PK_RESTART_ENUM_SECURITY_SYSTEM) {
-		gpk_update_viewer_check_restart (update_viewer);
-		gpk_update_viewer_quit (update_viewer);
+	if (restart_update == PK_RESTART_ENUM_SYSTEM ||
+	    restart_update == PK_RESTART_ENUM_SESSION ||
+	    restart_update == PK_RESTART_ENUM_SECURITY_SESSION ||
+	    restart_update == PK_RESTART_ENUM_SECURITY_SYSTEM) {
+		gpk_update_viewer_check_restart ();
+		gpk_update_viewer_quit ();
 		goto out;
 	} else {
 		/* we want the UI to update with the new list */
-		if (priv->other_updates_held_back)
-			gpk_update_viewer_get_new_update_array (update_viewer);
+		if (other_updates_held_back)
+			gpk_update_viewer_get_new_update_array ();
 		goto out;
 	}
 
 	/* hide close button */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_quit"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_quit"));
 	gtk_widget_hide (widget);
 
 	/* show a new title */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "label_header_title"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "label_header_title"));
 	/* TRANSLATORS: completed all updates */
 	text = g_strdup_printf ("<big><b>%s</b></big>", _("Updates installed"));
 	gtk_label_set_label (GTK_LABEL(widget), text);
 	g_free (text);
 
 	/* do different text depending on if we deselected any */
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	model = gtk_tree_view_get_model (treeview);
 	ret = gpk_update_viewer_are_all_updates_selected (model);
 	if (ret) {
@@ -566,7 +535,7 @@ gpk_update_viewer_update_packages_cb (PkTask *task, GAsyncResult *res, GpkUpdate
 	}
 
 	/* show modal dialog */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "dialog_updates"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "dialog_updates"));
 	dialog = gtk_message_dialog_new (GTK_WINDOW(widget), GTK_DIALOG_MODAL,
 					 GTK_MESSAGE_INFO, GTK_BUTTONS_OK,
 					 /* TRANSLATORS: title: all updates installed okay */
@@ -576,27 +545,25 @@ gpk_update_viewer_update_packages_cb (PkTask *task, GAsyncResult *res, GpkUpdate
 	gtk_window_set_icon_name (GTK_WINDOW(dialog), GPK_ICON_SOFTWARE_INSTALLER);
 
 	/* setup a callback so we autoclose */
-	priv->auto_shutdown_id =
+	auto_shutdown_id =
 		g_timeout_add_seconds (GPK_UPDATE_VIEWER_AUTO_RESTART_TIMEOUT,
 				       (GSourceFunc) gpk_update_viewer_auto_shutdown_cb, dialog);
-#if GLIB_CHECK_VERSION(2,25,8)
-	g_source_set_name_by_id (priv->auto_shutdown_id, "[GpkUpdateViewer] auto-shutdown");
-#endif
+	g_source_set_name_by_id (auto_shutdown_id, "[GpkUpdateViewer] auto-shutdown");
 
 	gtk_dialog_run (GTK_DIALOG(dialog));
 	gtk_widget_destroy (dialog);
 
 	/* remove auto-shutdown */
-	if (priv->auto_shutdown_id != 0) {
-		g_source_remove (priv->auto_shutdown_id);
-		priv->auto_shutdown_id = 0;
+	if (auto_shutdown_id != 0) {
+		g_source_remove (auto_shutdown_id);
+		auto_shutdown_id = 0;
 	}
 
 	/* quit after we successfully updated */
-	gpk_update_viewer_quit (update_viewer);
+	gpk_update_viewer_quit ();
 out:
 	/* no longer updating */
-	priv->ignore_updates_changed = FALSE;
+	ignore_updates_changed = FALSE;
 
 	if (error_code != NULL)
 		g_object_unref (error_code);
@@ -688,9 +655,7 @@ gpk_update_viewer_add_active_row (GtkTreeModel *model, GtkTreePath *path)
 	/* add poll */
 	if (active_row_timeout_id == 0) {
 		active_row_timeout_id = g_timeout_add (60, (GSourceFunc)gpk_update_viewer_pulse_active_rows, NULL);
-#if GLIB_CHECK_VERSION(2,25,8)
 		g_source_set_name_by_id (active_row_timeout_id, "[GpkUpdateViewer] pulse row");
-#endif
 	}
 	active_rows = g_slist_prepend (active_rows, ref);
 out:
@@ -776,7 +741,7 @@ gpk_update_viewer_model_get_path (GtkTreeModel *model, const gchar *package_id)
  * gpk_update_viewer_find_parent_name:
  **/
 static gboolean
-gpk_update_viewer_find_parent_name (GpkUpdateViewer *update_viewer, const gchar *package_name, GtkTreeIter *parent)
+gpk_update_viewer_find_parent_name (const gchar *package_name, GtkTreeIter *parent)
 {
 	GtkTreeView *treeview;
 	GtkTreeModel *model;
@@ -785,9 +750,8 @@ gpk_update_viewer_find_parent_name (GpkUpdateViewer *update_viewer, const gchar
 	gboolean valid;
 	gchar *package_id_tmp;
 	gboolean ret = FALSE;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	model = gtk_tree_view_get_model (treeview);
 
 	/* get the first iter in the array */
@@ -823,7 +787,7 @@ gpk_update_viewer_find_parent_name (GpkUpdateViewer *update_viewer, const gchar
  * gpk_update_viewer_find_parent:
  **/
 static gboolean
-gpk_update_viewer_find_parent (GpkUpdateViewer *update_viewer, const gchar *package_id, GtkTreeIter *parent)
+gpk_update_viewer_find_parent (const gchar *package_id, GtkTreeIter *parent)
 {
 	gchar **split = NULL;
 	gchar *found;
@@ -845,7 +809,7 @@ gpk_update_viewer_find_parent (GpkUpdateViewer *update_viewer, const gchar *pack
 		found[0] = '\0';
 
 		/* search for existing */
-		ret = gpk_update_viewer_find_parent_name (update_viewer, name, parent);
+		ret = gpk_update_viewer_find_parent_name (name, parent);
 	} while (!ret);
 
 	g_free (name);
@@ -857,7 +821,7 @@ gpk_update_viewer_find_parent (GpkUpdateViewer *update_viewer, const gchar *pack
  * gpk_update_viewer_progress_cb:
  **/
 static void
-gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, gpointer user_data)
 {
 	gboolean allow_cancel;
 	PkPackage *package;
@@ -870,7 +834,6 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpd
 	PkStatusEnum status;
 	gchar *package_id = NULL;
 	gchar *summary = NULL;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	g_object_get (progress,
 		      "role", &role,
@@ -903,7 +866,7 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpd
 			      NULL);
 
 		/* find model */
-		treeview = GTK_TREE_VIEW(gtk_builder_get_object (priv->builder, "treeview_updates"));
+		treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 		model = gtk_tree_view_get_model (treeview);
 
 		/* enable or disable the correct spinners */
@@ -919,26 +882,26 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpd
 		}
 
 		/* used for progress */
-		if (g_strcmp0 (priv->package_id_last, package_id) != 0) {
-			g_free (priv->package_id_last);
-			priv->package_id_last = g_strdup (package_id);
+		if (g_strcmp0 (package_id_last, package_id) != 0) {
+			g_free (package_id_last);
+			package_id_last = g_strdup (package_id);
 		}
 
 		/* update icon */
 		path = gpk_update_viewer_model_get_path (model, package_id);
 		if (path == NULL) {
 			/* find our parent */
-			ret = gpk_update_viewer_find_parent (update_viewer, package_id, &parent);
+			ret = gpk_update_viewer_find_parent (package_id, &parent);
 
 			text = gpk_package_id_format_twoline (package_id, summary);
 			egg_debug ("adding: id=%s, text=%s", package_id, text);
 
 			/* do we add to a parent? */
 			if (ret)
-				gtk_tree_store_append (priv->array_store_updates, &iter, &parent);
+				gtk_tree_store_append (array_store_updates, &iter, &parent);
 			else
-				gtk_tree_store_append (priv->array_store_updates, &iter, NULL);
-			gtk_tree_store_set (priv->array_store_updates, &iter,
+				gtk_tree_store_append (array_store_updates, &iter, NULL);
+			gtk_tree_store_set (array_store_updates, &iter,
 					    GPK_UPDATES_COLUMN_TEXT, text,
 					    GPK_UPDATES_COLUMN_ID, package_id,
 					    GPK_UPDATES_COLUMN_INFO, info,
@@ -964,13 +927,13 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpd
 
 		/* if we are adding deps, then select the checkbox */
 		if (role == PK_ROLE_ENUM_SIMULATE_UPDATE_PACKAGES) {
-			gtk_tree_store_set (priv->array_store_updates, &iter,
+			gtk_tree_store_set (array_store_updates, &iter,
 					    GPK_UPDATES_COLUMN_SELECT, TRUE,
 					    -1);
 		}
 
 		/* scroll to the active cell */
-		scroll = g_settings_get_boolean (priv->settings, GPK_SETTINGS_SCROLL_ACTIVE);
+		scroll = g_settings_get_boolean (settings, GPK_SETTINGS_SCROLL_ACTIVE);
 		if (scroll) {
 			column = gtk_tree_view_get_column (treeview, 3);
 			gtk_tree_view_scroll_to_cell (treeview, path, column, FALSE, 0.0f, 0.0f);
@@ -981,7 +944,7 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpd
 			/* if the info is finished, change the status to past tense */
 			if (info == PK_INFO_ENUM_FINISHED) {
 				/* clear the remaining size */
-				gtk_tree_store_set (priv->array_store_updates, &iter,
+				gtk_tree_store_set (array_store_updates, &iter,
 						    GPK_UPDATES_COLUMN_SIZE_DISPLAY, 0, -1);
 
 				gtk_tree_model_get (model, &iter,
@@ -990,7 +953,7 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpd
 				if (info < PK_INFO_ENUM_LAST)
 					info += PK_INFO_ENUM_LAST;
 			}
-			gtk_tree_store_set (priv->array_store_updates, &iter,
+			gtk_tree_store_set (array_store_updates, &iter,
 					    GPK_UPDATES_COLUMN_STATUS, info, -1);
 		}
 
@@ -1006,9 +969,9 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpd
 		egg_debug ("status %s", pk_status_enum_to_text (status));
 
 		/* use correct status pane */
-		widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "hbox_status"));
+		widget = GTK_WIDGET(gtk_builder_get_object (builder, "hbox_status"));
 		gtk_widget_show (widget);
-		widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "hbox_info"));
+		widget = GTK_WIDGET(gtk_builder_get_object (builder, "hbox_info"));
 		gtk_widget_hide (widget);
 
 		/* set cursor back to normal */
@@ -1023,16 +986,16 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpd
 		}
 
 		/* set status */
-		widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "label_status"));
+		widget = GTK_WIDGET(gtk_builder_get_object (builder, "label_status"));
 		if (status == PK_STATUS_ENUM_FINISHED) {
 			gtk_label_set_label (GTK_LABEL(widget), "");
-			widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "image_progress"));
+			widget = GTK_WIDGET(gtk_builder_get_object (builder, "image_progress"));
 			gtk_widget_hide (widget);
 
-			widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "progressbar_progress"));
+			widget = GTK_WIDGET(gtk_builder_get_object (builder, "progressbar_progress"));
 			gtk_widget_hide (widget);
 
-			widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_quit"));
+			widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_quit"));
 			gtk_widget_set_sensitive (widget, TRUE);
 		} else {
 			if (status == PK_STATUS_ENUM_QUERY || status == PK_STATUS_ENUM_SETUP) {
@@ -1047,7 +1010,7 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpd
 			gtk_widget_show (widget);
 
 			/* set icon */
-			widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "image_progress"));
+			widget = GTK_WIDGET(gtk_builder_get_object (builder, "image_progress"));
 			gtk_image_set_from_icon_name (GTK_IMAGE(widget), gpk_status_enum_to_icon_name (status), GTK_ICON_SIZE_BUTTON);
 			gtk_widget_show (widget);
 		}
@@ -1061,20 +1024,20 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpd
 		guint size;
 		guint size_display;
 
-		widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "progressbar_progress"));
+		widget = GTK_WIDGET(gtk_builder_get_object (builder, "progressbar_progress"));
 		gtk_widget_show (widget);
 		if (percentage != -1)
 			gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (widget), (gfloat) percentage / 100.0);
 
-		treeview = GTK_TREE_VIEW(gtk_builder_get_object (priv->builder, "treeview_updates"));
+		treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 		model = gtk_tree_view_get_model (treeview);
 
-		if (priv->package_id_last == NULL) {
+		if (package_id_last == NULL) {
 			egg_debug ("no last package");
 			return;
 		}
 
-		path = gpk_update_viewer_model_get_path (model, priv->package_id_last);
+		path = gpk_update_viewer_model_get_path (model, package_id_last);
 		if (path == NULL) {
 			egg_debug ("not found ID for package");
 			return;
@@ -1086,7 +1049,7 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpd
 				    -1);
 		if (subpercentage > 0) {
 			size_display = size - ((size * subpercentage) / 100);
-			gtk_tree_store_set (priv->array_store_updates, &iter,
+			gtk_tree_store_set (array_store_updates, &iter,
 					    GPK_UPDATES_COLUMN_PERCENTAGE, subpercentage,
 					    GPK_UPDATES_COLUMN_SIZE_DISPLAY, size_display,
 					    -1);
@@ -1095,11 +1058,11 @@ gpk_update_viewer_progress_cb (PkProgress *progress, PkProgressType type, GpkUpd
 
 	} else if (type == PK_PROGRESS_TYPE_ALLOW_CANCEL) {
 		gboolean idle;
-		widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_quit"));
+		widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_quit"));
 
 		/* we have to also check for idle as we might be getting the AllowCancel(false)
 		 * signal _after_ the PkClient has been marked as idle */
-		g_object_get (priv->task, "idle", &idle, NULL);
+		g_object_get (task, "idle", &idle, NULL);
 		gtk_widget_set_sensitive (widget, (allow_cancel || idle));
 	}
 out:
@@ -1113,7 +1076,7 @@ out:
  * gpk_update_viewer_client_notify_idle_cb:
  **/
 static void
-gpk_update_viewer_client_notify_idle_cb (PkClient *client, GParamSpec *pspec, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_client_notify_idle_cb (PkClient *client, GParamSpec *pspec, gpointer user_data)
 {
 	gboolean idle;
 	GtkWidget *widget;
@@ -1123,7 +1086,7 @@ gpk_update_viewer_client_notify_idle_cb (PkClient *client, GParamSpec *pspec, Gp
 		      NULL);
 	/* ensure button is sensitive */
 	if (idle) {
-		widget = GTK_WIDGET(gtk_builder_get_object (update_viewer->priv->builder, "button_quit"));
+		widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_quit"));
 		gtk_widget_set_sensitive (widget, TRUE);
 	}
 }
@@ -1155,7 +1118,7 @@ gpk_update_viewer_info_is_update_enum (PkInfoEnum info)
  * gpk_update_viewer_get_install_package_ids:
  **/
 static GPtrArray *
-gpk_update_viewer_get_install_package_ids (GpkUpdateViewer *update_viewer)
+gpk_update_viewer_get_install_package_ids (void)
 {
 	PkInfoEnum info;
 	gboolean child_valid;
@@ -1167,9 +1130,8 @@ gpk_update_viewer_get_install_package_ids (GpkUpdateViewer *update_viewer)
 	GtkTreeModel *model;
 	GtkTreeIter iter;
 	GPtrArray *array;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	model = gtk_tree_view_get_model (treeview);
 
 	array = g_ptr_array_new ();
@@ -1214,46 +1176,45 @@ gpk_update_viewer_get_install_package_ids (GpkUpdateViewer *update_viewer)
  * gpk_update_viewer_button_install_cb:
  **/
 static void
-gpk_update_viewer_button_install_cb (GtkWidget *widget, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_button_install_cb (GtkWidget *widget, gpointer user_data)
 {
 	GtkTreeSelection *selection;
 	GPtrArray *array = NULL;
 	GtkTreeView *treeview;
 	gchar **package_ids = NULL;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* hide the upgrade viewbox from now on */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "viewport_upgrade"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "viewport_upgrade"));
 	gtk_widget_hide (widget);
 
 	/* hide the held-back notice */
-	gtk_widget_hide (priv->info_updates);
+	gtk_widget_hide (info_updates);
 
 	egg_debug ("Doing the package updates");
 
 	/* no not allow to be unclicked at install time */
-	gpk_update_viewer_packages_set_sensitive (update_viewer, FALSE);
+	gpk_update_viewer_packages_set_sensitive (FALSE);
 
 	/* disable button */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_install"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_install"));
 	gtk_widget_set_sensitive (widget, FALSE);
 
 	/* clear the selection */
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	selection = gtk_tree_view_get_selection (treeview);
 	gtk_tree_selection_unselect_all (selection);
 
 	/* get the list of updates */
-	array = gpk_update_viewer_get_install_package_ids (update_viewer);
+	array = gpk_update_viewer_get_install_package_ids ();
 	package_ids = pk_ptr_array_to_strv (array);
 
 	/* get packages that also have to be updated */
-	pk_task_update_packages_async (priv->task, package_ids, priv->cancellable,
-				       (PkProgressCallback) gpk_update_viewer_progress_cb, update_viewer,
-				       (GAsyncReadyCallback) gpk_update_viewer_update_packages_cb, update_viewer);
+	pk_task_update_packages_async (task, package_ids, cancellable,
+				       (PkProgressCallback) gpk_update_viewer_progress_cb, NULL,
+				       (GAsyncReadyCallback) gpk_update_viewer_update_packages_cb, NULL);
 
 	/* from now on ignore updates-changed signals */
-	priv->ignore_updates_changed = TRUE;
+	ignore_updates_changed = TRUE;
 
 	g_strfreev (package_ids);
 	if (array != NULL)
@@ -1264,7 +1225,7 @@ gpk_update_viewer_button_install_cb (GtkWidget *widget, GpkUpdateViewer *update_
  * gpk_update_viewer_button_upgrade_cb:
  **/
 static void
-gpk_update_viewer_button_upgrade_cb (GtkWidget *widget, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_button_upgrade_cb (GtkWidget *widget, gpointer user_data)
 {
 	gboolean ret;
 	GError *error = NULL;
@@ -1272,7 +1233,7 @@ gpk_update_viewer_button_upgrade_cb (GtkWidget *widget, GpkUpdateViewer *update_
 	ret = g_spawn_command_line_async ("/usr/share/PackageKit/pk-upgrade-distro.sh", &error);
 	if (!ret) {
 		/* TRANSLATORS: the PackageKit request did not complete, and it did not send an error */
-		gpk_update_viewer_error_dialog (update_viewer, _("Could not run upgrade script"), NULL, error->message);
+		gpk_update_viewer_error_dialog (_("Could not run upgrade script"), NULL, error->message);
 		g_error_free (error);
 	}
 }
@@ -1281,42 +1242,40 @@ gpk_update_viewer_button_upgrade_cb (GtkWidget *widget, GpkUpdateViewer *update_
  * gpk_update_viewer_button_delete_event_cb:
  **/
 static gboolean
-gpk_update_viewer_button_delete_event_cb (GtkWidget *widget, GdkEvent *event, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_button_delete_event_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 {
-	gpk_update_viewer_quit (update_viewer);
+	gpk_update_viewer_quit ();
 	return TRUE;
 }
 
-
 /**
  * gpk_update_viewer_check_mobile_broadband:
  **/
 static void
-gpk_update_viewer_check_mobile_broadband (GpkUpdateViewer *update_viewer)
+gpk_update_viewer_check_mobile_broadband (void)
 {
 	gboolean ret = TRUE;
 	PkNetworkEnum state;
 	const gchar *message;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* get network state */
-	g_object_get (priv->control,
+	g_object_get (control,
 		      "network-state", &state,
 		      NULL);
 
 	/* hide by default */
-	gtk_widget_hide (priv->info_mobile);
+	gtk_widget_hide (info_mobile);
 
 	/* not on wireless mobile */
 	if (state != PK_NETWORK_ENUM_MOBILE)
 		goto out;
 
 	/* not when small */
-	if (priv->size_total < GPK_UPDATE_VIEWER_MOBILE_SMALL_SIZE)
+	if (size_total < GPK_UPDATE_VIEWER_MOBILE_SMALL_SIZE)
 		goto out;
 
 	/* not when ignored */
-	ret = g_settings_get_boolean (priv->settings, GPK_SETTINGS_NOTIFY_MOBILE_CONNECTION);
+	ret = g_settings_get_boolean (settings, GPK_SETTINGS_NOTIFY_MOBILE_CONNECTION);
 	if (!ret)
 		goto out;
 
@@ -1325,11 +1284,11 @@ gpk_update_viewer_check_mobile_broadband (GpkUpdateViewer *update_viewer)
 	/* TRANSLATORS, are we going to cost the user lots of money? */
 	message = ngettext ("Connectivity is being provided by wireless broadband, and it may be expensive to update this package.",
 			    "Connectivity is being provided by wireless broadband, and it may be expensive to update these packages.",
-			    priv->number_total);
-	gtk_label_set_label (GTK_LABEL(priv->info_mobile_label), message);
+			    number_total);
+	gtk_label_set_label (GTK_LABEL(info_mobile_label), message);
 
-	gtk_info_bar_set_message_type (GTK_INFO_BAR(priv->info_mobile), GTK_MESSAGE_WARNING);
-	gtk_widget_show (priv->info_mobile);
+	gtk_info_bar_set_message_type (GTK_INFO_BAR(info_mobile), GTK_MESSAGE_WARNING);
+	gtk_widget_show (info_mobile);
 out:
 	return;
 }
@@ -1338,14 +1297,13 @@ out:
  * gpk_update_viewer_update_global_state_recursive:
  **/
 static void
-gpk_update_viewer_update_global_state_recursive (GpkUpdateViewer *update_viewer, GtkTreeModel *model, GtkTreeIter *iter)
+gpk_update_viewer_update_global_state_recursive (GtkTreeModel *model, GtkTreeIter *iter)
 {
 	gboolean selected;
 	PkRestartEnum restart;
 	guint size;
 	gboolean child_valid;
 	GtkTreeIter child_iter;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	gtk_tree_model_get (model, iter,
 			    GPK_UPDATES_COLUMN_SELECT, &selected,
@@ -1353,16 +1311,16 @@ gpk_update_viewer_update_global_state_recursive (GpkUpdateViewer *update_viewer,
 			    GPK_UPDATES_COLUMN_SIZE, &size,
 			    -1);
 	if (selected) {
-		priv->size_total += size;
-		priv->number_total++;
-		if (restart > priv->restart_worst)
-			priv->restart_worst = restart;
+		size_total += size;
+		number_total++;
+		if (restart > restart_worst)
+			restart_worst = restart;
 	}
 
 	/* child entries */
 	child_valid = gtk_tree_model_iter_children (model, &child_iter, iter);
 	while (child_valid) {
-		gpk_update_viewer_update_global_state_recursive (update_viewer, model, &child_iter);
+		gpk_update_viewer_update_global_state_recursive (model, &child_iter);
 		child_valid = gtk_tree_model_iter_next (model, &child_iter);
 	}
 
@@ -1372,26 +1330,25 @@ gpk_update_viewer_update_global_state_recursive (GpkUpdateViewer *update_viewer,
  * gpk_update_viewer_update_global_state:
  **/
 static void
-gpk_update_viewer_update_global_state (GpkUpdateViewer *update_viewer)
+gpk_update_viewer_update_global_state (void)
 {
 	gboolean valid;
 	GtkTreeIter iter;
 	GtkTreeView *treeview;
 	GtkTreeModel *model;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* reset to zero */
-	priv->size_total = 0;
-	priv->number_total = 0;
-	priv->restart_worst = PK_RESTART_ENUM_NONE;
+	size_total = 0;
+	number_total = 0;
+	restart_worst = PK_RESTART_ENUM_NONE;
 
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	model = gtk_tree_view_get_model (treeview);
 
 	/* if there are no entries selected, deselect the button */
 	valid = gtk_tree_model_get_iter_first (model, &iter);
 	while (valid) {
-		gpk_update_viewer_update_global_state_recursive (update_viewer, model, &iter);
+		gpk_update_viewer_update_global_state_recursive (model, &iter);
 		valid = gtk_tree_model_iter_next (model, &iter);
 	}
 }
@@ -1400,26 +1357,25 @@ gpk_update_viewer_update_global_state (GpkUpdateViewer *update_viewer)
  * gpk_update_viewer_modal_error_with_timeout:
  **/
 static void
-gpk_update_viewer_modal_error_with_timeout (GpkUpdateViewer *update_viewer, const gchar *title, const gchar *message)
+gpk_update_viewer_modal_error_with_timeout (const gchar *title, const gchar *message)
 {
 	GtkWidget *dialog;
 	GtkWidget *widget;
 	gchar *text;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* hide close button */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_quit"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_quit"));
 	gtk_widget_hide (widget);
 
 	/* show a new title */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "label_header_title"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "label_header_title"));
 	/* TRANSLATORS: there are no updates */
 	text = g_strdup_printf ("<big><b>%s</b></big>", _("There are no updates available"));
 	gtk_label_set_label (GTK_LABEL(widget), text);
 	g_free (text);
 
 	/* show modal dialog */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "dialog_updates"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "dialog_updates"));
 	dialog = gtk_message_dialog_new (GTK_WINDOW(widget), GTK_DIALOG_MODAL,
 					 GTK_MESSAGE_INFO, GTK_BUTTONS_OK,
 					 "%s", title);
@@ -1428,24 +1384,22 @@ gpk_update_viewer_modal_error_with_timeout (GpkUpdateViewer *update_viewer, cons
 	gtk_window_set_icon_name (GTK_WINDOW(dialog), GPK_ICON_SOFTWARE_INSTALLER);
 
 	/* setup a callback so we autoclose */
-	priv->auto_shutdown_id =
+	auto_shutdown_id =
 		g_timeout_add_seconds (GPK_UPDATE_VIEWER_AUTO_RESTART_TIMEOUT,
 				       (GSourceFunc) gpk_update_viewer_auto_shutdown_cb, dialog);
-#if GLIB_CHECK_VERSION(2,25,8)
-	g_source_set_name_by_id (priv->auto_shutdown_id, "[GpkUpdateViewer] shutdown no updates");
-#endif
+	g_source_set_name_by_id (auto_shutdown_id, "[GpkUpdateViewer] shutdown no updates");
 
 	gtk_dialog_run (GTK_DIALOG(dialog));
 	gtk_widget_destroy (dialog);
 
 	/* remove auto-shutdown */
-	if (priv->auto_shutdown_id != 0) {
-		g_source_remove (priv->auto_shutdown_id);
-		priv->auto_shutdown_id = 0;
+	if (auto_shutdown_id != 0) {
+		g_source_remove (auto_shutdown_id);
+		auto_shutdown_id = 0;
 	}
 
 	/* exit the program */
-	gpk_update_viewer_quit (update_viewer);
+	gpk_update_viewer_quit ();
 }
 
 
@@ -1453,7 +1407,7 @@ gpk_update_viewer_modal_error_with_timeout (GpkUpdateViewer *update_viewer, cons
  * gpk_update_viewer_reconsider_info:
  **/
 static void
-gpk_update_viewer_reconsider_info (GpkUpdateViewer *update_viewer)
+gpk_update_viewer_reconsider_info (void)
 {
 	GtkWidget *widget;
 	guint len;
@@ -1461,20 +1415,19 @@ gpk_update_viewer_reconsider_info (GpkUpdateViewer *update_viewer)
 	gchar *text;
 	gchar *text_size;
 	PkNetworkEnum state;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* update global state */
-	gpk_update_viewer_update_global_state (update_viewer);
+	gpk_update_viewer_update_global_state ();
 
 	/* get network state */
-	g_object_get (priv->control,
+	g_object_get (control,
 		      "network-state", &state,
 		      NULL);
 
 	/* not when offline */
 	egg_debug ("network status is %s", pk_network_enum_to_text (state));
 	if (state == PK_NETWORK_ENUM_OFFLINE) {
-		gpk_update_viewer_modal_error_with_timeout (update_viewer,
+		gpk_update_viewer_modal_error_with_timeout (
 				/* TRANSLATORS: title: nothing to do */
 				_("No updates are available"),
 				/* TRANSLATORS: no network connnection, according to PackageKit */
@@ -1483,25 +1436,25 @@ gpk_update_viewer_reconsider_info (GpkUpdateViewer *update_viewer)
 	}
 
 	/* action button */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_install"));
-	gtk_widget_set_sensitive (widget, (priv->number_total > 0));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_install"));
+	gtk_widget_set_sensitive (widget, (number_total > 0));
 
 	/* sensitive */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "scrolledwindow_updates"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "scrolledwindow_updates"));
 	gtk_widget_set_sensitive (widget, TRUE);
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "scrolledwindow_details"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "scrolledwindow_details"));
 	gtk_widget_set_sensitive (widget, TRUE);
 
 	/* set the pluralisation of the button */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_install"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_install"));
 	/* TRANSLATORS: this is the button text when we have updates */
-	title = ngettext ("_Install Update", "_Install Updates", priv->number_total);
+	title = ngettext ("_Install Update", "_Install Updates", number_total);
 	gtk_button_set_label (GTK_BUTTON (widget), title);
 
 	/* no updates */
-	len = priv->update_array->len;
+	len = update_array->len;
 	if (len == 0) {
-		gpk_update_viewer_modal_error_with_timeout (update_viewer,
+		gpk_update_viewer_modal_error_with_timeout (
 				/* TRANSLATORS: title: nothing to do */
 				_("All software is up to date"),
 				/* TRANSLATORS: tell the user the problem */
@@ -1510,71 +1463,71 @@ gpk_update_viewer_reconsider_info (GpkUpdateViewer *update_viewer)
 	}
 
 	/* use correct status pane */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "hbox_status"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "hbox_status"));
 	gtk_widget_hide (widget);
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "hbox_info"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "hbox_info"));
 	gtk_widget_show (widget);
 
 	/* restart */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "label_info"));
-	if (priv->restart_worst == PK_RESTART_ENUM_NONE) {
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "label_info"));
+	if (restart_worst == PK_RESTART_ENUM_NONE) {
 		gtk_widget_hide (widget);
-		widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "image_info"));
+		widget = GTK_WIDGET(gtk_builder_get_object (builder, "image_info"));
 		gtk_widget_hide (widget);
 	} else {
-		gtk_label_set_label (GTK_LABEL(widget), gpk_restart_enum_to_localised_text_future (priv->restart_worst));
+		gtk_label_set_label (GTK_LABEL(widget), gpk_restart_enum_to_localised_text_future (restart_worst));
 		gtk_widget_show (widget);
-		widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "image_info"));
-		gtk_image_set_from_icon_name (GTK_IMAGE(widget), gpk_restart_enum_to_icon_name (priv->restart_worst), GTK_ICON_SIZE_BUTTON);
+		widget = GTK_WIDGET(gtk_builder_get_object (builder, "image_info"));
+		gtk_image_set_from_icon_name (GTK_IMAGE(widget), gpk_restart_enum_to_icon_name (restart_worst), GTK_ICON_SIZE_BUTTON);
 		gtk_widget_show (widget);
 	}
 
 	/* header */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "label_header_title"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "label_header_title"));
 	text = g_strdup_printf (ngettext ("There is %i update available",
 					  "There are %i updates available", len), len);
 	text_size = g_strdup_printf ("<big><b>%s</b></big>", text);
 	gtk_label_set_label (GTK_LABEL(widget), text_size);
 	g_free (text);
 	g_free (text_size);
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "hbox_header"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "hbox_header"));
 	gtk_widget_show (widget);
 
 	/* total */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "label_summary"));
-	if (priv->number_total == 0) {
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "label_summary"));
+	if (number_total == 0) {
 		gtk_label_set_label (GTK_LABEL(widget), "");
 	} else {
-		if (priv->size_total == 0) {
+		if (size_total == 0) {
 			/* TRANSLATORS: how many updates are selected in the UI */
 			text = g_strdup_printf (ngettext ("%i update selected",
 							  "%i updates selected",
-							  priv->number_total), priv->number_total);
+							  number_total), number_total);
 			gtk_label_set_label (GTK_LABEL(widget), text);
 			g_free (text);
 		} else {
-			text_size = g_format_size_for_display (priv->size_total);
+			text_size = g_format_size_for_display (size_total);
 			/* TRANSLATORS: how many updates are selected in the UI, and the size of packages to download */
 			text = g_strdup_printf (ngettext ("%i update selected (%s)",
 							  "%i updates selected (%s)",
-							  priv->number_total), priv->number_total, text_size);
+							  number_total), number_total, text_size);
 			gtk_label_set_label (GTK_LABEL(widget), text);
 			g_free (text);
 			g_free (text_size);
 		}
 	}
 
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "label_summary"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "label_summary"));
 	gtk_widget_show (widget);
 out:
-	gpk_update_viewer_check_mobile_broadband (update_viewer);
+	gpk_update_viewer_check_mobile_broadband ();
 }
 
 /**
  * gpk_update_viewer_treeview_update_toggled:
  **/
 static void
-gpk_update_viewer_treeview_update_toggled (GtkCellRendererToggle *cell, gchar *path_str, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_treeview_update_toggled (GtkCellRendererToggle *cell, gchar *path_str, gpointer user_data)
 {
 	GtkTreeIter iter;
 	GtkTreePath *path = gtk_tree_path_new_from_string (path_str);
@@ -1583,7 +1536,7 @@ gpk_update_viewer_treeview_update_toggled (GtkCellRendererToggle *cell, gchar *p
 	GtkTreeView *treeview;
 	GtkTreeModel *model;
 
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (update_viewer->priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	model = gtk_tree_view_get_model (treeview);
 
 	/* get toggled iter */
@@ -1604,7 +1557,7 @@ gpk_update_viewer_treeview_update_toggled (GtkCellRendererToggle *cell, gchar *p
 	gtk_tree_path_free (path);
 
 	/* if there are no entries selected, deselect the button */
-	gpk_update_viewer_reconsider_info (update_viewer);
+	gpk_update_viewer_reconsider_info ();
 }
 
 /**
@@ -1631,7 +1584,7 @@ gpk_update_viewer_treeview_updates_size_allocate_cb (GtkWidget *widget, GtkAlloc
  * gpk_update_viewer_treeview_query_tooltip_cb:
  */
 static gboolean
-gpk_update_viewer_treeview_query_tooltip_cb (GtkWidget *widget, gint x, gint y, gboolean keyboard, GtkTooltip *tooltip, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_treeview_query_tooltip_cb (GtkWidget *widget, gint x, gint y, gboolean keyboard, GtkTooltip *tooltip, gpointer user_data)
 {
 	gboolean ret;
 	GtkTreePath *path = NULL;
@@ -1699,7 +1652,7 @@ out:
  * gpk_update_viewer_treeview_add_columns_update:
  **/
 static void
-gpk_update_viewer_treeview_add_columns_update (GpkUpdateViewer *update_viewer, GtkTreeView *treeview)
+gpk_update_viewer_treeview_add_columns_update (GtkTreeView *treeview)
 {
 	GtkCellRenderer *renderer;
 	GtkTreeViewColumn *column;
@@ -1733,7 +1686,7 @@ gpk_update_viewer_treeview_add_columns_update (GpkUpdateViewer *update_viewer, G
 
 	/* select toggle */
 	renderer = gtk_cell_renderer_toggle_new ();
-	g_signal_connect (renderer, "toggled", G_CALLBACK (gpk_update_viewer_treeview_update_toggled), update_viewer);
+	g_signal_connect (renderer, "toggled", G_CALLBACK (gpk_update_viewer_treeview_update_toggled), NULL);
 	gtk_tree_view_column_pack_start (column, renderer, TRUE);
 	gtk_tree_view_column_add_attribute (column, renderer, "active", GPK_UPDATES_COLUMN_SELECT);
 	gtk_tree_view_column_add_attribute (column, renderer, "activatable", GPK_UPDATES_COLUMN_CLICKABLE);
@@ -1905,7 +1858,7 @@ out:
  * gpk_update_viewer_populate_details:
  **/
 static void
-gpk_update_viewer_populate_details (GpkUpdateViewer *update_viewer, PkUpdateDetail *item)
+gpk_update_viewer_populate_details (PkUpdateDetail *item)
 {
 	GtkTreeView *treeview;
 	GtkTreeSelection *selection;
@@ -1932,7 +1885,6 @@ gpk_update_viewer_populate_details (GpkUpdateViewer *update_viewer, PkUpdateDeta
 	gchar *updated;
 	gchar *issued_locale = NULL;
 	gchar *updated_locale = NULL;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* get data */
 	g_object_get (item,
@@ -1951,7 +1903,7 @@ gpk_update_viewer_populate_details (GpkUpdateViewer *update_viewer, PkUpdateDeta
 		      NULL);
 
 	/* get info  */
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	selection = gtk_tree_view_get_selection (treeview);
 	if (gtk_tree_selection_get_selected (selection, &model, &treeiter))
 		gtk_tree_model_get (model, &treeiter,
@@ -1960,29 +1912,29 @@ gpk_update_viewer_populate_details (GpkUpdateViewer *update_viewer, PkUpdateDeta
 		info = PK_INFO_ENUM_NORMAL;
 
 	/* blank */
-	gtk_text_buffer_set_text (priv->text_buffer, "", -1);
-	gtk_text_buffer_get_start_iter (priv->text_buffer, &iter);
+	gtk_text_buffer_set_text (text_buffer, "", -1);
+	gtk_text_buffer_get_start_iter (text_buffer, &iter);
 
 	if (info == PK_INFO_ENUM_ENHANCEMENT) {
 		/* TRANSLATORS: this is the update type, e.g. security */
-		gtk_text_buffer_insert_with_tags_by_name (priv->text_buffer, &iter, ("This update will add new features and expand functionality."), -1, "para", NULL);
-		gtk_text_buffer_insert (priv->text_buffer, &iter, "\n", -1);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, ("This update will add new features and expand functionality."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	} else if (info == PK_INFO_ENUM_BUGFIX) {
 		/* TRANSLATORS: this is the update type, e.g. security */
-		gtk_text_buffer_insert_with_tags_by_name (priv->text_buffer, &iter, _("This update will fix bugs and other non-critical problems."), -1, "para", NULL);
-		gtk_text_buffer_insert (priv->text_buffer, &iter, "\n", -1);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("This update will fix bugs and other non-critical problems."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	} else if (info == PK_INFO_ENUM_IMPORTANT) {
 		/* TRANSLATORS: this is the update type, e.g. security */
-		gtk_text_buffer_insert_with_tags_by_name (priv->text_buffer, &iter, _("This update is important as it may solve critical problems."), -1, "para", "important", NULL);
-		gtk_text_buffer_insert (priv->text_buffer, &iter, "\n", -1);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("This update is important as it may solve critical problems."), -1, "para", "important", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	} else if (info == PK_INFO_ENUM_SECURITY) {
 		/* TRANSLATORS: this is the update type, e.g. security */
-		gtk_text_buffer_insert_with_tags_by_name (priv->text_buffer, &iter, _("This update is needed to fix a security vulnerability with this package."), -1, "para", "important", NULL);
-		gtk_text_buffer_insert (priv->text_buffer, &iter, "\n", -1);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("This update is needed to fix a security vulnerability with this package."), -1, "para", "important", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	} else if (info == PK_INFO_ENUM_BLOCKED) {
 		/* TRANSLATORS: this is the update type, e.g. security */
-		gtk_text_buffer_insert_with_tags_by_name (priv->text_buffer, &iter, _("This update is blocked."), -1, "para", NULL);
-		gtk_text_buffer_insert (priv->text_buffer, &iter, "\n", -1);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("This update is blocked."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	}
 
 	/* convert ISO time to locale time */
@@ -1994,25 +1946,25 @@ gpk_update_viewer_populate_details (GpkUpdateViewer *update_viewer, PkUpdateDeta
 
 		/* TRANSLATORS: this is when the notification was issued and then updated */
 		line = g_strdup_printf (_("This notification was issued on %s and last updated on %s."), issued_locale, updated_locale);
-		gtk_text_buffer_insert_with_tags_by_name (priv->text_buffer, &iter, line, -1, "para", NULL);
-		gtk_text_buffer_insert (priv->text_buffer, &iter, "\n", -1);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, line, -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 		g_free (line);
 	} else if (issued_locale != NULL) {
 
 		/* TRANSLATORS: this is when the update was issued */
 		line = g_strdup_printf (_("This notification was issued on %s."), issued_locale);
-		gtk_text_buffer_insert_with_tags_by_name (priv->text_buffer, &iter, line, -1, "para", NULL);
-		gtk_text_buffer_insert (priv->text_buffer, &iter, "\n", -1);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, line, -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 		g_free (line);
 	}
 
 	/* update text */
 	if (!egg_strzero (update_text)) {
 		/* convert the bullets */
-		line = egg_markdown_parse (priv->markdown, update_text);
+		line = egg_markdown_parse (markdown, update_text);
 		if (!egg_strzero (line)) {
-			gtk_text_buffer_insert_markup (priv->text_buffer, &iter, line);
-			gtk_text_buffer_insert (priv->text_buffer, &iter, "\n\n", -1);
+			gtk_text_buffer_insert_markup (text_buffer, &iter, line);
+			gtk_text_buffer_insert (text_buffer, &iter, "\n\n", -1);
 			has_update_text = TRUE;
 		}
 		g_free (line);
@@ -2024,7 +1976,7 @@ gpk_update_viewer_populate_details (GpkUpdateViewer *update_viewer, PkUpdateDeta
 		/* TRANSLATORS: this is a array of vendor URLs */
 		title = ngettext ("For more information about this update please visit this website:",
 				  "For more information about this update please visit these websites:", array->len);
-		gpk_update_viewer_add_description_link_item (priv->text_buffer, &iter, title, array);
+		gpk_update_viewer_add_description_link_item (text_buffer, &iter, title, array);
 		g_ptr_array_unref (array);
 	}
 	if (!egg_strzero (bugzilla_url)) {
@@ -2032,7 +1984,7 @@ gpk_update_viewer_populate_details (GpkUpdateViewer *update_viewer, PkUpdateDeta
 		/* TRANSLATORS: this is a array of bugzilla URLs */
 		title = ngettext ("For more information about bugs fixed by this update please visit this website:",
 				  "For more information about bugs fixed by this update please visit these websites:", array->len);
-		gpk_update_viewer_add_description_link_item (priv->text_buffer, &iter, title, array);
+		gpk_update_viewer_add_description_link_item (text_buffer, &iter, title, array);
 		g_ptr_array_unref (array);
 	}
 	if (!egg_strzero (cve_url)) {
@@ -2040,39 +1992,39 @@ gpk_update_viewer_populate_details (GpkUpdateViewer *update_viewer, PkUpdateDeta
 		/* TRANSLATORS: this is a array of CVE (security) URLs */
 		title = ngettext ("For more information about this security update please visit this website:",
 				  "For more information about this security update please visit these websites:", array->len);
-		gpk_update_viewer_add_description_link_item (priv->text_buffer, &iter, title, array);
+		gpk_update_viewer_add_description_link_item (text_buffer, &iter, title, array);
 		g_ptr_array_unref (array);
 	}
 
 	/* reboot */
 	if (restart == PK_RESTART_ENUM_SYSTEM) {
 		/* TRANSLATORS: reboot required */
-		gtk_text_buffer_insert_with_tags_by_name (priv->text_buffer, &iter, _("The computer will have to be restarted after the update for the changes to take effect."), -1, "para", NULL);
-		gtk_text_buffer_insert (priv->text_buffer, &iter, "\n", -1);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("The computer will have to be restarted after the update for the changes to take effect."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	} else if (restart == PK_RESTART_ENUM_SESSION) {
 		/* TRANSLATORS: log out required */
-		gtk_text_buffer_insert_with_tags_by_name (priv->text_buffer, &iter, _("You will need to log out and back in after the update for the changes to take effect."), -1, "para", NULL);
-		gtk_text_buffer_insert (priv->text_buffer, &iter, "\n", -1);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("You will need to log out and back in after the update for the changes to take effect."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	}
 
 	/* state */
 	if (state == PK_UPDATE_STATE_ENUM_UNSTABLE) {
 		/* TRANSLATORS: this is the stability status of the update */
-		gtk_text_buffer_insert_with_tags_by_name (priv->text_buffer, &iter, _("The classifaction of this update is unstable which means it is not designed for production use."), -1, "para", NULL);
-		gtk_text_buffer_insert (priv->text_buffer, &iter, "\n", -1);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("The classifaction of this update is unstable which means it is not designed for production use."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	} else if (state == PK_UPDATE_STATE_ENUM_TESTING) {
 		/* TRANSLATORS: this is the stability status of the update */
-		gtk_text_buffer_insert_with_tags_by_name (priv->text_buffer, &iter, _("This is a test update, and is not designed for normal use. Please report any problems or regressions you encounter."), -1, "para", NULL);
-		gtk_text_buffer_insert (priv->text_buffer, &iter, "\n", -1);
+		gtk_text_buffer_insert_with_tags_by_name (text_buffer, &iter, _("This is a test update, and is not designed for normal use. Please report any problems or regressions you encounter."), -1, "para", NULL);
+		gtk_text_buffer_insert (text_buffer, &iter, "\n", -1);
 	}
 
 	/* only show changelog if we didn't have any update text */
 	if (!has_update_text && !egg_strzero (changelog)) {
-		line = egg_markdown_parse (priv->markdown, changelog);
+		line = egg_markdown_parse (markdown, changelog);
 		if (!egg_strzero (line)) {
 			/* TRANSLATORS: this is a ChangeLog */
 			line2 = g_strdup_printf ("%s\n%s\n", _("The developer logs will be shown as no description is available for this update:"), line);
-			gtk_text_buffer_insert_markup (priv->text_buffer, &iter, line2);
+			gtk_text_buffer_insert_markup (text_buffer, &iter, line2);
 			g_free (line2);
 		}
 		g_free (line);
@@ -2096,7 +2048,7 @@ gpk_update_viewer_populate_details (GpkUpdateViewer *update_viewer, PkUpdateDeta
  * gpk_packages_treeview_clicked_cb:
  **/
 static void
-gpk_packages_treeview_clicked_cb (GtkTreeSelection *selection, GpkUpdateViewer *update_viewer)
+gpk_packages_treeview_clicked_cb (GtkTreeSelection *selection, gpointer user_data)
 {
 	GtkTreeModel *model;
 	GtkTreeIter iter;
@@ -2107,7 +2059,7 @@ gpk_packages_treeview_clicked_cb (GtkTreeSelection *selection, GpkUpdateViewer *
 	if (gtk_tree_selection_get_selected (selection, &model, &iter)) {
 
 		/* set loading text */
-		gtk_text_buffer_set_text (update_viewer->priv->text_buffer, _("Loading..."), -1);
+		gtk_text_buffer_set_text (text_buffer, _("Loading..."), -1);
 
 		gtk_tree_model_get (model, &iter,
 				    GPK_UPDATES_COLUMN_UPDATE_DETAIL_OBJ, &item,
@@ -2115,7 +2067,7 @@ gpk_packages_treeview_clicked_cb (GtkTreeSelection *selection, GpkUpdateViewer *
 		egg_debug ("selected row is: %s, %p", package_id, item);
 		g_free (package_id);
 		if (item != NULL)
-			gpk_update_viewer_populate_details (update_viewer, item);
+			gpk_update_viewer_populate_details (item);
 	} else {
 		egg_debug ("no row selected");
 	}
@@ -2125,7 +2077,7 @@ gpk_packages_treeview_clicked_cb (GtkTreeSelection *selection, GpkUpdateViewer *
  * gpk_update_viewer_get_details_cb:
  **/
 static void
-gpk_update_viewer_get_details_cb (PkClient *client, GAsyncResult *res, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_get_details_cb (PkClient *client, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	GError *error = NULL;
@@ -2142,13 +2094,12 @@ gpk_update_viewer_get_details_cb (PkClient *client, GAsyncResult *res, GpkUpdate
 	GtkTreeIter iter;
 	PkError *error_code = NULL;
 	GtkWindow *window;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* get the results */
 	results = pk_client_generic_finish (client, res, &error);
 	if (results == NULL) {
 		/* TRANSLATORS: the PackageKit request did not complete, and it did not send an error */
-		gpk_update_viewer_error_dialog (update_viewer, _("Could not get update details"), NULL, error->message);
+		gpk_update_viewer_error_dialog (_("Could not get update details"), NULL, error->message);
 		g_error_free (error);
 		goto out;
 	}
@@ -2158,7 +2109,7 @@ gpk_update_viewer_get_details_cb (PkClient *client, GAsyncResult *res, GpkUpdate
 	if (error_code != NULL) {
 		egg_warning ("failed to get details: %s, %s", pk_error_enum_to_text (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 
-		window = GTK_WINDOW(gtk_builder_get_object (priv->builder, "dialog_updates"));
+		window = GTK_WINDOW(gtk_builder_get_object (builder, "dialog_updates"));
 		gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 					gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		goto out;
@@ -2168,12 +2119,12 @@ gpk_update_viewer_get_details_cb (PkClient *client, GAsyncResult *res, GpkUpdate
 	array = pk_results_get_details_array (results);
 	if (array->len == 0) {
 		/* TRANSLATORS: PackageKit did not send any results for the query... */
-		gpk_update_viewer_error_dialog (update_viewer, _("Could not get package details"), _("No results were returned."), NULL);
+		gpk_update_viewer_error_dialog (_("Could not get package details"), _("No results were returned."), NULL);
 		goto out;
 	}
 
 	/* set data */
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	model = gtk_tree_view_get_model (treeview);
 	for (i=0; i<array->len; i++) {
 		item = g_ptr_array_index (array, i);
@@ -2190,21 +2141,21 @@ gpk_update_viewer_get_details_cb (PkClient *client, GAsyncResult *res, GpkUpdate
 		} else {
 			gtk_tree_model_get_iter (model, &iter, path);
 			gtk_tree_path_free (path);
-			gtk_tree_store_set (priv->array_store_updates, &iter,
+			gtk_tree_store_set (array_store_updates, &iter,
 					    GPK_UPDATES_COLUMN_DETAILS_OBJ, (gpointer) g_object_ref (item),
 					    GPK_UPDATES_COLUMN_SIZE, (gint)size,
 					    GPK_UPDATES_COLUMN_SIZE_DISPLAY, (gint)size,
 					    -1);
 			/* in cache */
 			if (size == 0)
-				gtk_tree_store_set (priv->array_store_updates, &iter,
+				gtk_tree_store_set (array_store_updates, &iter,
 						    GPK_UPDATES_COLUMN_STATUS, GPK_INFO_ENUM_DOWNLOADED, -1);
 		}
 		g_free (package_id);
 	}
 
 	/* select the first entry in the updates array now we've got data */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "treeview_updates"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "treeview_updates"));
 	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(widget));
 	gtk_tree_selection_unselect_all (selection);
 	path = gtk_tree_path_new_first ();
@@ -2212,7 +2163,7 @@ gpk_update_viewer_get_details_cb (PkClient *client, GAsyncResult *res, GpkUpdate
 	gtk_tree_path_free (path);
 
 	/* set info */
-	gpk_update_viewer_reconsider_info (update_viewer);
+	gpk_update_viewer_reconsider_info ();
 out:
 	if (error_code != NULL)
 		g_object_unref (error_code);
@@ -2226,7 +2177,7 @@ out:
  * gpk_update_viewer_get_update_detail_cb:
  **/
 static void
-gpk_update_viewer_get_update_detail_cb (PkClient *client, GAsyncResult *res, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_get_update_detail_cb (PkClient *client, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	GError *error = NULL;
@@ -2241,13 +2192,12 @@ gpk_update_viewer_get_update_detail_cb (PkClient *client, GAsyncResult *res, Gpk
 	GtkWindow *window;
 	gchar *package_id;
 	PkRestartEnum restart;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* get the results */
 	results = pk_client_generic_finish (client, res, &error);
 	if (results == NULL) {
 		/* TRANSLATORS: the PackageKit request did not complete, and it did not send an error */
-		gpk_update_viewer_error_dialog (update_viewer, _("Could not get update details"), NULL, error->message);
+		gpk_update_viewer_error_dialog (_("Could not get update details"), NULL, error->message);
 		g_error_free (error);
 		goto out;
 	}
@@ -2257,7 +2207,7 @@ gpk_update_viewer_get_update_detail_cb (PkClient *client, GAsyncResult *res, Gpk
 	if (error_code != NULL) {
 		egg_warning ("failed to get update details: %s, %s", pk_error_enum_to_text (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 
-		window = GTK_WINDOW(gtk_builder_get_object (priv->builder, "dialog_updates"));
+		window = GTK_WINDOW(gtk_builder_get_object (builder, "dialog_updates"));
 		gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 					gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		goto out;
@@ -2267,12 +2217,12 @@ gpk_update_viewer_get_update_detail_cb (PkClient *client, GAsyncResult *res, Gpk
 	array = pk_results_get_update_detail_array (results);
 	if (array->len == 0) {
 		/* TRANSLATORS: PackageKit did not send any results for the query... */
-		gpk_update_viewer_error_dialog (update_viewer, _("Could not get update details"), _("No results were returned."), NULL);
+		gpk_update_viewer_error_dialog (_("Could not get update details"), _("No results were returned."), NULL);
 		goto out;
 	}
 
 	/* add data */
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	model = gtk_tree_view_get_model (treeview);
 	for (i=0; i<array->len; i++) {
 		item = g_ptr_array_index (array, i);
@@ -2289,7 +2239,7 @@ gpk_update_viewer_get_update_detail_cb (PkClient *client, GAsyncResult *res, Gpk
 		} else {
 			gtk_tree_model_get_iter (model, &iter, path);
 			gtk_tree_path_free (path);
-			gtk_tree_store_set (priv->array_store_updates, &iter,
+			gtk_tree_store_set (array_store_updates, &iter,
 					    GPK_UPDATES_COLUMN_UPDATE_DETAIL_OBJ, (gpointer) g_object_ref (item),
 					    GPK_UPDATES_COLUMN_RESTART, restart, -1);
 		}
@@ -2308,16 +2258,16 @@ out:
  * gpk_update_viewer_repo_array_changed_cb:
  **/
 static void
-gpk_update_viewer_repo_array_changed_cb (PkClient *client, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_repo_array_changed_cb (PkClient *client, gpointer user_data)
 {
-	gpk_update_viewer_get_new_update_array (update_viewer);
+	gpk_update_viewer_get_new_update_array ();
 }
 
 /**
  * gpk_update_viewer_detail_popup_menu_select_all:
  **/
 static void
-gpk_update_viewer_detail_popup_menu_select_all (GtkWidget *menuitem, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_detail_popup_menu_select_all (GtkWidget *menuitem, gpointer user_data)
 {
 	GtkTreeView *treeview;
 	gboolean valid;
@@ -2328,7 +2278,7 @@ gpk_update_viewer_detail_popup_menu_select_all (GtkWidget *menuitem, GpkUpdateVi
 	PkInfoEnum info;
 
 	/* get the first iter in the array */
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (update_viewer->priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	model = gtk_tree_view_get_model (treeview);
 	valid = gtk_tree_model_get_iter_first (model, &iter);
 	while (valid) {
@@ -2349,14 +2299,14 @@ gpk_update_viewer_detail_popup_menu_select_all (GtkWidget *menuitem, GpkUpdateVi
 	}
 
 	/* if there are no entries selected, deselect the button */
-	gpk_update_viewer_reconsider_info (update_viewer);
+	gpk_update_viewer_reconsider_info ();
 }
 
 /**
  * gpk_update_viewer_detail_popup_menu_select_security:
  **/
 static void
-gpk_update_viewer_detail_popup_menu_select_security (GtkWidget *menuitem, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_detail_popup_menu_select_security (GtkWidget *menuitem, gpointer user_data)
 {
 	GtkTreeView *treeview;
 	gboolean valid;
@@ -2368,7 +2318,7 @@ gpk_update_viewer_detail_popup_menu_select_security (GtkWidget *menuitem, GpkUpd
 	PkInfoEnum info;
 
 	/* get the first iter in the array */
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (update_viewer->priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	model = gtk_tree_view_get_model (treeview);
 	valid = gtk_tree_model_get_iter_first (model, &iter);
 	while (valid) {
@@ -2391,14 +2341,14 @@ gpk_update_viewer_detail_popup_menu_select_security (GtkWidget *menuitem, GpkUpd
 	}
 
 	/* if there are no entries selected, deselect the button */
-	gpk_update_viewer_reconsider_info (update_viewer);
+	gpk_update_viewer_reconsider_info ();
 }
 
 /**
  * gpk_update_viewer_detail_popup_menu_select_none:
  **/
 static void
-gpk_update_viewer_detail_popup_menu_select_none (GtkWidget *menuitem, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_detail_popup_menu_select_none (GtkWidget *menuitem, gpointer user_data)
 {
 	GtkTreeView *treeview;
 	gboolean valid;
@@ -2408,7 +2358,7 @@ gpk_update_viewer_detail_popup_menu_select_none (GtkWidget *menuitem, GpkUpdateV
 	GtkTreeModel *model;
 
 	/* get the first iter in the array */
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (update_viewer->priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	model = gtk_tree_view_get_model (treeview);
 	valid = gtk_tree_model_get_iter_first (model, &iter);
 	while (valid) {
@@ -2428,14 +2378,14 @@ gpk_update_viewer_detail_popup_menu_select_none (GtkWidget *menuitem, GpkUpdateV
 	}
 
 	/* if there are no entries selected, deselect the button */
-	gpk_update_viewer_reconsider_info (update_viewer);
+	gpk_update_viewer_reconsider_info ();
 }
 
 /**
  * gpk_update_viewer_get_checked_status:
  **/
 static gboolean
-gpk_update_viewer_get_checked_status (GpkUpdateViewer *update_viewer, gboolean *all_checked, gboolean *none_checked)
+gpk_update_viewer_get_checked_status (gboolean *all_checked, gboolean *none_checked)
 {
 	GtkTreeView *treeview;
 	gboolean valid;
@@ -2447,7 +2397,7 @@ gpk_update_viewer_get_checked_status (GpkUpdateViewer *update_viewer, gboolean *
 	GtkTreeIter child_iter;
 
 	/* get the first iter in the array */
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (update_viewer->priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	model = gtk_tree_view_get_model (treeview);
 	valid = gtk_tree_model_get_iter_first (model, &iter);
 	*all_checked = TRUE;
@@ -2483,7 +2433,7 @@ gpk_update_viewer_get_checked_status (GpkUpdateViewer *update_viewer, gboolean *
  * gpk_update_viewer_detail_popup_menu_create:
  **/
 static void
-gpk_update_viewer_detail_popup_menu_create (GtkWidget *treeview, GdkEventButton *event, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_detail_popup_menu_create (GtkWidget *treeview, GdkEventButton *event, gpointer user_data)
 {
 	GtkWidget *menu;
 	GtkWidget *menuitem;
@@ -2494,7 +2444,7 @@ gpk_update_viewer_detail_popup_menu_create (GtkWidget *treeview, GdkEventButton
 	menu = gtk_menu_new();
 
 	/* we don't want to show 'Select all' if they are all checked */
-	ret = gpk_update_viewer_get_checked_status (update_viewer, &all_checked, &none_checked);
+	ret = gpk_update_viewer_get_checked_status (&all_checked, &none_checked);
 	if (!ret) {
 		egg_debug ("ignoring as we are locked down");
 		return;
@@ -2504,7 +2454,7 @@ gpk_update_viewer_detail_popup_menu_create (GtkWidget *treeview, GdkEventButton
 		/* TRANSLATORS: right click menu, select all the updates */
 		menuitem = gtk_menu_item_new_with_label (_("Select all"));
 		g_signal_connect (menuitem, "activate",
-				  G_CALLBACK (gpk_update_viewer_detail_popup_menu_select_all), update_viewer);
+				  G_CALLBACK (gpk_update_viewer_detail_popup_menu_select_all), NULL);
 		gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
 	}
 
@@ -2512,21 +2462,21 @@ gpk_update_viewer_detail_popup_menu_create (GtkWidget *treeview, GdkEventButton
 		/* TRANSLATORS: right click menu, unselect all the updates */
 		menuitem = gtk_menu_item_new_with_label (_("Unselect all"));
 		g_signal_connect (menuitem, "activate",
-				  G_CALLBACK (gpk_update_viewer_detail_popup_menu_select_none), update_viewer);
+				  G_CALLBACK (gpk_update_viewer_detail_popup_menu_select_none), NULL);
 		gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
 	}
 
 	/* TRANSLATORS: right click menu, select only security updates */
 	menuitem = gtk_menu_item_new_with_label (_("Select security updates"));
 	g_signal_connect (menuitem, "activate",
-			  G_CALLBACK (gpk_update_viewer_detail_popup_menu_select_security), update_viewer);
+			  G_CALLBACK (gpk_update_viewer_detail_popup_menu_select_security), NULL);
 	gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
 
 	/* TRANSLATORS: right click option, ignore this update name, not currently used */
 	menuitem = gtk_menu_item_new_with_label (_("Ignore this update"));
 	gtk_widget_set_sensitive (GTK_WIDGET(menuitem), FALSE);
 	g_signal_connect (menuitem, "activate",
-			  G_CALLBACK (gpk_update_viewer_detail_popup_menu_select_all), update_viewer);
+			  G_CALLBACK (gpk_update_viewer_detail_popup_menu_select_all), NULL);
 	gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
 
 	gtk_widget_show_all (menu);
@@ -2539,7 +2489,7 @@ gpk_update_viewer_detail_popup_menu_create (GtkWidget *treeview, GdkEventButton
  * gpk_update_viewer_detail_button_pressed:
  **/
 static gboolean
-gpk_update_viewer_detail_button_pressed (GtkWidget *treeview, GdkEventButton *event, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_detail_button_pressed (GtkWidget *treeview, GdkEventButton *event, gpointer user_data)
 {
 	GtkTreeSelection *selection;
 	GtkTreePath *path;
@@ -2566,7 +2516,7 @@ gpk_update_viewer_detail_button_pressed (GtkWidget *treeview, GdkEventButton *ev
 	}
 
 	/* create */
-	gpk_update_viewer_detail_popup_menu_create (treeview, event, update_viewer);
+	gpk_update_viewer_detail_popup_menu_create (treeview, event, NULL);
 	return TRUE;
 }
 
@@ -2574,9 +2524,9 @@ gpk_update_viewer_detail_button_pressed (GtkWidget *treeview, GdkEventButton *ev
  * gpk_update_viewer_detail_popup_menu:
  **/
 static gboolean
-gpk_update_viewer_detail_popup_menu (GtkWidget *treeview, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_detail_popup_menu (GtkWidget *treeview, gpointer user_data)
 {
-	gpk_update_viewer_detail_popup_menu_create (treeview, NULL, update_viewer);
+	gpk_update_viewer_detail_popup_menu_create (treeview, NULL, NULL);
 	return TRUE;
 }
 
@@ -2604,7 +2554,7 @@ gpk_update_viewer_packages_to_ids (GPtrArray *array)
  * gpk_update_viewer_get_updates_cb:
  **/
 static void
-gpk_update_viewer_get_updates_cb (PkClient *client, GAsyncResult *res, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_get_updates_cb (PkClient *client, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	PkPackageSack *sack = NULL;
@@ -2629,13 +2579,12 @@ gpk_update_viewer_get_updates_cb (PkClient *client, GAsyncResult *res, GpkUpdate
 	gchar *package_id = NULL;
 	gchar *summary = NULL;
 	gboolean ret;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* get the results */
 	results = pk_client_generic_finish (client, res, &error);
 	if (results == NULL) {
 		/* TRANSLATORS: the PackageKit request did not complete, and it did not send an error */
-		gpk_update_viewer_error_dialog (update_viewer, _("Could not get updates"), NULL, error->message);
+		gpk_update_viewer_error_dialog (_("Could not get updates"), NULL, error->message);
 		g_error_free (error);
 		goto out;
 	}
@@ -2645,14 +2594,14 @@ gpk_update_viewer_get_updates_cb (PkClient *client, GAsyncResult *res, GpkUpdate
 	if (error_code != NULL) {
 		egg_warning ("failed to get updates: %s, %s", pk_error_enum_to_text (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 
-		window = GTK_WINDOW(gtk_builder_get_object (priv->builder, "dialog_updates"));
+		window = GTK_WINDOW(gtk_builder_get_object (builder, "dialog_updates"));
 		gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 					gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		goto out;
 	}
 
 	/* do we have any important messages we need to show? */
-	priv->other_updates_held_back = FALSE;
+	other_updates_held_back = FALSE;
 	array_messages = pk_results_get_message_array (results);
 	for (i=0; i<array_messages->len; i++) {
 		message = g_ptr_array_index (array_messages, i);
@@ -2660,8 +2609,8 @@ gpk_update_viewer_get_updates_cb (PkClient *client, GAsyncResult *res, GpkUpdate
 			      "type", &message_type,
 			      NULL);
 		if (message_type == PK_MESSAGE_ENUM_OTHER_UPDATES_HELD_BACK) {
-			priv->other_updates_held_back = TRUE;
-			gtk_widget_show (priv->info_updates);
+			other_updates_held_back = TRUE;
+			gtk_widget_show (info_updates);
 			break;
 		}
 	}
@@ -2681,7 +2630,7 @@ gpk_update_viewer_get_updates_cb (PkClient *client, GAsyncResult *res, GpkUpdate
 			      NULL);
 
 		/* find our parent */
-		ret = gpk_update_viewer_find_parent (update_viewer, package_id, &parent);
+		ret = gpk_update_viewer_find_parent (package_id, &parent);
 
 		/* add to array store */
 		text = gpk_package_id_format_twoline (package_id, summary);
@@ -2690,10 +2639,10 @@ gpk_update_viewer_get_updates_cb (PkClient *client, GAsyncResult *res, GpkUpdate
 
 		/* do we add to a parent? */
 		if (ret)
-			gtk_tree_store_append (priv->array_store_updates, &iter, &parent);
+			gtk_tree_store_append (array_store_updates, &iter, &parent);
 		else
-			gtk_tree_store_append (priv->array_store_updates, &iter, NULL);
-		gtk_tree_store_set (priv->array_store_updates, &iter,
+			gtk_tree_store_append (array_store_updates, &iter, NULL);
+		gtk_tree_store_set (array_store_updates, &iter,
 				    GPK_UPDATES_COLUMN_TEXT, text,
 				    GPK_UPDATES_COLUMN_ID, package_id,
 				    GPK_UPDATES_COLUMN_INFO, info,
@@ -2713,38 +2662,38 @@ gpk_update_viewer_get_updates_cb (PkClient *client, GAsyncResult *res, GpkUpdate
 	}
 
 	/* get the download sizes */
-	if (priv->update_array != NULL)
-		g_ptr_array_unref (priv->update_array);
-	priv->update_array = pk_results_get_package_array (results);
+	if (update_array != NULL)
+		g_ptr_array_unref (update_array);
+	update_array = pk_results_get_package_array (results);
 
 	/* sort by name */
-	treeview = GTK_TREE_VIEW(gtk_builder_get_object (priv->builder, "treeview_updates"));
+	treeview = GTK_TREE_VIEW(gtk_builder_get_object (builder, "treeview_updates"));
 	model = gtk_tree_view_get_model (treeview);
 	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model), GPK_UPDATES_COLUMN_ID, GTK_SORT_ASCENDING);
 
 	/* get the download sizes */
-	if (priv->update_array->len > 0) {
+	if (update_array->len > 0) {
 		package_ids = gpk_update_viewer_packages_to_ids (array);
 
 		/* get the details of all the packages */
-		pk_client_get_update_detail_async (PK_CLIENT(priv->task), package_ids, priv->cancellable,
-						   (PkProgressCallback) gpk_update_viewer_progress_cb, update_viewer,
-						   (GAsyncReadyCallback) gpk_update_viewer_get_update_detail_cb, update_viewer);
+		pk_client_get_update_detail_async (PK_CLIENT(task), package_ids, cancellable,
+						   (PkProgressCallback) gpk_update_viewer_progress_cb, NULL,
+						   (GAsyncReadyCallback) gpk_update_viewer_get_update_detail_cb, NULL);
 
 		/* get the details of all the packages */
-		pk_client_get_details_async (PK_CLIENT(priv->task), package_ids, priv->cancellable,
-					     (PkProgressCallback) gpk_update_viewer_progress_cb, update_viewer,
-					     (GAsyncReadyCallback) gpk_update_viewer_get_details_cb, update_viewer);
+		pk_client_get_details_async (PK_CLIENT(task), package_ids, cancellable,
+					     (PkProgressCallback) gpk_update_viewer_progress_cb, NULL,
+					     (GAsyncReadyCallback) gpk_update_viewer_get_details_cb, NULL);
 
 		g_strfreev (package_ids);
 	}
 
 	/* are now able to do action */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_install"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_install"));
 	gtk_widget_set_sensitive (widget, TRUE);
 
 	/* set info */
-	gpk_update_viewer_reconsider_info (update_viewer);
+	gpk_update_viewer_reconsider_info ();
 
 out:
 	if (error_code != NULL)
@@ -2763,34 +2712,33 @@ out:
  * gpk_update_viewer_get_new_update_array
  **/
 static gboolean
-gpk_update_viewer_get_new_update_array (GpkUpdateViewer *update_viewer)
+gpk_update_viewer_get_new_update_array (void)
 {
 	gboolean ret;
 	GtkWidget *widget;
 	gchar *text = NULL;
 	PkBitfield filter = PK_FILTER_ENUM_NONE;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* clear all widgets */
-	gtk_tree_store_clear (priv->array_store_updates);
-	gtk_text_buffer_set_text (priv->text_buffer, "", -1);
+	gtk_tree_store_clear (array_store_updates);
+	gtk_text_buffer_set_text (text_buffer, "", -1);
 
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "label_header_title"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "label_header_title"));
 	/* TRANSLATORS: this is the header */
 	text = g_strdup_printf ("<big><b>%s</b></big>", _("Checking for updates..."));
 	gtk_label_set_label (GTK_LABEL(widget), text);
 
 	/* only show newest updates? */
-	ret = g_settings_get_boolean (priv->settings, GPK_SETTINGS_ONLY_NEWEST);
+	ret = g_settings_get_boolean (settings, GPK_SETTINGS_ONLY_NEWEST);
 	if (ret) {
 		egg_debug ("only showing newest updates");
 		filter = pk_bitfield_from_enums (PK_FILTER_ENUM_NEWEST, -1);
 	}
 
 	/* get new array */
-	pk_client_get_updates_async (PK_CLIENT(priv->task), filter, priv->cancellable,
-				     (PkProgressCallback) gpk_update_viewer_progress_cb, update_viewer,
-				     (GAsyncReadyCallback) gpk_update_viewer_get_updates_cb, update_viewer);
+	pk_client_get_updates_async (PK_CLIENT(task), filter, cancellable,
+				     (PkProgressCallback) gpk_update_viewer_progress_cb, NULL,
+				     (GAsyncReadyCallback) gpk_update_viewer_get_updates_cb, NULL);
 	g_free (text);
 	return ret;
 }
@@ -2963,22 +2911,22 @@ gpk_update_viewer_textview_visibility_notify_event (GtkWidget *text_view, GdkEve
  * gpk_update_viewer_updates_changed_cb:
  **/
 static void
-gpk_update_viewer_updates_changed_cb (PkControl *control, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_updates_changed_cb (PkControl *_control, gpointer user_data)
 {
 	/* now try to get newest update array */
 	egg_debug ("updates changed");
-	if (update_viewer->priv->ignore_updates_changed) {
+	if (ignore_updates_changed) {
 		egg_debug ("ignoring");
 		return;
 	}
-	gpk_update_viewer_get_new_update_array (update_viewer);
+	gpk_update_viewer_get_new_update_array ();
 }
 
 /**
  * gpk_update_viewer_vpaned_realized_cb:
  **/
 static void
-gpk_update_viewer_vpaned_realized_cb (GtkWidget *widget, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_vpaned_realized_cb (GtkWidget *widget, gpointer user_data)
 {
 	GtkRequisition req;
 	gtk_widget_get_preferred_size (widget, &req, NULL);
@@ -3046,7 +2994,7 @@ out:
  * gpk_update_viewer_get_distro_upgrades_cb:
  **/
 static void
-gpk_update_viewer_get_distro_upgrades_cb (PkClient *client, GAsyncResult *res, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_get_distro_upgrades_cb (PkClient *client, GAsyncResult *res, gpointer user_data)
 {
 	PkResults *results;
 	GError *error = NULL;
@@ -3058,13 +3006,12 @@ gpk_update_viewer_get_distro_upgrades_cb (PkClient *client, GAsyncResult *res, G
 	GtkWidget *widget;
 	PkError *error_code = NULL;
 	GtkWindow *window;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* get the results */
 	results = pk_client_generic_finish (client, res, &error);
 	if (results == NULL) {
 		/* TRANSLATORS: the PackageKit request did not complete, and it did not send an error */
-		gpk_update_viewer_error_dialog (update_viewer, _("Could not get list of distribution upgrades"), NULL, error->message);
+		gpk_update_viewer_error_dialog (_("Could not get list of distribution upgrades"), NULL, error->message);
 		g_error_free (error);
 		goto out;
 	}
@@ -3074,7 +3021,7 @@ gpk_update_viewer_get_distro_upgrades_cb (PkClient *client, GAsyncResult *res, G
 	if (error_code != NULL) {
 		egg_warning ("failed to get list of distro upgrades: %s, %s", pk_error_enum_to_text (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 
-		window = GTK_WINDOW(gtk_builder_get_object (priv->builder, "dialog_updates"));
+		window = GTK_WINDOW(gtk_builder_get_object (builder, "dialog_updates"));
 		gpk_error_dialog_modal (window, gpk_error_enum_to_localised_text (pk_error_get_code (error_code)),
 					gpk_error_enum_to_localised_message (pk_error_get_code (error_code)), pk_error_get_details (error_code));
 		goto out;
@@ -3093,17 +3040,17 @@ gpk_update_viewer_get_distro_upgrades_cb (PkClient *client, GAsyncResult *res, G
 		      NULL);
 
 	/* only display last (newest) distro */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "label_upgrade"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "label_upgrade"));
 	/* TRANSLATORS: new distro available, e.g. F9 to F10 */
 	text = g_strdup_printf (_("New distribution upgrade release '%s' is available"), summary);
 	text_format = g_strdup_printf ("<b>%s</b>", text);
 	gtk_label_set_label (GTK_LABEL(widget), text_format);
 
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "viewport_upgrade"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "viewport_upgrade"));
 	gtk_widget_show (widget);
 
 	/* get model */
-	gpk_update_viewer_reconsider_info (update_viewer);
+	gpk_update_viewer_reconsider_info ();
 out:
 	g_free (summary);
 	g_free (text);
@@ -3120,12 +3067,11 @@ out:
  * gpk_update_viewer_get_properties_cb:
  **/
 static void
-gpk_update_viewer_get_properties_cb (PkControl *control, GAsyncResult *res, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_get_properties_cb (PkControl *_control, GAsyncResult *res, gpointer user_data)
 {
 	GError *error = NULL;
 	gboolean ret;
 	PkBitfield roles;
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
 
 	/* get the result */
 	ret = pk_control_get_properties_finish (control, res, &error);
@@ -3133,7 +3079,7 @@ gpk_update_viewer_get_properties_cb (PkControl *control, GAsyncResult *res, GpkU
 		/* TRANSLATORS: backend is broken, and won't tell us what it supports */
 		g_print ("%s: %s\n", _("Exiting as backend details could not be retrieved"), error->message);
 		g_error_free (error);
-		gpk_update_viewer_quit (update_viewer);
+		gpk_update_viewer_quit ();
 		goto out;
 	}
 
@@ -3144,9 +3090,9 @@ gpk_update_viewer_get_properties_cb (PkControl *control, GAsyncResult *res, GpkU
 
 	/* get the distro-upgrades if we support it */
 	if (pk_bitfield_contain (roles, PK_ROLE_ENUM_GET_DISTRO_UPGRADES)) {
-		pk_client_get_distro_upgrades_async (PK_CLIENT(priv->task), priv->cancellable,
-						     (PkProgressCallback) gpk_update_viewer_progress_cb, update_viewer,
-						     (GAsyncReadyCallback) gpk_update_viewer_get_distro_upgrades_cb, update_viewer);
+		pk_client_get_distro_upgrades_async (PK_CLIENT(task), cancellable,
+						     (PkProgressCallback) gpk_update_viewer_progress_cb, NULL,
+						     (GAsyncReadyCallback) gpk_update_viewer_get_distro_upgrades_cb, NULL);
 	}
 out:
 	return;
@@ -3156,17 +3102,28 @@ out:
  * gpk_update_viewer_notify_network_state_cb:
  **/
 static void
-gpk_update_viewer_notify_network_state_cb (PkControl *control, GParamSpec *pspec, GpkUpdateViewer *update_viewer)
+gpk_update_viewer_notify_network_state_cb (PkControl *_control, GParamSpec *pspec, gpointer user_data)
+{
+	gpk_update_viewer_check_mobile_broadband ();
+	gpk_update_viewer_get_new_update_array ();
+}
+
+/**
+ * gpk_update_viewer_activate_cb:
+ **/
+static void
+gpk_update_viewer_activate_cb (GtkApplication *_application, gpointer user_data)
 {
-	gpk_update_viewer_check_mobile_broadband (update_viewer);
-	gpk_update_viewer_get_new_update_array (update_viewer);
+	GtkWindow *window;
+	window = GTK_WINDOW(gtk_builder_get_object (builder, "dialog_updates"));
+	gtk_window_present (window);
 }
 
 /**
- * gpk_update_viewer_init:
+ * gpk_update_viewer_application_startup_cb:
  **/
 static void
-gpk_update_viewer_init (GpkUpdateViewer *update_viewer)
+gpk_update_viewer_application_startup_cb (GtkApplication *_application, gpointer user_data)
 {
 	GtkWidget *main_window;
 	GtkWidget *widget;
@@ -3175,252 +3132,277 @@ gpk_update_viewer_init (GpkUpdateViewer *update_viewer)
 	gboolean ret;
 	guint retval;
 	GError *error = NULL;
-	GpkUpdateViewerPrivate *priv;
-
-	update_viewer->priv = GPK_UPDATE_VIEWER_GET_PRIVATE(update_viewer);
-	priv = update_viewer->priv;
-
-	priv->auto_shutdown_id = 0;
-	priv->size_total = 0;
-	priv->ignore_updates_changed = FALSE;
-	priv->restart_update = PK_RESTART_ENUM_NONE;
-
-	priv->settings = g_settings_new (GPK_SETTINGS_SCHEMA);
-	priv->console = egg_console_kit_new ();
-	priv->cancellable = g_cancellable_new ();
-	priv->markdown = egg_markdown_new ();
-	egg_markdown_set_output (priv->markdown, EGG_MARKDOWN_OUTPUT_PANGO);
-	egg_markdown_set_escape (priv->markdown, TRUE);
-	egg_markdown_set_autocode (priv->markdown, TRUE);
-
-	priv->control = pk_control_new ();
-	g_signal_connect (priv->control, "repo-list-changed",
-			  G_CALLBACK (gpk_update_viewer_repo_array_changed_cb), update_viewer);
-	g_signal_connect (priv->control, "updates-changed",
-			  G_CALLBACK (gpk_update_viewer_updates_changed_cb), update_viewer);
-	g_signal_connect (priv->control, "notify::network-state",
-			  G_CALLBACK (gpk_update_viewer_notify_network_state_cb), update_viewer);
+
+	auto_shutdown_id = 0;
+	size_total = 0;
+	ignore_updates_changed = FALSE;
+	restart_update = PK_RESTART_ENUM_NONE;
+
+	settings = g_settings_new (GPK_SETTINGS_SCHEMA);
+	console = egg_console_kit_new ();
+	cancellable = g_cancellable_new ();
+	markdown = egg_markdown_new ();
+	egg_markdown_set_output (markdown, EGG_MARKDOWN_OUTPUT_PANGO);
+	egg_markdown_set_escape (markdown, TRUE);
+	egg_markdown_set_autocode (markdown, TRUE);
+
+	control = pk_control_new ();
+	g_signal_connect (control, "repo-list-changed",
+			  G_CALLBACK (gpk_update_viewer_repo_array_changed_cb), NULL);
+	g_signal_connect (control, "updates-changed",
+			  G_CALLBACK (gpk_update_viewer_updates_changed_cb), NULL);
+	g_signal_connect (control, "notify::network-state",
+			  G_CALLBACK (gpk_update_viewer_notify_network_state_cb), NULL);
 
 	/* this is what we use mainly */
-	priv->task = PK_TASK(gpk_task_new ());
-	g_signal_connect (priv->task, "notify::idle",
-			  G_CALLBACK (gpk_update_viewer_client_notify_idle_cb), update_viewer);
-	g_object_set (priv->task,
+	task = PK_TASK(gpk_task_new ());
+	g_signal_connect (task, "notify::idle",
+			  G_CALLBACK (gpk_update_viewer_client_notify_idle_cb), NULL);
+	g_object_set (task,
 		      "background", FALSE,
 		      NULL);
 
 	/* get properties */
-	pk_control_get_properties_async (priv->control, NULL, (GAsyncReadyCallback) gpk_update_viewer_get_properties_cb, update_viewer);
+	pk_control_get_properties_async (control, NULL, (GAsyncReadyCallback) gpk_update_viewer_get_properties_cb, NULL);
 
 	/* get UI */
-	priv->builder = gtk_builder_new ();
-	retval = gtk_builder_add_from_file (priv->builder, GPK_DATA "/gpk-update-viewer.ui", &error);
+	builder = gtk_builder_new ();
+	retval = gtk_builder_add_from_file (builder, GPK_DATA "/gpk-update-viewer.ui", &error);
 	if (retval == 0) {
 		egg_warning ("failed to load ui: %s", error->message);
 		g_error_free (error);
 		goto out;
 	}
 
-	main_window = GTK_WIDGET(gtk_builder_get_object (priv->builder, "dialog_updates"));
-	g_signal_connect (main_window, "delete_event", G_CALLBACK (gpk_update_viewer_button_delete_event_cb), update_viewer);
+	main_window = GTK_WIDGET(gtk_builder_get_object (builder, "dialog_updates"));
+	g_signal_connect (main_window, "delete_event", G_CALLBACK (gpk_update_viewer_button_delete_event_cb), NULL);
 	gtk_window_set_icon_name (GTK_WINDOW(main_window), GPK_ICON_SOFTWARE_INSTALLER);
+	gtk_application_add_window (application, GTK_WINDOW(main_window));
 
 	/* create array stores */
-	priv->array_store_updates = gtk_tree_store_new (GPK_UPDATES_COLUMN_LAST, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT,
+	array_store_updates = gtk_tree_store_new (GPK_UPDATES_COLUMN_LAST, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT,
 						 G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
 						 G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT, G_TYPE_UINT,
 						 G_TYPE_UINT, G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_INT);
-	priv->text_buffer = gtk_text_buffer_new (NULL);
-	gtk_text_buffer_create_tag (priv->text_buffer, "para",
+	text_buffer = gtk_text_buffer_new (NULL);
+	gtk_text_buffer_create_tag (text_buffer, "para",
 				    "pixels_above_lines", 5,
 				    "wrap-mode", GTK_WRAP_WORD,
 				    NULL);
-	gtk_text_buffer_create_tag (priv->text_buffer, "important",
+	gtk_text_buffer_create_tag (text_buffer, "important",
 				    "weight", PANGO_WEIGHT_BOLD,
 				    NULL);
 
 	/* no upgrades yet */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "viewport_upgrade"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "viewport_upgrade"));
 	gtk_widget_hide (widget);
 
 	/* description */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "textview_details"));
-	gtk_text_view_set_buffer (GTK_TEXT_VIEW (widget), priv->text_buffer);
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "textview_details"));
+	gtk_text_view_set_buffer (GTK_TEXT_VIEW (widget), text_buffer);
 	gtk_text_view_set_editable (GTK_TEXT_VIEW (widget), FALSE);
 	gtk_text_view_set_left_margin (GTK_TEXT_VIEW (widget), 5);
-	g_signal_connect (GTK_TEXT_VIEW (widget), "key-press-event", G_CALLBACK (gpk_update_viewer_textview_key_press_event), update_viewer);
-	g_signal_connect (GTK_TEXT_VIEW (widget), "event-after", G_CALLBACK (gpk_update_viewer_textview_event_after), update_viewer);
-	g_signal_connect (GTK_TEXT_VIEW (widget), "motion-notify-event", G_CALLBACK (gpk_update_viewer_textview_motion_notify_event), update_viewer);
-	g_signal_connect (GTK_TEXT_VIEW (widget), "visibility-notify-event", G_CALLBACK (gpk_update_viewer_textview_visibility_notify_event), update_viewer);
+	g_signal_connect (GTK_TEXT_VIEW (widget), "key-press-event", G_CALLBACK (gpk_update_viewer_textview_key_press_event), NULL);
+	g_signal_connect (GTK_TEXT_VIEW (widget), "event-after", G_CALLBACK (gpk_update_viewer_textview_event_after), NULL);
+	g_signal_connect (GTK_TEXT_VIEW (widget), "motion-notify-event", G_CALLBACK (gpk_update_viewer_textview_motion_notify_event), NULL);
+	g_signal_connect (GTK_TEXT_VIEW (widget), "visibility-notify-event", G_CALLBACK (gpk_update_viewer_textview_visibility_notify_event), NULL);
 
 	/* updates */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "treeview_updates"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "treeview_updates"));
 	gtk_tree_view_set_search_column (GTK_TREE_VIEW(widget), GPK_UPDATES_COLUMN_TEXT);
 	gtk_tree_view_set_search_equal_func (GTK_TREE_VIEW(widget), gpk_update_viewer_search_equal_func, NULL, NULL);
 	gtk_tree_view_columns_autosize (GTK_TREE_VIEW(widget));
 	gtk_tree_view_set_level_indentation (GTK_TREE_VIEW(widget), 0);
 	gtk_tree_view_set_model (GTK_TREE_VIEW(widget),
-				 GTK_TREE_MODEL (priv->array_store_updates));
-	gpk_update_viewer_treeview_add_columns_update (update_viewer, GTK_TREE_VIEW(widget));
+				 GTK_TREE_MODEL (array_store_updates));
+	gpk_update_viewer_treeview_add_columns_update (GTK_TREE_VIEW(widget));
 	g_signal_connect (widget, "popup-menu",
-			  G_CALLBACK (gpk_update_viewer_detail_popup_menu), update_viewer);
+			  G_CALLBACK (gpk_update_viewer_detail_popup_menu), NULL);
 	g_signal_connect (widget, "button-press-event",
-			  G_CALLBACK (gpk_update_viewer_detail_button_pressed), update_viewer);
+			  G_CALLBACK (gpk_update_viewer_detail_button_pressed), NULL);
 
 	/* selection */
 	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(widget));
 	gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
 	g_signal_connect (selection, "changed",
-			  G_CALLBACK (gpk_packages_treeview_clicked_cb), update_viewer);
+			  G_CALLBACK (gpk_packages_treeview_clicked_cb), NULL);
 
 	/* bottom UI */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "progressbar_progress"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "progressbar_progress"));
 	gtk_widget_hide (widget);
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "label_summary"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "label_summary"));
 	gtk_widget_hide (widget);
 
 	/* help button */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_help"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_help"));
 	g_signal_connect (widget, "clicked",
 			  G_CALLBACK (gpk_update_viewer_button_help_cb), (gpointer) "update-viewer");
 
 	/* set install button insensitive */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_install"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_install"));
 	gtk_widget_set_sensitive (widget, FALSE);
 	g_signal_connect (widget, "clicked",
-			  G_CALLBACK (gpk_update_viewer_button_install_cb), update_viewer);
+			  G_CALLBACK (gpk_update_viewer_button_install_cb), NULL);
 
 	/* sensitive */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "scrolledwindow_updates"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "scrolledwindow_updates"));
 	gtk_widget_set_sensitive (widget, FALSE);
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "scrolledwindow_details"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "scrolledwindow_details"));
 	gtk_widget_set_sensitive (widget, FALSE);
 
 	/* close button */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_quit"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_quit"));
 	g_signal_connect (widget, "clicked",
-			  G_CALLBACK (gpk_update_viewer_button_quit_cb), update_viewer);
+			  G_CALLBACK (gpk_update_viewer_button_quit_cb), NULL);
 	gtk_window_set_focus (GTK_WINDOW(main_window), widget);
 
 	/* upgrade button */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "button_upgrade"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "button_upgrade"));
 	g_signal_connect (widget, "clicked",
-			  G_CALLBACK (gpk_update_viewer_button_upgrade_cb), update_viewer);
+			  G_CALLBACK (gpk_update_viewer_button_upgrade_cb), NULL);
 
 	/* set a size, if the screen allows */
 	ret = gpk_window_set_size_request (GTK_WINDOW(main_window), 700, 600);
 	if (!ret) {
 		egg_debug ("small form factor mode");
 		/* hide the header in SFF mode */
-		widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "hbox_header"));
+		widget = GTK_WIDGET(gtk_builder_get_object (builder, "hbox_header"));
 		gtk_widget_hide (widget);
 	}
 
 	/* use correct status pane */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "label_status"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "label_status"));
 	gtk_widget_set_size_request (widget, -1, 32);
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "label_info"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "label_info"));
 	gtk_widget_set_size_request (widget, -1, 32);
 
 	/* add info bars: TODO, fix glade to put these in the ui file */
-	priv->info_mobile = gtk_info_bar_new ();
-	gtk_widget_set_no_show_all (priv->info_mobile, TRUE);
-	priv->info_updates = gtk_info_bar_new ();
-	gtk_widget_set_no_show_all (priv->info_updates, TRUE);
+	info_mobile = gtk_info_bar_new ();
+	gtk_widget_set_no_show_all (info_mobile, TRUE);
+	info_updates = gtk_info_bar_new ();
+	gtk_widget_set_no_show_all (info_updates, TRUE);
 
 	/* pack label into infobar */
-	priv->info_mobile_label = gtk_label_new ("");
-	widget = gtk_info_bar_get_content_area (GTK_INFO_BAR(priv->info_mobile));
-	gtk_container_add (GTK_CONTAINER(widget), priv->info_mobile_label);
-	gtk_widget_show (priv->info_mobile_label);
+	info_mobile_label = gtk_label_new ("");
+	widget = gtk_info_bar_get_content_area (GTK_INFO_BAR(info_mobile));
+	gtk_container_add (GTK_CONTAINER(widget), info_mobile_label);
+	gtk_widget_show (info_mobile_label);
 
 	/* TRANSLATORS: this is when some updates are not being shown as other packages need updating first */
 	label = gtk_label_new (_("Other updates are held back as some important system packages need to be installed first."));
-	widget = gtk_info_bar_get_content_area (GTK_INFO_BAR(priv->info_updates));
+	widget = gtk_info_bar_get_content_area (GTK_INFO_BAR(info_updates));
 	gtk_container_add (GTK_CONTAINER(widget), label);
 	gtk_widget_show (label);
 
 	/* pack infobars into main UI */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "vbox1"));
-	gtk_box_pack_start (GTK_BOX(widget), priv->info_mobile, FALSE, FALSE, 3);
-	gtk_box_reorder_child (GTK_BOX(widget), priv->info_mobile, 1);
-	gtk_box_pack_start (GTK_BOX(widget), priv->info_updates, FALSE, FALSE, 3);
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "vbox1"));
+	gtk_box_pack_start (GTK_BOX(widget), info_mobile, FALSE, FALSE, 3);
+	gtk_box_reorder_child (GTK_BOX(widget), info_mobile, 1);
+	gtk_box_pack_start (GTK_BOX(widget), info_updates, FALSE, FALSE, 3);
 
 	/* show window */
 	gtk_widget_show (main_window);
 
 	/* set the paned to be in the middle */
-	widget = GTK_WIDGET(gtk_builder_get_object (priv->builder, "vpaned_updates"));
+	widget = GTK_WIDGET(gtk_builder_get_object (builder, "vpaned_updates"));
 	g_signal_connect (widget, "realize",
-			  G_CALLBACK (gpk_update_viewer_vpaned_realized_cb), update_viewer);
+			  G_CALLBACK (gpk_update_viewer_vpaned_realized_cb), NULL);
 out:
 	return;
 }
 
 /**
- * gpk_update_viewer_finalize:
- * @object: This graph class instance
+ * main:
  **/
-static void
-gpk_update_viewer_finalize (GObject *object)
+int
+main (int argc, char *argv[])
 {
-	GpkUpdateViewer *update_viewer = GPK_UPDATE_VIEWER (object);
-	GpkUpdateViewerPrivate *priv = update_viewer->priv;
-
-	/* we might have visual stuff running, close it down */
-	g_cancellable_cancel (priv->cancellable);
-
-	/* remove auto-shutdown */
-	if (priv->auto_shutdown_id != 0)
-		g_source_remove (priv->auto_shutdown_id);
-
-	if (priv->update_array != NULL)
-		g_ptr_array_unref (priv->update_array);
-	g_free (priv->package_id_last);
-	g_object_unref (priv->array_store_updates);
-	g_object_unref (priv->builder);
-	g_object_unref (priv->cancellable);
-	g_object_unref (priv->console);
-	g_object_unref (priv->control);
-	g_object_unref (priv->settings);
-	g_object_unref (priv->markdown);
-	g_object_unref (priv->task);
-	g_object_unref (priv->text_buffer);
+	gboolean program_version = FALSE;
+	GOptionContext *context;
+	gboolean ret;
+	gint status = 0;
+
+	const GOptionEntry options[] = {
+		{ "version", '\0', 0, G_OPTION_ARG_NONE, &program_version,
+		  /* TRANSLATORS: show the program version */
+		  _("Show the program version and exit"), NULL },
+		{ NULL}
+	};
+
+	setlocale (LC_ALL, "");
+
+	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+	textdomain (GETTEXT_PACKAGE);
+
+	if (! g_thread_supported ())
+		g_thread_init (NULL);
+	dbus_g_thread_init ();
+	g_type_init ();
+	gtk_init (&argc, &argv);
+
+	context = g_option_context_new (NULL);
+	g_option_context_set_summary (context, _("Add/Remove Software"));
+	g_option_context_add_main_entries (context, options, NULL);
+	g_option_context_add_group (context, egg_debug_get_option_group ());
+	g_option_context_add_group (context, gtk_get_option_group (TRUE));
+	g_option_context_parse (context, &argc, &argv, NULL);
+	g_option_context_free (context);
+
+	if (program_version) {
+		g_print (VERSION "\n");
+		return 0;
+	}
+
+	/* add application specific icons to search path */
+	gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
+					   GPK_DATA G_DIR_SEPARATOR_S "icons");
+
+	/* TRANSLATORS: title to pass to to the user if there are not enough privs */
+	ret = gpk_check_privileged_user (_("Software Update Viewer"), TRUE);
+	if (!ret)
+		return 1;
 
-	G_OBJECT_CLASS (gpk_update_viewer_parent_class)->finalize (object);
-}
+	/* are we already activated? */
+	application = gtk_application_new ("org.freedesktop.PackageKit.UpdateViewer", 0);
+	g_signal_connect (application, "startup",
+			  G_CALLBACK (gpk_update_viewer_application_startup_cb), NULL);
+	g_signal_connect (application, "activate",
+			  G_CALLBACK (gpk_update_viewer_activate_cb), NULL);
 
-/**
- * gpk_update_viewer_class_init:
- * @klass: This graph class instance
- **/
-static void
-gpk_update_viewer_class_init (GpkUpdateViewerClass *klass)
-{
-	GObjectClass *object_class = G_OBJECT_CLASS (klass);
-	object_class->finalize = gpk_update_viewer_finalize;
-	g_type_class_add_private (klass, sizeof (GpkUpdateViewerPrivate));
+	/* run */
+	status = g_application_run (G_APPLICATION (application), argc, argv);
 
-	signals [SIGNAL_CLOSE] =
-		g_signal_new ("action-close",
-			      G_TYPE_FROM_CLASS (object_class),
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (GpkUpdateViewerClass, action_close),
-			      NULL,
-			      NULL,
-			      g_cclosure_marshal_VOID__VOID,
-			      G_TYPE_NONE, 0);
-}
+	/* we might have visual stuff running, close it down */
+	g_cancellable_cancel (cancellable);
 
-/**
- * gpk_update_viewer_new:
- * Return value: new GpkUpdateViewer instance.
- **/
-GpkUpdateViewer *
-gpk_update_viewer_new (void)
-{
-	GpkUpdateViewer *update_viewer;
-	update_viewer = g_object_new (GPK_TYPE_UPDATE_VIEWER, NULL);
-	return GPK_UPDATE_VIEWER (update_viewer);
+	/* remove auto-shutdown */
+	if (auto_shutdown_id != 0)
+		g_source_remove (auto_shutdown_id);
+
+	if (update_array != NULL)
+		g_ptr_array_unref (update_array);
+	g_free (package_id_last);
+	if (array_store_updates != NULL)
+		g_object_unref (array_store_updates);
+	if (builder != NULL)
+		g_object_unref (builder);
+	if (cancellable != NULL)
+		g_object_unref (cancellable);
+	if (console != NULL)
+		g_object_unref (console);
+	if (control != NULL)
+		g_object_unref (control);
+	if (settings != NULL)
+		g_object_unref (settings);
+	if (markdown != NULL)
+		g_object_unref (markdown);
+	if (task != NULL)
+		g_object_unref (task);
+	if (text_buffer != NULL)
+		g_object_unref (text_buffer);
+
+	g_object_unref (application);
+	return status;
 }
 
diff --git a/src/gpk-watch.c b/src/gpk-watch.c
index 43b6227..3cff867 100644
--- a/src/gpk-watch.c
+++ b/src/gpk-watch.c
@@ -333,9 +333,7 @@ gpk_watch_set_proxies (GpkWatch *watch)
 	}
 	watch->priv->set_proxy_id = g_timeout_add (GPK_WATCH_SET_PROXY_RATE_LIMIT,
 							(GSourceFunc) gpk_watch_set_proxies_ratelimit, watch);
-#if GLIB_CHECK_VERSION(2,25,8)
 	g_source_set_name_by_id (watch->priv->set_proxy_id, "[GpkWatch] set-proxies");
-#endif
 	return TRUE;
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]