diff --git a/briar-android/src/org/briarproject/android/AndroidComponent.java b/briar-android/src/org/briarproject/android/AndroidComponent.java
index 3e59233be3dc1542bfa2b4867cb90197cc5c6e39..24f4c4103c915f98c73dbe9aa2644b8573371a46 100644
--- a/briar-android/src/org/briarproject/android/AndroidComponent.java
+++ b/briar-android/src/org/briarproject/android/AndroidComponent.java
@@ -5,7 +5,6 @@ import org.briarproject.CoreModule;
 import org.briarproject.android.api.AndroidExecutor;
 import org.briarproject.android.api.AndroidNotificationManager;
 import org.briarproject.android.api.ReferenceManager;
-import org.briarproject.android.blogs.BlogPersistentData;
 import org.briarproject.android.forum.ForumPersistentData;
 import org.briarproject.android.report.BriarReportSender;
 import org.briarproject.api.blogs.BlogManager;
@@ -91,8 +90,6 @@ public interface AndroidComponent extends CoreEagerSingletons {
 
 	PrivateMessageFactory privateMessageFactory();
 
-	TransportPropertyManager transportPropertyManager();
-
 	ForumManager forumManager();
 
 	ForumSharingManager forumSharingManager();
@@ -119,8 +116,6 @@ public interface AndroidComponent extends CoreEagerSingletons {
 
 	ForumPersistentData forumPersistentData();
 
-	BlogPersistentData blogPersistentData();
-
 	@IoExecutor
 	Executor ioExecutor();
 
diff --git a/briar-android/src/org/briarproject/android/AppModule.java b/briar-android/src/org/briarproject/android/AppModule.java
index 825e639c6c69ab442b1d85d388b2769e68920733..766a79362d465e72e8fc9a723f1a3ba59a619659 100644
--- a/briar-android/src/org/briarproject/android/AppModule.java
+++ b/briar-android/src/org/briarproject/android/AppModule.java
@@ -4,7 +4,6 @@ import android.app.Application;
 
 import org.briarproject.android.api.AndroidNotificationManager;
 import org.briarproject.android.api.ReferenceManager;
-import org.briarproject.android.blogs.BlogPersistentData;
 import org.briarproject.android.forum.ForumPersistentData;
 import org.briarproject.api.crypto.CryptoComponent;
 import org.briarproject.api.crypto.PublicKey;
@@ -65,13 +64,13 @@ public class AppModule {
 	}
 
 	@Provides
-	public UiCallback provideUICallback() {
+	UiCallback provideUICallback() {
 		return uiCallback;
 	}
 
 	@Provides
 	@Singleton
-	public DatabaseConfig provideDatabaseConfig(Application app) {
+	DatabaseConfig provideDatabaseConfig(Application app) {
 		final File dir = app.getApplicationContext().getDir("db", MODE_PRIVATE);
 		return new DatabaseConfig() {
 
@@ -103,7 +102,7 @@ public class AppModule {
 
 	@Provides
 	@Singleton
-	public DevConfig provideDevConfig(final CryptoComponent crypto) {
+	DevConfig provideDevConfig(final CryptoComponent crypto) {
 		return new DevConfig() {
 
 			@Override
@@ -144,10 +143,4 @@ public class AppModule {
 	ForumPersistentData provideForumPersistence() {
 		return new ForumPersistentData();
 	}
-
-	@Provides
-	@Singleton
-	BlogPersistentData provideBlogPersistence() {
-		return new BlogPersistentData();
-	}
 }
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogController.java b/briar-android/src/org/briarproject/android/blogs/BlogController.java
index a805c2d344e52c6295d60b90e7a79b563604583e..b681c2710fd4bdb6333de478e53c83d2a67cf7aa 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogController.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogController.java
@@ -3,7 +3,7 @@ package org.briarproject.android.blogs;
 import android.support.annotation.Nullable;
 
 import org.briarproject.android.controller.ActivityLifecycleController;
-import org.briarproject.android.controller.handler.UiResultHandler;
+import org.briarproject.android.controller.handler.ResultHandler;
 import org.briarproject.api.sync.GroupId;
 import org.briarproject.api.sync.MessageId;
 
@@ -12,7 +12,7 @@ import java.util.TreeSet;
 public interface BlogController extends ActivityLifecycleController {
 
 	void loadBlog(final GroupId groupId, final boolean reload,
-			final UiResultHandler<Boolean> resultHandler);
+			final ResultHandler<Boolean> resultHandler);
 
 	TreeSet<BlogPostItem> getBlogPosts();
 
@@ -22,7 +22,7 @@ public interface BlogController extends ActivityLifecycleController {
 	@Nullable
 	MessageId getBlogPostId(int position);
 
-	void deleteBlog(final UiResultHandler<Boolean> resultHandler);
+	void deleteBlog(final ResultHandler<Boolean> resultHandler);
 
 	interface BlogPostListener {
 		void onBlogPostAdded(final BlogPostItem post, final boolean local);
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java b/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
index d2898602c68dd664a4709cd761667b7d4e01a1dd..6bb11f312a21245593d2f4151f355fa0c48cd212 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
@@ -4,7 +4,7 @@ import android.app.Activity;
 import android.support.annotation.Nullable;
 
 import org.briarproject.android.controller.DbControllerImpl;
-import org.briarproject.android.controller.handler.UiResultHandler;
+import org.briarproject.android.controller.handler.ResultHandler;
 import org.briarproject.api.blogs.Blog;
 import org.briarproject.api.blogs.BlogManager;
 import org.briarproject.api.blogs.BlogPostHeader;
@@ -39,10 +39,10 @@ public class BlogControllerImpl extends DbControllerImpl
 	protected volatile BlogManager blogManager;
 	@Inject
 	protected volatile EventBus eventBus;
-	@Inject
-	protected BlogPersistentData data;
 
 	private volatile BlogPostListener listener;
+	private volatile GroupId groupId = null;
+	private volatile TreeSet<BlogPostItem> posts = null;
 
 	@Inject
 	BlogControllerImpl() {
@@ -71,22 +71,23 @@ public class BlogControllerImpl extends DbControllerImpl
 
 	@Override
 	public void onActivityDestroy() {
-		if (activity.isFinishing()) {
-			data.clearAll();
-		}
 	}
 
 	@Override
 	public void eventOccurred(Event e) {
 		if (e instanceof BlogPostAddedEvent) {
 			final BlogPostAddedEvent m = (BlogPostAddedEvent) e;
-			if (m.getGroupId().equals(data.getGroupId())) {
+			if (m.getGroupId().equals(groupId)) {
 				LOG.info("New blog post added");
+				if (posts == null) {
+					LOG.info("Posts have not loaded, yet");
+					return;
+				}
 				final BlogPostHeader header = m.getHeader();
 				try {
 					final byte[] body = blogManager.getPostBody(header.getId());
 					final BlogPostItem post = new BlogPostItem(header, body);
-					data.addPost(post);
+					posts.add(post);
 					listener.onBlogPostAdded(post, m.isLocal());
 				} catch (DbException ex) {
 					if (LOG.isLoggable(WARNING))
@@ -95,7 +96,7 @@ public class BlogControllerImpl extends DbControllerImpl
 			}
 		} else if (e instanceof GroupRemovedEvent) {
 			GroupRemovedEvent s = (GroupRemovedEvent) e;
-			if (s.getGroup().getId().equals(data.getGroupId())) {
+			if (s.getGroup().getId().equals(groupId)) {
 				LOG.info("Blog removed");
 				activity.runOnUiThread(new Runnable() {
 					@Override
@@ -108,27 +109,27 @@ public class BlogControllerImpl extends DbControllerImpl
 	}
 
 	@Override
-	public void loadBlog(final GroupId groupId, final boolean reload,
-			final UiResultHandler<Boolean> resultHandler) {
+	public void loadBlog(final GroupId g, final boolean reload,
+			final ResultHandler<Boolean> resultHandler) {
 
 		LOG.info("Loading blog...");
 		runOnDbThread(new Runnable() {
 			@Override
 			public void run() {
 				try {
-					if (reload || data.getGroupId() == null ||
-							!data.getGroupId().equals(groupId)) {
-						data.setGroupId(groupId);
+					if (reload || posts == null) {
+						groupId = g;
+						posts = new TreeSet<>();
 						// load blog posts
 						long now = System.currentTimeMillis();
-						Collection<BlogPostItem> posts = new ArrayList<>();
+						Collection<BlogPostItem> newPosts = new ArrayList<>();
 						Collection<BlogPostHeader> header =
-								blogManager.getPostHeaders(groupId);
+								blogManager.getPostHeaders(g);
 						for (BlogPostHeader h : header) {
 							byte[] body = blogManager.getPostBody(h.getId());
-							posts.add(new BlogPostItem(h, body));
+							newPosts.add(new BlogPostItem(h, body));
 						}
-						data.setPosts(posts);
+						posts.addAll(newPosts);
 						long duration = System.currentTimeMillis() - now;
 						if (LOG.isLoggable(INFO))
 							LOG.info("Post header load took " + duration +
@@ -145,14 +146,16 @@ public class BlogControllerImpl extends DbControllerImpl
 	}
 
 	@Override
+	@Nullable
 	public TreeSet<BlogPostItem> getBlogPosts() {
-		return data.getBlogPosts();
+		return posts;
 	}
 
 	@Override
 	@Nullable
 	public BlogPostItem getBlogPost(MessageId id) {
-		for (BlogPostItem item : getBlogPosts()) {
+		if (posts == null) return null;
+		for (BlogPostItem item : posts) {
 			if (item.getId().equals(id)) return item;
 		}
 		return null;
@@ -161,8 +164,9 @@ public class BlogControllerImpl extends DbControllerImpl
 	@Override
 	@Nullable
 	public MessageId getBlogPostId(int position) {
+		if (posts == null) return null;
 		int i = 0;
-		for (BlogPostItem post : getBlogPosts()) {
+		for (BlogPostItem post : posts) {
 			if (i == position) return post.getId();
 			i++;
 		}
@@ -170,16 +174,16 @@ public class BlogControllerImpl extends DbControllerImpl
 	}
 
 	@Override
-	public void deleteBlog(final UiResultHandler<Boolean> resultHandler) {
+	public void deleteBlog(final ResultHandler<Boolean> resultHandler) {
 		runOnDbThread(new Runnable() {
 			@Override
 			public void run() {
-				if (data.getGroupId() == null) {
+				if (groupId == null) {
 					resultHandler.onResult(false);
 					return;
 				}
 				try {
-					Blog b = blogManager.getBlog(data.getGroupId());
+					Blog b = blogManager.getBlog(groupId);
 					blogManager.removeBlog(b);
 					resultHandler.onResult(true);
 				} catch (DbException e) {
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogPersistentData.java b/briar-android/src/org/briarproject/android/blogs/BlogPersistentData.java
deleted file mode 100644
index a2834c809cd5afc0643be76ccdb7d6d5b3de1025..0000000000000000000000000000000000000000
--- a/briar-android/src/org/briarproject/android/blogs/BlogPersistentData.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package org.briarproject.android.blogs;
-
-import org.briarproject.api.sync.GroupId;
-
-import java.util.Collection;
-import java.util.TreeSet;
-
-import javax.inject.Inject;
-
-/**
- * This class is a singleton that defines the data that should persist, i.e.
- * still be present in memory after activity restarts. This class is not thread
- * safe.
- */
-public class BlogPersistentData {
-
-	private volatile GroupId groupId;
-	private volatile TreeSet<BlogPostItem> posts = new TreeSet<>();
-
-	public BlogPersistentData() {
-
-	}
-
-	public void setGroupId(GroupId groupId) {
-		this.groupId = groupId;
-	}
-
-	public GroupId getGroupId() {
-		return groupId;
-	}
-
-	public void setPosts(Collection<BlogPostItem> posts) {
-		this.posts.clear();
-		this.posts.addAll(posts);
-	}
-
-	void addPost(BlogPostItem post) {
-		posts.add(post);
-	}
-
-	TreeSet<BlogPostItem> getBlogPosts() {
-		return posts;
-	}
-
-	void clearAll() {
-		groupId = null;
-		posts.clear();
-	}
-}