diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/LifecycleManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/LifecycleManager.java
index 5a036a3b6cc2005a36c28bbaacb67638256941a1..d3cd1bc245f33b855d522f47b32f0501689668b7 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/LifecycleManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/lifecycle/LifecycleManager.java
@@ -43,17 +43,20 @@ public interface LifecycleManager {
 	}
 
 	/**
-	 * Registers a {@link Service} to be started and stopped.
+	 * Registers a {@link Service} to be started and stopped. This method
+	 * should be called before {@link #startServices(String)}.
 	 */
 	void registerService(Service s);
 
 	/**
-	 * Registers a {@link Client} to be started.
+	 * Registers a {@link Client} to be started. This method should be called
+	 * before {@link #startServices(String)}.
 	 */
 	void registerClient(Client c);
 
 	/**
-	 * Registers an {@link ExecutorService} to be shut down.
+	 * Registers an {@link ExecutorService} to be shut down. This method
+	 * should be called before {@link #startServices(String)}.
 	 */
 	void registerForShutdown(ExecutorService e);
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ClientVersioningManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ClientVersioningManager.java
index a4492337318e32fe91d6e3e4babc64e98fce3c21..8a374b288c3d73e43f2a8fda1ee245de183d1f78 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ClientVersioningManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ClientVersioningManager.java
@@ -3,6 +3,7 @@ package org.briarproject.bramble.api.sync;
 import org.briarproject.bramble.api.contact.Contact;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Transaction;
+import org.briarproject.bramble.api.lifecycle.LifecycleManager;
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.Group.Visibility;
 
@@ -19,8 +20,17 @@ public interface ClientVersioningManager {
 	 */
 	int CLIENT_VERSION = 0;
 
+	/**
+	 * Registers a client that will be advertised to contacts. This method
+	 * should be called before {@link LifecycleManager#startServices(String)}.
+	 */
 	void registerClient(ClientId clientId, int clientVersion);
 
+	/**
+	 * Registers a hook that will be called when the visibility of the given
+	 * client changes. This method should be called before
+	 * {@link LifecycleManager#startServices(String)}.
+	 */
 	void registerClientVersioningHook(ClientId clientId, int clientVersion,
 			ClientVersioningHook hook);
 
diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ValidationManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ValidationManager.java
index bc73714b785accb507afd689b5e8d9b3008ef688..56571ad97603496f3ddea9a830f0066ee9335673 100644
--- a/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ValidationManager.java
+++ b/bramble-api/src/main/java/org/briarproject/bramble/api/sync/ValidationManager.java
@@ -3,6 +3,7 @@ package org.briarproject.bramble.api.sync;
 import org.briarproject.bramble.api.db.DbException;
 import org.briarproject.bramble.api.db.Metadata;
 import org.briarproject.bramble.api.db.Transaction;
+import org.briarproject.bramble.api.lifecycle.LifecycleManager;
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 
 /**
@@ -33,14 +34,17 @@ public interface ValidationManager {
 	}
 
 	/**
-	 * Sets the message validator for the given client.
+	 * Registers the message validator for the given client. This method
+	 * should be called before {@link LifecycleManager#startServices(String)}.
 	 */
 	void registerMessageValidator(ClientId c, int clientVersion,
 			MessageValidator v);
 
 	/**
-	 * Sets the incoming message hook for the given client. The hook will be
-	 * called once for each incoming message that passes validation.
+	 * Registers the incoming message hook for the given client. The hook will
+	 * be called once for each incoming message that passes validation. This
+	 * method should be called before
+	 * {@link LifecycleManager#startServices(String)}.
 	 */
 	void registerIncomingMessageHook(ClientId c, int clientVersion,
 			IncomingMessageHook hook);