diff --git a/wmbattery/upower.c b/wmbattery/upower.c
index 857c7f4..75ba874 100644
--- a/wmbattery/upower.c
+++ b/wmbattery/upower.c
@@ -9,7 +9,7 @@
 #include <upower.h>
 #include "apm.h"
 
-int num_batteries = 0;
+static UpClient * up;
 
 struct context {
 	int current;
@@ -54,7 +54,6 @@ static void get_devinfo(gpointer device, gpointer result)
 
 int upower_supported(void)
 {
-	UpClient *up;
 	up = up_client_new();
 
 	if (!up) {
@@ -63,11 +62,9 @@ int upower_supported(void)
 		GPtrArray *devices = up_client_get_devices(up);
 
 		if (!devices) {
-			g_object_unref(up);
 			return 0;
 		} else {
 			g_ptr_array_unref(devices);
-			g_object_unref(up);
 			return 1;
 		}
 	}
@@ -76,7 +73,6 @@ int upower_supported(void)
 /* Fill the passed apm_info struct. */
 int upower_read(int battery, apm_info *info)
 {
-	UpClient *up;
 	GPtrArray *devices = NULL;
 
 	up = up_client_new();
@@ -139,6 +135,5 @@ int upower_read(int battery, apm_info *info)
 	}
 
 	g_ptr_array_free(devices, TRUE);
-	g_object_unref(up);
 	return 0;
 }
diff --git a/wmbattery/wmbattery.c b/wmbattery/wmbattery.c
index 1d45d65..74d39fd 100644
--- a/wmbattery/wmbattery.c
+++ b/wmbattery/wmbattery.c
@@ -798,8 +798,10 @@ int main(int argc, char *argv[])
 	}
 #endif
 #ifdef UPOWER
-	else if (upower_supported())
+	else if (upower_supported()) {
 		use_upower = 1;
+		delay = 2;
+	}
 #endif
 	/* Check for ACPI support. */
 	else if (acpi_supported() && acpi_batt_count > 0) {