diff --git a/briar-android/src/org/briarproject/android/privategroup/creation/CreateGroupActivity.java b/briar-android/src/org/briarproject/android/privategroup/creation/CreateGroupActivity.java
index c2bba1a65c5b07fbdd838f576937a0228907fd13..26ccacadc1a94cb0c952e6cbc122dbcb3addde5f 100644
--- a/briar-android/src/org/briarproject/android/privategroup/creation/CreateGroupActivity.java
+++ b/briar-android/src/org/briarproject/android/privategroup/creation/CreateGroupActivity.java
@@ -17,6 +17,7 @@ import org.briarproject.api.contact.Contact;
 import org.briarproject.api.contact.ContactId;
 import org.briarproject.api.db.DbException;
 import org.briarproject.api.sync.GroupId;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.Collection;
 
@@ -24,7 +25,7 @@ import javax.inject.Inject;
 
 import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation;
 import static android.widget.Toast.LENGTH_SHORT;
-import static org.briarproject.api.sync.SyncConstants.MAX_MESSAGE_BODY_LENGTH;
+import static org.briarproject.api.privategroup.PrivateGroupConstants.MAX_GROUP_POST_BODY_LENGTH;
 
 public class CreateGroupActivity extends ContactSelectorActivity implements
 		CreateGroupListener, MessageFragmentListener {
@@ -125,7 +126,7 @@ public class CreateGroupActivity extends ContactSelectorActivity implements
 	}
 
 	@Override
-	public boolean onButtonClick(String message) {
+	public boolean onButtonClick(@NotNull String message) {
 		controller.sendInvitation(groupId, contacts, message,
 				new UiResultExceptionHandler<Void, DbException>(this) {
 					@Override
@@ -147,7 +148,7 @@ public class CreateGroupActivity extends ContactSelectorActivity implements
 
 	@Override
 	public int getMaximumMessageLength() {
-		return MAX_MESSAGE_BODY_LENGTH;
+		return MAX_GROUP_POST_BODY_LENGTH;
 	}
 
 	private void openNewGroup() {
diff --git a/briar-android/src/org/briarproject/android/sharing/BaseMessageFragment.java b/briar-android/src/org/briarproject/android/sharing/BaseMessageFragment.java
index b988c094456dd11f4a64815299230576b02f645c..eb05d19bcf5bc89659b711cb6b1549b5b0da6ab2 100644
--- a/briar-android/src/org/briarproject/android/sharing/BaseMessageFragment.java
+++ b/briar-android/src/org/briarproject/android/sharing/BaseMessageFragment.java
@@ -3,6 +3,7 @@ package org.briarproject.android.sharing;
 import android.content.Context;
 import android.os.Bundle;
 import android.support.annotation.StringRes;
+import android.support.annotation.UiThread;
 import android.support.design.widget.Snackbar;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -12,10 +13,10 @@ import org.briarproject.R;
 import org.briarproject.android.fragment.BaseFragment;
 import org.briarproject.android.view.LargeTextInputView;
 import org.briarproject.android.view.TextInputView.TextInputListener;
+import org.briarproject.api.nullsafety.NotNullByDefault;
 import org.briarproject.util.StringUtils;
 
 import static android.support.design.widget.Snackbar.LENGTH_SHORT;
-
 import static org.briarproject.api.sharing.SharingConstants.MAX_INVITATION_MESSAGE_LENGTH;
 import static org.briarproject.util.StringUtils.truncateUtf8;
 
@@ -79,6 +80,8 @@ public abstract class BaseMessageFragment extends BaseFragment
 		}
 	}
 
+	@UiThread
+	@NotNullByDefault
 	public interface MessageFragmentListener {
 
 		void onBackPressed();
diff --git a/briar-android/src/org/briarproject/android/sharing/ContactSelectorActivity.java b/briar-android/src/org/briarproject/android/sharing/ContactSelectorActivity.java
index 793353de59dbec5aebac7b0dcd5fa1745692f926..2dad460eae6a37d1599d94dd428971843b771f0a 100644
--- a/briar-android/src/org/briarproject/android/sharing/ContactSelectorActivity.java
+++ b/briar-android/src/org/briarproject/android/sharing/ContactSelectorActivity.java
@@ -1,6 +1,5 @@
 package org.briarproject.android.sharing;
 
-import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.CallSuper;
 import android.support.annotation.UiThread;
@@ -10,6 +9,7 @@ import org.briarproject.android.BriarActivity;
 import org.briarproject.android.fragment.BaseFragment.BaseFragmentListener;
 import org.briarproject.api.contact.Contact;
 import org.briarproject.api.contact.ContactId;
+import org.briarproject.api.db.DatabaseExecutor;
 import org.briarproject.api.db.DbException;
 import org.briarproject.api.sync.GroupId;
 
@@ -22,8 +22,8 @@ public abstract class ContactSelectorActivity extends BriarActivity implements
 
 	final static String CONTACTS = "contacts";
 
-	protected volatile GroupId groupId;
-	protected volatile Collection<ContactId> contacts;
+	protected GroupId groupId;
+	protected Collection<ContactId> contacts;
 
 	@Override
 	public void onCreate(Bundle bundle) {
@@ -58,9 +58,7 @@ public abstract class ContactSelectorActivity extends BriarActivity implements
 		this.contacts = contacts;
 	}
 
-	/**
-	 * This must only be called from a DbThread
-	 */
+	@DatabaseExecutor
 	public abstract boolean isDisabled(GroupId groupId, Contact c)
 			throws DbException;
 
diff --git a/briar-android/src/org/briarproject/android/sharing/ContactSelectorListener.java b/briar-android/src/org/briarproject/android/sharing/ContactSelectorListener.java
index e1805594af6d78f0be73ca8d1ff925fcaf85d702..8016c45e9050d5c69843afa8c73bb100b8e3cf3b 100644
--- a/briar-android/src/org/briarproject/android/sharing/ContactSelectorListener.java
+++ b/briar-android/src/org/briarproject/android/sharing/ContactSelectorListener.java
@@ -5,6 +5,7 @@ import android.support.annotation.UiThread;
 import org.briarproject.android.DestroyableContext;
 import org.briarproject.api.contact.Contact;
 import org.briarproject.api.contact.ContactId;
+import org.briarproject.api.db.DatabaseExecutor;
 import org.briarproject.api.db.DbException;
 import org.briarproject.api.sync.GroupId;
 
@@ -12,8 +13,10 @@ import java.util.Collection;
 
 public interface ContactSelectorListener extends DestroyableContext {
 
+	@Deprecated
 	void runOnDbThread(Runnable runnable);
 
+	@DatabaseExecutor
 	boolean isDisabled(GroupId groupId, Contact c) throws DbException;
 
 	@UiThread
diff --git a/briar-android/src/org/briarproject/android/sharing/ShareActivity.java b/briar-android/src/org/briarproject/android/sharing/ShareActivity.java
index 81241e603eb8006b3aa903758815100cffbbcaa1..e89fe277e1251b88c9cdbffe644fbfafbdc92697 100644
--- a/briar-android/src/org/briarproject/android/sharing/ShareActivity.java
+++ b/briar-android/src/org/briarproject/android/sharing/ShareActivity.java
@@ -9,8 +9,10 @@ import android.widget.Toast;
 import org.briarproject.R;
 import org.briarproject.android.sharing.BaseMessageFragment.MessageFragmentListener;
 import org.briarproject.api.contact.ContactId;
+import org.briarproject.api.db.DatabaseExecutor;
 import org.briarproject.api.db.DbException;
 import org.briarproject.api.sync.GroupId;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.Collection;
 import java.util.logging.Logger;
@@ -64,20 +66,21 @@ public abstract class ShareActivity extends ContactSelectorActivity implements
 
 	@UiThread
 	@Override
-	public boolean onButtonClick(String message) {
-		share(message);
+	public boolean onButtonClick(@NotNull String message) {
+		share(groupId, contacts, message);
 		setResult(RESULT_OK);
 		supportFinishAfterTransition();
 		return true;
 	}
 
-	private void share(final String msg) {
+	private void share(final GroupId g, final Collection<ContactId> contacts,
+			final String msg) {
 		runOnDbThread(new Runnable() {
 			@Override
 			public void run() {
 				try {
 					for (ContactId c : contacts) {
-						share(groupId, c, msg);
+						share(g, c, msg);
 					}
 				} catch (DbException e) {
 					// TODO proper error handling
@@ -89,9 +92,7 @@ public abstract class ShareActivity extends ContactSelectorActivity implements
 		});
 	}
 
-	/**
-	 * This method must be run from the DbThread.
-	 */
+	@DatabaseExecutor
 	protected abstract void share(GroupId g, ContactId c, String msg)
 			throws DbException;