diff --git a/src/net/sf/briar/android/helloworld/HelloWorldService.java b/src/net/sf/briar/android/helloworld/HelloWorldService.java
index eeb74c315147bc37ccf5f8234a9813db8c32d510..7a046ad04adaa3715dd1edee98d368c3cc2b35e4 100644
--- a/src/net/sf/briar/android/helloworld/HelloWorldService.java
+++ b/src/net/sf/briar/android/helloworld/HelloWorldService.java
@@ -16,7 +16,7 @@ import android.os.IBinder;
 
 import com.google.inject.Inject;
 
-public class HelloWorldService extends RoboService implements Runnable {
+public class HelloWorldService extends RoboService {
 
 	private static final Logger LOG =
 			Logger.getLogger(HelloWorldService.class.getName());
@@ -29,18 +29,23 @@ public class HelloWorldService extends RoboService implements Runnable {
 	public void onCreate() {
 		super.onCreate();
 		if(LOG.isLoggable(INFO)) LOG.info("Created");
-		Thread t = new Thread(this);
-		t.setDaemon(false);
-		t.start();
+		new Thread() {
+			@Override
+			public void run() {
+				startServices();
+			}
+		}.start();
 	}
 
 	@Override
 	public int onStartCommand(Intent intent, int flags, int startId) {
+		if(LOG.isLoggable(INFO)) LOG.info("Started");
 		return 0;
 	}
 
 	@Override
 	public IBinder onBind(Intent intent) {
+		if(LOG.isLoggable(INFO)) LOG.info("Bound");
 		return null;
 	}
 
@@ -48,11 +53,16 @@ public class HelloWorldService extends RoboService implements Runnable {
 	public void onDestroy() {
 		super.onDestroy();
 		if(LOG.isLoggable(INFO)) LOG.info("Destroyed");
+		new Thread() {
+			@Override
+			public void run() {
+				stopServices();
+			}
+		}.start();
 	}
 
-	public void run() {
+	private void startServices() {
 		try {
-			// Start...
 			if(LOG.isLoggable(INFO)) LOG.info("Starting");
 			db.open(false);
 			if(LOG.isLoggable(INFO)) LOG.info("Database opened");
@@ -61,11 +71,15 @@ public class HelloWorldService extends RoboService implements Runnable {
 			int pluginsStarted = pluginManager.start(this);
 			if(LOG.isLoggable(INFO))
 				LOG.info(pluginsStarted + " plugins started");
-			// ...sleep...
-			try {
-				Thread.sleep(30 * 1000);
-			} catch(InterruptedException ignored) {}
-			// ...and stop
+		} catch(DbException e) {
+			if(LOG.isLoggable(WARNING)) LOG.warning(e.toString());
+		} catch(IOException e) {
+			if(LOG.isLoggable(WARNING)) LOG.warning(e.toString());
+		}
+	}
+
+	private void stopServices() {
+		try {
 			if(LOG.isLoggable(INFO)) LOG.info("Shutting down");
 			int pluginsStopped = pluginManager.stop();
 			if(LOG.isLoggable(INFO))
@@ -79,6 +93,5 @@ public class HelloWorldService extends RoboService implements Runnable {
 		} catch(IOException e) {
 			if(LOG.isLoggable(WARNING)) LOG.warning(e.toString());
 		}
-		stopSelf();
 	}
 }