diff --git a/briar-android/src/org/briarproject/android/blogs/BasePostFragment.java b/briar-android/src/org/briarproject/android/blogs/BasePostFragment.java
index 04ee0a747db6aac0901c0e381ff2d823f15a797c..9e2db81dc85c5cf54e9831f5902e1ee5fc2b1f15 100644
--- a/briar-android/src/org/briarproject/android/blogs/BasePostFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/BasePostFragment.java
@@ -5,7 +5,6 @@ import android.support.annotation.CallSuper;
 import android.support.annotation.Nullable;
 import android.support.annotation.UiThread;
 import android.view.LayoutInflater;
-import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ProgressBar;
@@ -36,8 +35,6 @@ abstract class BasePostFragment extends BaseFragment {
 	@Override
 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
 			Bundle savedInstanceState) {
-		setHasOptionsMenu(true);
-
 		view = inflater.inflate(R.layout.fragment_blog_post, container,
 				false);
 		progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
@@ -60,17 +57,6 @@ abstract class BasePostFragment extends BaseFragment {
 		stopPeriodicUpdate();
 	}
 
-	@Override
-	public boolean onOptionsItemSelected(final MenuItem item) {
-		switch (item.getItemId()) {
-			case android.R.id.home:
-				getActivity().onBackPressed();
-				return true;
-			default:
-				return super.onOptionsItemSelected(item);
-		}
-	}
-
 	@UiThread
 	protected void onBlogPostLoaded(BlogPostItem post) {
 		progressBar.setVisibility(INVISIBLE);
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogFragment.java b/briar-android/src/org/briarproject/android/blogs/BlogFragment.java
index eb655209108c6a290394c31c3fc3241d4f711c12..8809864d55e7103f684d1262bfcf017752b4a342 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogFragment.java
@@ -80,9 +80,6 @@ public class BlogFragment extends BaseFragment implements
 	@Override
 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
 			Bundle savedInstanceState) {
-
-		setHasOptionsMenu(true);
-
 		Bundle args = getArguments();
 		byte[] b = args.getByteArray(GROUP_ID);
 		if (b == null) throw new IllegalStateException("No group ID in args");
@@ -151,9 +148,6 @@ public class BlogFragment extends BaseFragment implements
 						android.R.anim.slide_in_left,
 						android.R.anim.slide_out_right);
 		switch (item.getItemId()) {
-			case android.R.id.home:
-				getActivity().onBackPressed();
-				return true;
 			case R.id.action_write_blog_post:
 				Intent i = new Intent(getActivity(),
 						WriteBlogPostActivity.class);
diff --git a/briar-android/src/org/briarproject/android/blogs/FeedFragment.java b/briar-android/src/org/briarproject/android/blogs/FeedFragment.java
index 9545f34ff4c8f7fe58e7d431bcb501269b01ab0d..4be0bc5413403741fed04e20a4dbf21f5be73129 100644
--- a/briar-android/src/org/briarproject/android/blogs/FeedFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/FeedFragment.java
@@ -66,7 +66,6 @@ public class FeedFragment extends BaseFragment implements
 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
 			Bundle savedInstanceState) {
 
-		setHasOptionsMenu(true);
 		View v = inflater.inflate(R.layout.fragment_blog, container, false);
 
 		adapter = new BlogPostAdapter(getActivity(), this);
diff --git a/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java b/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java
index e3d50dfeefa8d288cc2e67477f04937784d6732a..479fecaadaff9cfaeea1b394f8faa64983ed07b2 100644
--- a/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java
@@ -72,8 +72,6 @@ public class ReblogFragment extends BaseFragment implements TextInputListener {
 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
 			Bundle savedInstanceState) {
 
-		setHasOptionsMenu(true);
-
 		Bundle args = getArguments();
 		blogId = new GroupId(args.getByteArray(GROUP_ID));
 		postId = new MessageId(args.getByteArray(POST_ID));
diff --git a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java
index 474b2cc2b7b7b7f854541eb1128776378b266679..fe1e62a4da2244079eeb01d04c9fb1d8604ecacc 100644
--- a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java
+++ b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java
@@ -106,8 +106,6 @@ public class ContactListFragment extends BaseFragment implements EventListener {
 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
 			Bundle savedInstanceState) {
 
-		setHasOptionsMenu(true);
-
 		View contentView =
 				inflater.inflate(R.layout.list, container,
 						false);
diff --git a/briar-android/src/org/briarproject/android/forum/ForumListFragment.java b/briar-android/src/org/briarproject/android/forum/ForumListFragment.java
index 6bbf1965776b3ea3c90c7eccce1b2d661d89282c..f1faecd46d260908e5c7b7e89428df6b2aed2b8b 100644
--- a/briar-android/src/org/briarproject/android/forum/ForumListFragment.java
+++ b/briar-android/src/org/briarproject/android/forum/ForumListFragment.java
@@ -78,8 +78,6 @@ public class ForumListFragment extends BaseEventFragment implements
 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
 			Bundle savedInstanceState) {
 
-		setHasOptionsMenu(true);
-
 		View contentView =
 				inflater.inflate(R.layout.fragment_forum_list, container,
 						false);
diff --git a/briar-android/src/org/briarproject/android/fragment/BaseFragment.java b/briar-android/src/org/briarproject/android/fragment/BaseFragment.java
index 2cb6b13e6152d89b1e118e8b2cd8494559e78b26..223c01367e28fb25a7a49b9e204941cca5c8f61e 100644
--- a/briar-android/src/org/briarproject/android/fragment/BaseFragment.java
+++ b/briar-android/src/org/briarproject/android/fragment/BaseFragment.java
@@ -5,6 +5,7 @@ import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.annotation.UiThread;
 import android.support.v4.app.Fragment;
+import android.view.MenuItem;
 
 import org.briarproject.android.ActivityComponent;
 import org.briarproject.android.DestroyableContext;
@@ -27,6 +28,9 @@ public abstract class BaseFragment extends Fragment
 	@Override
 	public void onCreate(Bundle savedInstanceState) {
 		super.onCreate(savedInstanceState);
+
+		// allow for "up" button to act as back button
+		setHasOptionsMenu(true);
 	}
 
 
@@ -37,6 +41,17 @@ public abstract class BaseFragment extends Fragment
 		listener.onFragmentCreated(getUniqueTag());
 	}
 
+	@Override
+	public boolean onOptionsItemSelected(final MenuItem item) {
+		switch (item.getItemId()) {
+			case android.R.id.home:
+				listener.onBackPressed();
+				return true;
+			default:
+				return super.onOptionsItemSelected(item);
+		}
+	}
+
 	@UiThread
 	protected void finish() {
 		getActivity().supportFinishAfterTransition();
@@ -47,6 +62,9 @@ public abstract class BaseFragment extends Fragment
 		@Deprecated
 		void runOnDbThread(Runnable runnable);
 
+		@UiThread
+		void onBackPressed();
+
 		@UiThread
 		ActivityComponent getActivityComponent();
 
diff --git a/briar-android/src/org/briarproject/android/sharing/BaseMessageFragment.java b/briar-android/src/org/briarproject/android/sharing/BaseMessageFragment.java
index 6616fe87caf06145b74429535c7393fbc20b231a..2613fd230bd461f5751ed5ba3baa532fb44b8f71 100644
--- a/briar-android/src/org/briarproject/android/sharing/BaseMessageFragment.java
+++ b/briar-android/src/org/briarproject/android/sharing/BaseMessageFragment.java
@@ -32,9 +32,6 @@ abstract class BaseMessageFragment extends BaseFragment
 	public View onCreateView(LayoutInflater inflater, ViewGroup container,
 			Bundle savedInstanceState) {
 
-		// allow for "up" button to act as back button
-		setHasOptionsMenu(true);
-
 		// inflate view
 		View v = inflater.inflate(R.layout.fragment_message, container,
 				false);
@@ -59,17 +56,6 @@ abstract class BaseMessageFragment extends BaseFragment
 		message.showSoftKeyboard();
 	}
 
-	@Override
-	public boolean onOptionsItemSelected(final MenuItem item) {
-		switch (item.getItemId()) {
-			case android.R.id.home:
-				listener.onBackPressed();
-				return true;
-			default:
-				return super.onOptionsItemSelected(item);
-		}
-	}
-
 	@Override
 	public void onSendClick(String msg) {
 		// disable button to prevent accidental double actions
diff --git a/briar-android/src/org/briarproject/android/sharing/ContactSelectorFragment.java b/briar-android/src/org/briarproject/android/sharing/ContactSelectorFragment.java
index b496bcdebb0b90d14cc3154e0ce48e5ed17b9243..03e4da3979fc6de40030705c21b01e471f532ab1 100644
--- a/briar-android/src/org/briarproject/android/sharing/ContactSelectorFragment.java
+++ b/briar-android/src/org/briarproject/android/sharing/ContactSelectorFragment.java
@@ -84,7 +84,6 @@ public class ContactSelectorFragment extends BaseFragment implements
 	public void onCreate(Bundle savedInstanceState) {
 		super.onCreate(savedInstanceState);
 
-		setHasOptionsMenu(true);
 		Bundle args = getArguments();
 		byte[] b = args.getByteArray(GROUP_ID);
 		if (b == null) throw new IllegalStateException("No GroupId");
@@ -156,9 +155,6 @@ public class ContactSelectorFragment extends BaseFragment implements
 	public boolean onOptionsItemSelected(final MenuItem item) {
 		// Handle presses on the action bar items
 		switch (item.getItemId()) {
-			case android.R.id.home:
-				listener.onBackPressed();
-				return true;
 			case R.id.action_contacts_selected:
 				selectedContacts = adapter.getSelectedContactIds();
 				listener.contactsSelected(groupId, selectedContacts);