diff --git a/briar-android/src/org/briarproject/android/ActivityComponent.java b/briar-android/src/org/briarproject/android/ActivityComponent.java
index 6db54c450adc88c6f0753bfd4cd65621b587a8d8..e561c40b059ac15f6bb54ddfeec11f287daec54d 100644
--- a/briar-android/src/org/briarproject/android/ActivityComponent.java
+++ b/briar-android/src/org/briarproject/android/ActivityComponent.java
@@ -5,10 +5,8 @@ import android.app.Activity;
 import org.briarproject.android.blogs.BlogActivity;
 import org.briarproject.android.blogs.BlogFragment;
 import org.briarproject.android.blogs.BlogPostFragment;
-import org.briarproject.android.blogs.BlogPostPagerFragment;
 import org.briarproject.android.blogs.FeedFragment;
 import org.briarproject.android.blogs.FeedPostFragment;
-import org.briarproject.android.blogs.FeedPostPagerFragment;
 import org.briarproject.android.blogs.ReblogActivity;
 import org.briarproject.android.blogs.ReblogFragment;
 import org.briarproject.android.blogs.RssFeedImportActivity;
@@ -113,10 +111,6 @@ public interface ActivityComponent {
 
 	void inject(FeedPostFragment fragment);
 
-	void inject(BlogPostPagerFragment fragment);
-
-	void inject(FeedPostPagerFragment fragment);
-
 	void inject(ReblogFragment fragment);
 
 	void inject(ReblogActivity activity);
diff --git a/briar-android/src/org/briarproject/android/blogs/BasePostFragment.java b/briar-android/src/org/briarproject/android/blogs/BasePostFragment.java
index d3feae4e4858e1ee04f55829185d6fdcd41d15d5..8717acac1fde806184e03ecc9d92e6f3ac181cae 100644
--- a/briar-android/src/org/briarproject/android/blogs/BasePostFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/BasePostFragment.java
@@ -11,7 +11,6 @@ import android.widget.ProgressBar;
 
 import org.briarproject.R;
 import org.briarproject.android.fragment.BaseFragment;
-import org.briarproject.api.db.DbException;
 import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
 import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
 
@@ -26,6 +25,8 @@ import static org.briarproject.android.util.AndroidUtils.MIN_RESOLUTION;
 @ParametersNotNullByDefault
 abstract class BasePostFragment extends BaseFragment {
 
+	static final String POST_ID = "briar.POST_ID";
+
 	private static final Logger LOG =
 			Logger.getLogger(BasePostFragment.class.getName());
 
@@ -39,7 +40,8 @@ abstract class BasePostFragment extends BaseFragment {
 	@Nullable
 	@Override
 	public View onCreateView(LayoutInflater inflater,
-			@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+			@Nullable ViewGroup container,
+			@Nullable Bundle savedInstanceState) {
 		view = inflater.inflate(R.layout.fragment_blog_post, container,
 				false);
 		progressBar = (ProgressBar) view.findViewById(R.id.progressBar);
@@ -69,12 +71,6 @@ abstract class BasePostFragment extends BaseFragment {
 		ui.bindItem(post);
 	}
 
-	@UiThread
-	protected void onBlogPostLoadException(DbException exception) {
-		// TODO: Decide how to handle errors in the UI
-		finish();
-	}
-
 	private void startPeriodicUpdate() {
 		refresher = new Runnable() {
 			@Override
diff --git a/briar-android/src/org/briarproject/android/blogs/BasePostPagerFragment.java b/briar-android/src/org/briarproject/android/blogs/BasePostPagerFragment.java
deleted file mode 100644
index 6ba7aa6acad35559ef5377d3ab5031704e290e3a..0000000000000000000000000000000000000000
--- a/briar-android/src/org/briarproject/android/blogs/BasePostPagerFragment.java
+++ /dev/null
@@ -1,182 +0,0 @@
-package org.briarproject.android.blogs;
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.annotation.UiThread;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentStatePagerAdapter;
-import android.support.v4.view.ViewPager;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ProgressBar;
-
-import org.briarproject.R;
-import org.briarproject.android.blogs.BaseController.BlogListener;
-import org.briarproject.android.fragment.BaseFragment;
-import org.briarproject.api.blogs.BlogPostHeader;
-import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
-import org.briarproject.api.sync.GroupId;
-import org.briarproject.api.sync.MessageId;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import static android.view.View.INVISIBLE;
-import static android.view.View.VISIBLE;
-import static org.briarproject.android.blogs.BasePostPagerFragment.BlogPostPagerAdapter.INVALID_POSITION;
-
-@UiThread
-@MethodsNotNullByDefault
-@ParametersNotNullByDefault
-abstract class BasePostPagerFragment extends BaseFragment
-		implements BlogListener {
-
-	static final String POST_ID = "briar.POST_ID";
-
-	private ViewPager pager;
-	private ProgressBar progressBar;
-	private BlogPostPagerAdapter postPagerAdapter;
-	private MessageId postId;
-
-	@Nullable
-	@Override
-	public View onCreateView(LayoutInflater inflater,
-			@Nullable ViewGroup container, @Nullable Bundle state) {
-
-		Bundle args;
-		if (state == null) args = getArguments();
-		else args = state;
-		byte[] p = args.getByteArray(POST_ID);
-		if (p == null)
-			throw new IllegalStateException("No post ID in args");
-		postId = new MessageId(p);
-
-		View v = inflater.inflate(R.layout.fragment_blog_post_pager, container,
-				false);
-		progressBar = (ProgressBar) v.findViewById(R.id.progressBar);
-		progressBar.setVisibility(VISIBLE);
-
-		pager = (ViewPager) v.findViewById(R.id.pager);
-		postPagerAdapter = new BlogPostPagerAdapter(getChildFragmentManager());
-
-		return v;
-	}
-
-	@Override
-	public void onStart() {
-		super.onStart();
-		loadBlogPosts();
-	}
-
-	protected void loadBlogPosts() {
-		if (postId == null) {
-			MessageId selected = getSelectedPost();
-			if (selected != null) loadBlogPosts(selected);
-		} else {
-			loadBlogPosts(postId);
-		}
-	}
-
-	@Override
-	public void onSaveInstanceState(Bundle outState) {
-		super.onSaveInstanceState(outState);
-		MessageId selected = getSelectedPost();
-		if (selected != null)
-			outState.putByteArray(POST_ID, selected.getBytes());
-	}
-
-	@Override
-	public void onBlogPostAdded(BlogPostHeader header, boolean local) {
-		loadBlogPost(header);
-	}
-
-	abstract Fragment createFragment(GroupId g, MessageId m);
-
-	abstract void loadBlogPosts(MessageId select);
-
-	abstract void loadBlogPost(BlogPostHeader header);
-
-	protected void onBlogPostsLoaded(MessageId select,
-			Collection<BlogPostItem> posts) {
-		postId = null;
-		postPagerAdapter.setPosts(posts);
-		selectPost(select);
-	}
-
-	protected void onBlogPostLoaded(BlogPostItem post) {
-		MessageId selected = getSelectedPost();
-		postPagerAdapter.addPost(post);
-		if (selected != null) selectPost(selected);
-	}
-
-	@Nullable
-	private MessageId getSelectedPost() {
-		if (postPagerAdapter.getCount() == 0) return null;
-		int position = pager.getCurrentItem();
-		return postPagerAdapter.getPost(position).getId();
-	}
-
-	private void selectPost(MessageId m) {
-		int pos = postPagerAdapter.getPostPosition(m);
-		if (pos != INVALID_POSITION) {
-			progressBar.setVisibility(INVISIBLE);
-			pager.setAdapter(postPagerAdapter);
-			pager.setCurrentItem(pos);
-		}
-	}
-
-	@UiThread
-	class BlogPostPagerAdapter extends FragmentStatePagerAdapter {
-
-		static final int INVALID_POSITION = -1;
-
-		private final List<BlogPostItem> posts = new ArrayList<>();
-
-		private BlogPostPagerAdapter(FragmentManager fm) {
-			super(fm);
-		}
-
-		@Override
-		public int getCount() {
-			return posts.size();
-		}
-
-		@Override
-		public Fragment getItem(int position) {
-			BlogPostItem post = posts.get(position);
-			return createFragment(post.getGroupId(), post.getId());
-		}
-
-		private BlogPostItem getPost(int position) {
-			return posts.get(position);
-		}
-
-		private void setPosts(Collection<BlogPostItem> posts) {
-			this.posts.clear();
-			this.posts.addAll(posts);
-			Collections.sort(this.posts);
-			notifyDataSetChanged();
-		}
-
-		private void addPost(BlogPostItem post) {
-			posts.add(post);
-			Collections.sort(posts);
-			notifyDataSetChanged();
-		}
-
-		private int getPostPosition(MessageId m) {
-			int count = getCount();
-			for (int i = 0; i < count; i++) {
-				if (getPost(i).getId().equals(m)) {
-					return i;
-				}
-			}
-			return INVALID_POSITION;
-		}
-	}
-}
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogActivity.java b/briar-android/src/org/briarproject/android/blogs/BlogActivity.java
index 116fc8ac8c75679c654a3194a14bfb2e2160486b..a52d4437664e94ac689eb19883fda60fd1641994 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogActivity.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogActivity.java
@@ -49,7 +49,7 @@ public class BlogActivity extends BriarActivity implements
 
 	@Override
 	public void onBlogPostClick(BlogPostItem post) {
-		BlogPostPagerFragment f = BlogPostPagerFragment.newInstance(post.getId());
+		BlogPostFragment f = BlogPostFragment.newInstance(post.getId());
 		getSupportFragmentManager().beginTransaction()
 				.replace(R.id.fragmentContainer, f, f.getUniqueTag())
 				.addToBackStack(f.getUniqueTag())
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogPostFragment.java b/briar-android/src/org/briarproject/android/blogs/BlogPostFragment.java
index bd87bbf333539dcac4c6da6cfb8f16fb24e29c71..2a0ecf19297eb2157449bcdd38c77fab45e8fe48 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogPostFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogPostFragment.java
@@ -16,14 +16,12 @@ import org.briarproject.api.sync.MessageId;
 
 import javax.inject.Inject;
 
-import static org.briarproject.android.blogs.BasePostPagerFragment.POST_ID;
-
 @UiThread
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
 public class BlogPostFragment extends BasePostFragment {
 
-	public final static String TAG = BlogPostFragment.class.getName();
+	private static final String TAG = BlogPostFragment.class.getName();
 
 	private MessageId postId;
 
@@ -74,9 +72,11 @@ public class BlogPostFragment extends BasePostFragment {
 					public void onResultUi(BlogPostItem post) {
 						onBlogPostLoaded(post);
 					}
+
 					@Override
 					public void onExceptionUi(DbException exception) {
-						onBlogPostLoadException(exception);
+						// TODO: Decide how to handle errors in the UI
+						finish();
 					}
 				});
 	}
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogPostPagerFragment.java b/briar-android/src/org/briarproject/android/blogs/BlogPostPagerFragment.java
deleted file mode 100644
index c960545cb9c53304bd5241450de0aec715ebc82b..0000000000000000000000000000000000000000
--- a/briar-android/src/org/briarproject/android/blogs/BlogPostPagerFragment.java
+++ /dev/null
@@ -1,96 +0,0 @@
-package org.briarproject.android.blogs;
-
-import android.os.Bundle;
-import android.support.annotation.UiThread;
-import android.support.v4.app.Fragment;
-
-import org.briarproject.android.ActivityComponent;
-import org.briarproject.android.controller.handler.UiResultExceptionHandler;
-import org.briarproject.api.blogs.BlogPostHeader;
-import org.briarproject.api.db.DbException;
-import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
-import org.briarproject.api.sync.GroupId;
-import org.briarproject.api.sync.MessageId;
-
-import java.util.Collection;
-
-import javax.inject.Inject;
-
-@UiThread
-@MethodsNotNullByDefault
-@ParametersNotNullByDefault
-public class BlogPostPagerFragment extends BasePostPagerFragment {
-
-	private static final String TAG = BlogPostPagerFragment.class.getName();
-
-	@Inject
-	BlogController blogController;
-
-	static BlogPostPagerFragment newInstance(MessageId postId) {
-		BlogPostPagerFragment f = new BlogPostPagerFragment();
-
-		Bundle args = new Bundle();
-		args.putByteArray(POST_ID, postId.getBytes());
-		f.setArguments(args);
-
-		return f;
-	}
-
-	@Override
-	public void injectFragment(ActivityComponent component) {
-		component.inject(this);
-		blogController.setBlogListener(this);
-	}
-
-	@Override
-	public String getUniqueTag() {
-		return TAG;
-	}
-
-	@Override
-	Fragment createFragment(final GroupId g, final MessageId m) {
-		return BlogPostFragment.newInstance(m);
-	}
-
-	@Override
-	void loadBlogPosts(final MessageId select) {
-		blogController.loadBlogPosts(
-				new UiResultExceptionHandler<Collection<BlogPostItem>, DbException>(
-						this) {
-					@Override
-					public void onResultUi(Collection<BlogPostItem> posts) {
-						onBlogPostsLoaded(select, posts);
-					}
-
-					@Override
-					public void onExceptionUi(DbException exception) {
-						// TODO: Decide how to handle errors in the UI
-						finish();
-					}
-				});
-	}
-
-	@Override
-	void loadBlogPost(BlogPostHeader header) {
-		blogController.loadBlogPost(header,
-				new UiResultExceptionHandler<BlogPostItem, DbException>(
-						this) {
-					@Override
-					public void onResultUi(BlogPostItem post) {
-						onBlogPostLoaded(post);
-					}
-
-					@Override
-					public void onExceptionUi(DbException exception) {
-						// TODO: Decide how to handle errors in the UI
-						finish();
-					}
-				});
-	}
-
-	@Override
-	public void onBlogRemoved() {
-		finish();
-	}
-}
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java b/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java
index 5274c2379a6b66357b98cfda1d11daf51ffa3412..d212d483b97e7e211a03004eceb540d51ba9bdb0 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogPostViewHolder.java
@@ -30,7 +30,7 @@ import static android.support.v4.app.ActivityOptionsCompat.makeSceneTransitionAn
 import static android.view.View.GONE;
 import static android.view.View.VISIBLE;
 import static org.briarproject.android.BriarActivity.GROUP_ID;
-import static org.briarproject.android.blogs.BasePostPagerFragment.POST_ID;
+import static org.briarproject.android.blogs.BasePostFragment.POST_ID;
 import static org.briarproject.android.util.AndroidUtils.TEASER_LENGTH;
 import static org.briarproject.android.util.AndroidUtils.getSpanned;
 import static org.briarproject.android.util.AndroidUtils.getTeaser;
diff --git a/briar-android/src/org/briarproject/android/blogs/FeedFragment.java b/briar-android/src/org/briarproject/android/blogs/FeedFragment.java
index d3bfd765a2659005b18db3d03168ad03ddf237a4..e829c08962d5ca0193203f01c3f3dd381b91e946 100644
--- a/briar-android/src/org/briarproject/android/blogs/FeedFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/FeedFragment.java
@@ -223,8 +223,8 @@ public class FeedFragment extends BaseFragment implements
 
 	@Override
 	public void onBlogPostClick(BlogPostItem post) {
-		FeedPostPagerFragment f = FeedPostPagerFragment
-				.newInstance(post.getId());
+		FeedPostFragment f =
+				FeedPostFragment.newInstance(post.getGroupId(), post.getId());
 		getActivity().getSupportFragmentManager().beginTransaction()
 				.replace(R.id.content_fragment, f, f.getUniqueTag())
 				.addToBackStack(f.getUniqueTag())
diff --git a/briar-android/src/org/briarproject/android/blogs/FeedPostFragment.java b/briar-android/src/org/briarproject/android/blogs/FeedPostFragment.java
index 294738a1cee61e1e000179177b958045c3d1c5df..73ec81a3ea0d7784ec97824d00ef206dce4ff0a0 100644
--- a/briar-android/src/org/briarproject/android/blogs/FeedPostFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/FeedPostFragment.java
@@ -18,14 +18,13 @@ import org.briarproject.api.sync.MessageId;
 import javax.inject.Inject;
 
 import static org.briarproject.android.BriarActivity.GROUP_ID;
-import static org.briarproject.android.blogs.BasePostPagerFragment.POST_ID;
 
 @UiThread
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
 public class FeedPostFragment extends BasePostFragment {
 
-	public final static String TAG = FeedPostFragment.class.getName();
+	private static final String TAG = FeedPostFragment.class.getName();
 
 	private MessageId postId;
 	private GroupId blogId;
@@ -62,6 +61,11 @@ public class FeedPostFragment extends BasePostFragment {
 		return super.onCreateView(inflater, container, savedInstanceState);
 	}
 
+	@Override
+	public String getUniqueTag() {
+		return TAG;
+	}
+
 	@Override
 	public void injectFragment(ActivityComponent component) {
 		component.inject(this);
@@ -77,16 +81,12 @@ public class FeedPostFragment extends BasePostFragment {
 					public void onResultUi(BlogPostItem post) {
 						onBlogPostLoaded(post);
 					}
+
 					@Override
 					public void onExceptionUi(DbException exception) {
-						onBlogPostLoadException(exception);
+						// TODO: Decide how to handle errors in the UI
 					}
 				});
 	}
 
-	@Override
-	public String getUniqueTag() {
-		return TAG;
-	}
-
 }
diff --git a/briar-android/src/org/briarproject/android/blogs/FeedPostPagerFragment.java b/briar-android/src/org/briarproject/android/blogs/FeedPostPagerFragment.java
deleted file mode 100644
index b8fbd8898896fdb27ee7a0ee741822979d1868e5..0000000000000000000000000000000000000000
--- a/briar-android/src/org/briarproject/android/blogs/FeedPostPagerFragment.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package org.briarproject.android.blogs;
-
-import android.os.Bundle;
-import android.support.annotation.UiThread;
-import android.support.v4.app.Fragment;
-
-import org.briarproject.android.ActivityComponent;
-import org.briarproject.android.blogs.FeedController.FeedListener;
-import org.briarproject.android.controller.handler.UiResultExceptionHandler;
-import org.briarproject.api.blogs.BlogPostHeader;
-import org.briarproject.api.db.DbException;
-import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
-import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
-import org.briarproject.api.sync.GroupId;
-import org.briarproject.api.sync.MessageId;
-
-import java.util.Collection;
-
-import javax.inject.Inject;
-
-@UiThread
-@MethodsNotNullByDefault
-@ParametersNotNullByDefault
-public class FeedPostPagerFragment extends BasePostPagerFragment
-	implements FeedListener {
-
-	private static final String TAG = FeedPostPagerFragment.class.getName();
-
-	@Inject
-	FeedController feedController;
-
-	static FeedPostPagerFragment newInstance(MessageId postId) {
-		FeedPostPagerFragment f = new FeedPostPagerFragment();
-
-		Bundle args = new Bundle();
-		args.putByteArray(POST_ID, postId.getBytes());
-		f.setArguments(args);
-
-		return f;
-	}
-
-	@Override
-	public void injectFragment(ActivityComponent component) {
-		component.inject(this);
-		feedController.setFeedListener(this);
-	}
-
-	@Override
-	public String getUniqueTag() {
-		return TAG;
-	}
-
-	@Override
-	public void onStart() {
-		super.onStart();
-		feedController.onStart();
-	}
-
-	@Override
-	public void onStop() {
-		super.onStop();
-		feedController.onStop();
-	}
-
-	@Override
-	Fragment createFragment(GroupId g, MessageId m) {
-		return FeedPostFragment.newInstance(g, m);
-	}
-
-	@Override
-	void loadBlogPosts(final MessageId select) {
-		feedController.loadBlogPosts(
-				new UiResultExceptionHandler<Collection<BlogPostItem>, DbException>(
-						this) {
-					@Override
-					public void onResultUi(Collection<BlogPostItem> posts) {
-						onBlogPostsLoaded(select, posts);
-					}
-
-					@Override
-					public void onExceptionUi(DbException exception) {
-						// TODO: Decide how to handle errors in the UI
-					}
-				});
-	}
-
-	@Override
-	void loadBlogPost(BlogPostHeader header) {
-		feedController.loadBlogPost(header,
-				new UiResultExceptionHandler<BlogPostItem, DbException>(
-						this) {
-					@Override
-					public void onResultUi(BlogPostItem post) {
-						onBlogPostLoaded(post);
-					}
-
-					@Override
-					public void onExceptionUi(DbException exception) {
-						// TODO: Decide how to handle errors in the UI
-					}
-				});
-	}
-
-	@Override
-	public void onBlogAdded() {
-		loadBlogPosts();
-	}
-
-	@Override
-	public void onBlogRemoved() {
-		loadBlogPosts();
-	}
-}
diff --git a/briar-android/src/org/briarproject/android/blogs/ReblogActivity.java b/briar-android/src/org/briarproject/android/blogs/ReblogActivity.java
index 4489f5c730f20e4302e31f22fa692a4d1c734865..8f04dc1db2df71ed1a422e5c822e9503721e911d 100644
--- a/briar-android/src/org/briarproject/android/blogs/ReblogActivity.java
+++ b/briar-android/src/org/briarproject/android/blogs/ReblogActivity.java
@@ -15,7 +15,7 @@ import org.briarproject.android.fragment.BaseFragment.BaseFragmentListener;
 import org.briarproject.api.sync.GroupId;
 import org.briarproject.api.sync.MessageId;
 
-import static org.briarproject.android.blogs.BasePostPagerFragment.POST_ID;
+import static org.briarproject.android.blogs.BasePostFragment.POST_ID;
 
 public class ReblogActivity extends BriarActivity implements
 		BaseFragmentListener {
diff --git a/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java b/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java
index 3f83f380feafc063506f99e3ed40b5f018a0088e..1c9655336a10559d6198294b4f53eb1c769d12b6 100644
--- a/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/ReblogFragment.java
@@ -28,7 +28,7 @@ import static android.view.View.GONE;
 import static android.view.View.INVISIBLE;
 import static android.view.View.VISIBLE;
 import static org.briarproject.android.BriarActivity.GROUP_ID;
-import static org.briarproject.android.blogs.BasePostPagerFragment.POST_ID;
+import static org.briarproject.android.blogs.BasePostFragment.POST_ID;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault