diff --git a/briar-android/src/net/sf/briar/android/BriarService.java b/briar-android/src/net/sf/briar/android/BriarService.java
index 06c24e4b772d7e6bf10fb71efafbea53af27215a..ba9cf7fbea301e83088ec3ad619f833ea53c4980 100644
--- a/briar-android/src/net/sf/briar/android/BriarService.java
+++ b/briar-android/src/net/sf/briar/android/BriarService.java
@@ -160,5 +160,10 @@ public class BriarService extends RoboService {
 			binderLatch.await();
 			return binder;
 		}
+
+		public void waitForStartup() throws InterruptedException {
+			waitForBinder();
+			((BriarBinder) binder).getService().waitForStartup();
+		}
 	}
 }
diff --git a/briar-android/src/net/sf/briar/android/HomeScreenActivity.java b/briar-android/src/net/sf/briar/android/HomeScreenActivity.java
index 07fe3d0b8c0ea586c7247044e6d999aea23dde84..4d597ce7cdcfb708a987b0ec2dc3db55afd875fd 100644
--- a/briar-android/src/net/sf/briar/android/HomeScreenActivity.java
+++ b/briar-android/src/net/sf/briar/android/HomeScreenActivity.java
@@ -136,6 +136,7 @@ public class HomeScreenActivity extends BriarActivity {
 			GridView grid = new GridView(this);
 			grid.setLayoutParams(matchParent);
 			grid.setGravity(CENTER);
+			grid.setPadding(5, 5, 5, 5);
 			grid.setNumColumns(2);
 			grid.setAdapter(new BaseAdapter() {
 
diff --git a/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java b/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java
index 53143108ea60ce1c2313bcf5b42e283177c71b53..c1c00ad104d34f4a92a6225a589e210d357681b2 100644
--- a/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java
+++ b/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java
@@ -14,7 +14,6 @@ import java.util.logging.Logger;
 import net.sf.briar.R;
 import net.sf.briar.android.BriarActivity;
 import net.sf.briar.android.BriarService;
-import net.sf.briar.android.BriarService.BriarBinder;
 import net.sf.briar.android.BriarService.BriarServiceConnection;
 import net.sf.briar.android.invitation.AddContactActivity;
 import net.sf.briar.api.Contact;
@@ -30,7 +29,6 @@ import net.sf.briar.api.transport.ConnectionListener;
 import net.sf.briar.api.transport.ConnectionRegistry;
 import android.content.Intent;
 import android.os.Bundle;
-import android.os.IBinder;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.ArrayAdapter;
@@ -99,12 +97,12 @@ implements OnClickListener, DatabaseListener, ConnectionListener {
 			public void run() {
 				try {
 					// Wait for the service to be bound and started
-					IBinder binder = serviceConnection.waitForBinder();
-					((BriarBinder) binder).getService().waitForStartup();
-					if(LOG.isLoggable(INFO)) LOG.info("Service started");
+					serviceConnection.waitForStartup();
+					// If there are no contacts in the DB, create some fake ones
 					Collection<Contact> contacts = db.getContacts();
 					if(contacts.isEmpty()) {
-						// Insert a couple of fake contacts
+						if(LOG.isLoggable(INFO))
+							LOG.info("Inserting fake contacts");
 						db.addContact("Alice");
 						db.addContact("Bob");
 					}
@@ -142,8 +140,7 @@ implements OnClickListener, DatabaseListener, ConnectionListener {
 			public void run() {
 				try {
 					// Wait for the service to be bound and started
-					IBinder binder = serviceConnection.waitForBinder();
-					((BriarBinder) binder).getService().waitForStartup();
+					serviceConnection.waitForStartup();
 					// Load the contacts from the database
 					Collection<Contact> contacts = db.getContacts();
 					if(LOG.isLoggable(INFO))
diff --git a/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java b/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java
index a45ac9c8bfcb23608c6425a34531014a9660ed87..ebdd646567003bb92e480ae5547e49a7e1059dbf 100644
--- a/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java
+++ b/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java
@@ -20,7 +20,6 @@ import java.util.logging.Logger;
 import net.sf.briar.R;
 import net.sf.briar.android.BriarActivity;
 import net.sf.briar.android.BriarService;
-import net.sf.briar.android.BriarService.BriarBinder;
 import net.sf.briar.android.BriarService.BriarServiceConnection;
 import net.sf.briar.api.Contact;
 import net.sf.briar.api.ContactId;
@@ -36,7 +35,6 @@ import net.sf.briar.api.messaging.Message;
 import net.sf.briar.api.messaging.MessageFactory;
 import android.content.Intent;
 import android.os.Bundle;
-import android.os.IBinder;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.ArrayAdapter;
@@ -103,12 +101,13 @@ implements OnClickListener, DatabaseListener {
 			public void run() {
 				try {
 					// Wait for the service to be bound and started
-					IBinder binder = serviceConnection.waitForBinder();
-					((BriarBinder) binder).getService().waitForStartup();
-					if(LOG.isLoggable(INFO)) LOG.info("Service started");
+					serviceConnection.waitForStartup();
+					// If there are no messages in the DB, create some fake ones
 					Collection<PrivateMessageHeader> headers =
 							db.getPrivateMessageHeaders();
 					if(headers.isEmpty()) {
+						if(LOG.isLoggable(INFO))
+							LOG.info("Inserting fake contact and messages");
 						// Insert a fake contact
 						ContactId contactId = db.addContact("Carol");
 						// Insert some messages to the contact
@@ -154,8 +153,13 @@ implements OnClickListener, DatabaseListener {
 	}
 
 	public void eventOccurred(DatabaseEvent e) {
-		if(e instanceof MessageAddedEvent) reloadMessageHeaders();
-		else if(e instanceof MessageExpiredEvent) reloadMessageHeaders();
+		if(e instanceof MessageAddedEvent) {
+			if(LOG.isLoggable(INFO)) LOG.info("Message added, reloading");
+			reloadMessageHeaders();
+		} else if(e instanceof MessageExpiredEvent) {
+			if(LOG.isLoggable(INFO)) LOG.info("Message removed, reloading");
+			reloadMessageHeaders();
+		}
 	}
 
 	private void reloadMessageHeaders() {
@@ -163,8 +167,7 @@ implements OnClickListener, DatabaseListener {
 			public void run() {
 				try {
 					// Wait for the service to be bound and started
-					IBinder binder = serviceConnection.waitForBinder();
-					((BriarBinder) binder).getService().waitForStartup();
+					serviceConnection.waitForStartup();
 					// Load the contact list from the database
 					Collection<Contact> contacts = db.getContacts();
 					if(LOG.isLoggable(INFO))