diff --git a/briar-android/src/org/briarproject/android/AndroidComponent.java b/briar-android/src/org/briarproject/android/AndroidComponent.java
index e8e23988297ab64f8563efcbc09b17c66834eb6c..ceb3cd9e0b94be42eaa86acd8e2e24df8658b982 100644
--- a/briar-android/src/org/briarproject/android/AndroidComponent.java
+++ b/briar-android/src/org/briarproject/android/AndroidComponent.java
@@ -36,6 +36,7 @@ import org.briarproject.api.plugins.ConnectionRegistry;
 import org.briarproject.api.plugins.PluginManager;
 import org.briarproject.api.privategroup.PrivateGroupManager;
 import org.briarproject.api.settings.SettingsManager;
+import org.briarproject.api.system.Clock;
 import org.briarproject.plugins.AndroidPluginsModule;
 import org.briarproject.system.AndroidSystemModule;
 
@@ -121,6 +122,8 @@ public interface AndroidComponent extends CoreEagerSingletons {
 
 	FeedManager feedManager();
 
+	Clock clock();
+
 	@IoExecutor
 	Executor ioExecutor();
 
diff --git a/briar-android/src/org/briarproject/android/forum/ForumControllerImpl.java b/briar-android/src/org/briarproject/android/forum/ForumControllerImpl.java
index 21a19cad4107f1b150323a6cc0b36c26b6662d10..fa62f1b292740855de64345b1b2e9866c0404dca 100644
--- a/briar-android/src/org/briarproject/android/forum/ForumControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/forum/ForumControllerImpl.java
@@ -19,6 +19,7 @@ import org.briarproject.api.identity.IdentityManager;
 import org.briarproject.api.identity.LocalAuthor;
 import org.briarproject.api.lifecycle.LifecycleManager;
 import org.briarproject.api.sync.MessageId;
+import org.briarproject.api.system.Clock;
 import org.briarproject.util.StringUtils;
 
 import java.util.Collection;
@@ -41,9 +42,9 @@ public class ForumControllerImpl
 			LifecycleManager lifecycleManager, IdentityManager identityManager,
 			@CryptoExecutor Executor cryptoExecutor,
 			ForumManager forumManager, EventBus eventBus,
-			AndroidNotificationManager notificationManager) {
+			AndroidNotificationManager notificationManager, Clock clock) {
 		super(dbExecutor, lifecycleManager, identityManager, cryptoExecutor,
-				eventBus, notificationManager);
+				eventBus, notificationManager, clock);
 		this.forumManager = forumManager;
 	}
 
diff --git a/briar-android/src/org/briarproject/android/privategroup/conversation/GroupControllerImpl.java b/briar-android/src/org/briarproject/android/privategroup/conversation/GroupControllerImpl.java
index 87bef06bfe692bdd2331836f1c58c6b0a672fde6..fb0cd8ac59136aa84e4fc01910f5c5ecffb5072a 100644
--- a/briar-android/src/org/briarproject/android/privategroup/conversation/GroupControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/privategroup/conversation/GroupControllerImpl.java
@@ -19,6 +19,7 @@ import org.briarproject.api.privategroup.GroupMessageHeader;
 import org.briarproject.api.privategroup.PrivateGroup;
 import org.briarproject.api.privategroup.PrivateGroupManager;
 import org.briarproject.api.sync.MessageId;
+import org.briarproject.api.system.Clock;
 
 import java.util.Collection;
 import java.util.concurrent.Executor;
@@ -40,9 +41,9 @@ public class GroupControllerImpl
 			LifecycleManager lifecycleManager, IdentityManager identityManager,
 			@CryptoExecutor Executor cryptoExecutor,
 			PrivateGroupManager privateGroupManager, EventBus eventBus,
-			AndroidNotificationManager notificationManager) {
+			AndroidNotificationManager notificationManager, Clock clock) {
 		super(dbExecutor, lifecycleManager, identityManager, cryptoExecutor,
-				eventBus, notificationManager);
+				eventBus, notificationManager, clock);
 		this.privateGroupManager = privateGroupManager;
 	}
 
diff --git a/briar-android/src/org/briarproject/android/privategroup/list/GroupViewHolder.java b/briar-android/src/org/briarproject/android/privategroup/list/GroupViewHolder.java
index 898e81fe29730d6320d88280a71cac31276a8b6e..c7d59dd1ff12611509016cd1d77a99d17dffa4dd 100644
--- a/briar-android/src/org/briarproject/android/privategroup/list/GroupViewHolder.java
+++ b/briar-android/src/org/briarproject/android/privategroup/list/GroupViewHolder.java
@@ -52,8 +52,6 @@ class GroupViewHolder extends RecyclerView.ViewHolder {
 
 	void bindView(final Context ctx, final GroupItem group,
 			@NotNull final OnGroupRemoveClickListener listener) {
-		if (group == null) return;
-
 		// Avatar
 		avatar.setText(group.getName().substring(0, 1));
 		avatar.setBackgroundBytes(group.getId().getBytes());
diff --git a/briar-android/src/org/briarproject/android/threaded/ThreadListControllerImpl.java b/briar-android/src/org/briarproject/android/threaded/ThreadListControllerImpl.java
index 02e6bfc66f1bdb7446cd1893d1eb7c6d22398df1..ac968758fc0dd462eeb2770d6b5bf932a227787c 100644
--- a/briar-android/src/org/briarproject/android/threaded/ThreadListControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/threaded/ThreadListControllerImpl.java
@@ -22,6 +22,7 @@ import org.briarproject.api.identity.LocalAuthor;
 import org.briarproject.api.lifecycle.LifecycleManager;
 import org.briarproject.api.sync.GroupId;
 import org.briarproject.api.sync.MessageId;
+import org.briarproject.api.system.Clock;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -46,6 +47,7 @@ public abstract class ThreadListControllerImpl<G extends NamedGroup, I extends T
 	private final Executor cryptoExecutor;
 	protected final AndroidNotificationManager notificationManager;
 	private final EventBus eventBus;
+	private final Clock clock;
 
 	private final Map<MessageId, String> bodyCache =
 			new ConcurrentHashMap<>();
@@ -57,12 +59,13 @@ public abstract class ThreadListControllerImpl<G extends NamedGroup, I extends T
 	protected ThreadListControllerImpl(@DatabaseExecutor Executor dbExecutor,
 			LifecycleManager lifecycleManager, IdentityManager identityManager,
 			@CryptoExecutor Executor cryptoExecutor, EventBus eventBus,
-			AndroidNotificationManager notificationManager) {
+			AndroidNotificationManager notificationManager, Clock clock) {
 		super(dbExecutor, lifecycleManager);
 		this.identityManager = identityManager;
 		this.cryptoExecutor = cryptoExecutor;
 		this.eventBus = eventBus;
 		this.notificationManager = notificationManager;
+		this.clock = clock;
 	}
 
 	@Override
@@ -250,7 +253,7 @@ public abstract class ThreadListControllerImpl<G extends NamedGroup, I extends T
 					LocalAuthor author = identityManager.getLocalAuthor();
 					long timestamp = getLatestTimestamp();
 					timestamp =
-							Math.max(timestamp, System.currentTimeMillis());
+							Math.max(timestamp, clock.currentTimeMillis());
 					createMessage(body, timestamp, parentId, author,
 							handler);
 				} catch (DbException e) {
@@ -343,9 +346,6 @@ public abstract class ThreadListControllerImpl<G extends NamedGroup, I extends T
 		return entries;
 	}
 
-	/**
-	 * When building the item, the body can be assumed to be cached
-	 */
 	protected abstract I buildItem(H header, String body);
 
 	protected GroupId getGroupId() {