diff --git a/backup_manager/core.py b/backup_manager/core.py
index 4334455..e65ec49 100644
--- a/backup_manager/core.py
+++ b/backup_manager/core.py
@@ -221,15 +221,16 @@ def schedule_backup (manager, config):
     try:
         pk = dbus.SessionBus ().get_object ("org.freedesktop.PolicyKit.AuthenticationAgent", "/")
         pk_agent = dbus.Interface (pk, "org.freedesktop.PolicyKit.AuthenticationAgent")
-        pk_agent.ObtainAuthorization ("org.opensuse.backupmanager.schedule",
-                                      dbus.UInt32 (0), dbus.UInt32 (os.getpid ()))
-        
-        bm = dbus.SystemBus ().get_object ("org.opensuse.BackupManager", "/org/opensuse/BackupManager")
-        bm_if = dbus.Interface (bm, "org.opensuse.BackupManager")
-        if config.backup_schedule == SCHEDULE_NEVER:
-            bm_if.RemoveSchedule ()
-        else:
-            bm_if.AddSchedule ("%s %s" % (config.backup_schedule, config.backup_time))
+        if pk_agent.ObtainAuthorization ("org.opensuse.backupmanager.schedule", dbus.UInt32 (0), dbus.UInt32 (os.getpid ())):
+            print >> sys.stderr, " Confirmed authorization to schedule backups"
+            bm = dbus.SystemBus ().get_object ("org.opensuse.BackupManager", "/org/opensuse/BackupManager")
+            bm_if = dbus.Interface (bm, "org.opensuse.BackupManager")
+            if config.backup_schedule == SCHEDULE_NEVER:
+                bm_if.RemoveSchedule ()
+                print >> sys.stderr, "  removed old schedule"
+            else:
+                bm_if.AddSchedule ("%s %s" % (config.backup_schedule, config.backup_time))
+                print >> sys.stderr, "  added schedule"
     except dbus.DBusException, e:
         print >> sys.stderr, "PolicyKit failure: ", str (e)
         gsu = subprocess.Popen (["gnomesu", "%s" % (resource_filename (__name__, "service.py")),
diff --git a/backup_manager/manager.py b/backup_manager/manager.py
index 45d0bab..bba1aaa 100644
--- a/backup_manager/manager.py
+++ b/backup_manager/manager.py
@@ -46,7 +46,7 @@ def start_applet ():
         os._exit (0)
 
     new_env = get_env_from_pid (pids[0])
-    os.execvpe ("python", ["pyton", resource_filename (__name__, "applet.py")], new_env)
+    os.execvpe ("python", ["python", resource_filename (__name__, "applet.py")], new_env)
 
 def backup_now (config):
     applet_pid = start_applet ()
@@ -64,6 +64,7 @@ def backup_now (config):
         notify_user_err (_("Backup Error"), str (e))
         sys.exit (1)
     else:
+        os.kill (applet_pid, signal.SIGINT)
         notify_user (_("Backup"), _("Your data has been backed up"), expire=False)
     finally:
         if ck:
diff --git a/backup_manager/settings.py b/backup_manager/settings.py
index c8f1e16..6f7aea4 100644
--- a/backup_manager/settings.py
+++ b/backup_manager/settings.py
@@ -15,6 +15,7 @@ log = None
 class SettingsWindow ():
     def __init__ (self, config):
         self._config = config
+        self._was_scheduled = False
         self._manager = get_backup_manager ()
         self._files_mdl = gtk.ListStore (gobject.TYPE_STRING)
         self._ampm_mdl = gtk.ListStore (gobject.TYPE_STRING)
@@ -144,6 +145,7 @@ class SettingsWindow ():
         else:
             self._set_storage_device_if_available ()
         
+        self._was_scheduled = self._config.backup_schedule != SCHEDULE_NEVER
         if self._config.backup_schedule != None:
             self._backup_combo.set_active (self._config.backup_schedule)
 
@@ -184,6 +186,7 @@ class SettingsWindow ():
                 self._purge_spin_button.set_value (int (val))
 
     def _save (self, button):
+        print >> sys.stderr, "Saving config..."
         self._config.file_selection = "all" if self._all_data_radio.get_active () else "specific"
         self._config.backup_schedule = self._backup_combo.get_active () 
         self._config.prompt_on_attach = self._prompt_on_attach_button.get_active () 
@@ -218,7 +221,8 @@ class SettingsWindow ():
             for row in self._exceptions_mdl:
                 self._config.excludes.append (row[0])
 
-        if self._config.backup_schedule != SCHEDULE_NEVER:
+        print >> sys.stderr, "About to check disk space"
+        if self._backup_now_button.get_active () or self._config.backup_schedule != SCHEDULE_NEVER:
             self._window.set_title (_("Checking disk space..."))
             self._main_content.set_sensitive (False)
             self._main_content.pack_start (self._progress_bar)
@@ -226,14 +230,19 @@ class SettingsWindow ():
             self._window.show_all ()
             gobject.timeout_add (500, lambda: self._progress_bar.pulse () or self._checking)
         
+        print >> sys.stderr, "Starting BackupManagerThread to verify config"
         t = BackupManagerThread (target=self._verify)
         t.set_callbacks (finish_cb=self._finish_cb, error_cb=self._error_cb)
-        t.start ()
         self._checking = True
+        t.start ()
 
     def _verify (self):
+        print >> sys.stderr, "Verifying config..."
         self._manager.verify_config (self._config)
-        schedule_backup (self._manager, self._config)
+        print >> sys.stderr, "Done verifying config, about to schedule backup; was scheduled?", self._was_scheduled, "schedule not None?", self._config.backup_schedule != SCHEDULE_NEVER
+        if self._was_scheduled or self._config.backup_schedule != SCHEDULE_NEVER:
+            schedule_backup (self._manager, self._config)
+        print >> sys.stderr, "Done with scheduling backup"
     
     def _finish_cb (self):
         self._config.save ()
@@ -243,20 +252,24 @@ class SettingsWindow ():
             self._backup_now ()
 
     def _error_cb (self, msg):
-        gtk.gdk.threads_enter ()
-        self._checking = False
-        self._window.set_title (_("Backup!"))
-        self._main_content.set_sensitive (True)
-        
-        if self._config.backup_schedule != SCHEDULE_NEVER:
-            self._main_content.remove (self._progress_bar)
-        
-        md = gtk.MessageDialog (parent=self._window, type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
-        md.set_icon (self._window.get_icon ())
-        md.set_markup (_("<b>Failed to save settings:</b>\n") + msg)
-        md.run ()
-        md.destroy ()
-        gtk.gdk.threads_leave ()
+        print >> sys.stderr, "In error cb..."
+        try:
+            gtk.gdk.threads_enter ()
+            self._checking = False
+            self._window.set_title (_("Backup!"))
+            self._main_content.set_sensitive (True)
+            
+            if self._backup_now_button.get_active () or self._config.backup_schedule != SCHEDULE_NEVER:
+                self._main_content.remove (self._progress_bar)
+            
+            md = gtk.MessageDialog (parent=self._window, type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
+            md.set_icon (self._window.get_icon ())
+            md.set_markup (_("<b>Failed to save settings:</b>\n") + msg)
+            md.run ()
+            md.destroy ()
+            gtk.gdk.threads_leave ()
+        except Exception, e:
+            print >> sys.stderr, "  Exception in error_cb: ", e
     
     def _frequency_changed (self, cmb):
         active = self._backup_combo.get_active () > 1
@@ -387,7 +400,7 @@ def main ():
         config.config_file = config_file
 
     global log
-    log = get_logger (redirect=True)
+    log = get_logger (redirect=False)
 
     sw = SettingsWindow (config)
     gtk.main ()
@@ -398,7 +411,7 @@ if __name__ == "__main__":
     except Exception, e:
         global log
         if not log:
-            log = get_logger (redirect=True)
+            log = get_logger (redirect=False)
         
         log.error (str (e))
         sys.exit (1)
diff --git a/conf/org.opensuse.BackupManager.service b/conf/org.opensuse.BackupManager.service
deleted file mode 100644
index 08f792d..0000000
--- a/conf/org.opensuse.BackupManager.service
+++ /dev/null
@@ -1,4 +0,0 @@
-[D-BUS Service]
-Name=org.opensuse.BackupManager
-Exec=/usr/lib/python/site-packages/backup_manager/service.py
-User=root
diff --git a/conf/org.opensuse.BackupManager.service.in b/conf/org.opensuse.BackupManager.service.in
new file mode 100644
index 0000000..2ee4b75
--- /dev/null
+++ b/conf/org.opensuse.BackupManager.service.in
@@ -0,0 +1,4 @@
+[D-BUS Service]
+Name=org.opensuse.BackupManager
+Exec=@libdir@/python/site-packages/backup_manager/service.py
+User=root
diff --git a/setup.py b/setup.py
index 3d00717..febcea7 100644
--- a/setup.py
+++ b/setup.py
@@ -9,6 +9,16 @@ catalogs = ["en", "es", "fr", "de"]
 
 class MyInstallData (_install, object):
     def run (self):
+        # Set the appropriate libdir in the .service file
+        service_file = 'conf/org.opensuse.BackupManager.service'
+        subprocess.call (["cp", 'conf/org.opensuse.BackupManager.service.in', service_file])
+        if 'lib64' in self.install_lib:
+            libdir = 'lib64'
+        else:
+            libdir = 'lib'
+        libdir_regex = "s/@libdir@/\/usr\/%s/" % libdir
+        subprocess.call (["sed", "--in-place", libdir_regex, service_file])
+
         for c in catalogs:
             try:
                 os.makedirs ("po/locale/%s/LC_MESSAGES" % c)
