From 79d5612645743c524d230ed5c0dbed60d600e67d Mon Sep 17 00:00:00 2001
From: akwizgran <michael@briarproject.org>
Date: Wed, 10 Oct 2018 10:40:23 +0100
Subject: [PATCH] Use "text" to refer to message text.

---
 .../android/blog/BaseControllerImpl.java      | 34 ++++----
 .../briar/android/blog/BlogCommentItem.java   |  4 +-
 .../briar/android/blog/BlogPostItem.java      | 10 +--
 .../android/blog/BlogPostViewHolder.java      | 28 +++---
 .../android/blog/WriteBlogPostActivity.java   | 14 +--
 .../android/contact/ConversationActivity.java | 48 +++++-----
 .../android/contact/ConversationItem.java     | 14 +--
 .../contact/ConversationItemViewHolder.java   |  4 +-
 .../ConversationNoticeInViewHolder.java       |  6 +-
 .../contact/ConversationNoticeOutItem.java    |  2 +-
 .../ConversationNoticeOutViewHolder.java      |  6 +-
 .../contact/ConversationRequestItem.java      |  2 +-
 .../android/contact/ConversationVisitor.java  | 14 +--
 .../briar/android/forum/ForumActivity.java    |  6 +-
 .../android/forum/ForumControllerImpl.java    | 24 ++---
 .../briar/android/forum/ForumItem.java        |  4 +-
 .../IntroductionMessageFragment.java          | 14 +--
 .../conversation/GroupActivity.java           |  6 +-
 .../conversation/GroupControllerImpl.java     | 22 ++---
 .../creation/CreateGroupController.java       |  2 +-
 .../creation/CreateGroupControllerImpl.java   | 14 +--
 .../creation/GroupInviteActivity.java         | 10 +--
 .../android/sharing/BaseMessageFragment.java  | 16 ++--
 .../briar/android/sharing/ShareActivity.java  |  6 +-
 .../android/sharing/ShareBlogActivity.java    | 10 +--
 .../android/sharing/ShareBlogController.java  |  2 +-
 .../sharing/ShareBlogControllerImpl.java      |  6 +-
 .../android/sharing/ShareForumActivity.java   | 10 +--
 .../android/sharing/ShareForumController.java |  2 +-
 .../sharing/ShareForumControllerImpl.java     |  6 +-
 .../android/threaded/ThreadListActivity.java  |  6 +-
 .../threaded/ThreadListController.java        |  2 +-
 .../threaded/ThreadListControllerImpl.java    | 20 ++---
 .../briar/android/util/UiUtils.java           |  6 +-
 .../res/layout/activity_write_blog_post.xml   |  2 +-
 .../res/layout/list_item_blog_comment.xml     |  2 +-
 .../main/res/layout/list_item_blog_post.xml   |  4 +-
 .../android/forum/ForumActivityTest.java      |  6 +-
 .../briar/api/blog/BlogConstants.java         |  8 +-
 .../briar/api/blog/BlogInvitationRequest.java |  4 +-
 .../briar/api/blog/BlogManager.java           |  4 +-
 .../briar/api/blog/BlogPostFactory.java       |  2 +-
 .../briar/api/forum/ForumConstants.java       |  4 +-
 .../api/forum/ForumInvitationRequest.java     |  4 +-
 .../briar/api/forum/ForumManager.java         |  6 +-
 .../briar/api/forum/ForumPostFactory.java     |  2 +-
 .../forum/event/ForumPostReceivedEvent.java   | 10 +--
 .../introduction/IntroductionConstants.java   |  2 +-
 .../api/introduction/IntroductionManager.java |  2 +-
 .../api/introduction/IntroductionRequest.java |  4 +-
 .../api/messaging/ConversationManager.java    |  2 +-
 .../api/messaging/MessagingConstants.java     |  4 +-
 .../briar/api/messaging/MessagingManager.java |  4 +-
 .../api/messaging/PrivateMessageFactory.java  |  2 +-
 .../briar/api/messaging/PrivateRequest.java   | 10 +--
 .../api/privategroup/GroupMessageFactory.java |  4 +-
 .../privategroup/PrivateGroupConstants.java   |  8 +-
 .../api/privategroup/PrivateGroupManager.java |  4 +-
 .../event/GroupMessageAddedEvent.java         | 10 +--
 .../invitation/GroupInvitationManager.java    |  2 +-
 .../invitation/GroupInvitationRequest.java    |  4 +-
 .../briar/api/sharing/InvitationRequest.java  |  4 +-
 .../briar/api/sharing/SharingConstants.java   |  5 +-
 .../briar/api/sharing/SharingManager.java     |  6 +-
 .../briar/api/test/TestDataCreator.java       |  2 +-
 .../briar/blog/BlogManagerImpl.java           | 11 +--
 .../briar/blog/BlogPostFactoryImpl.java       | 24 ++---
 .../briar/blog/BlogPostValidator.java         | 87 ++++++++++---------
 .../briar/feed/FeedManagerImpl.java           | 15 ++--
 .../briar/forum/ForumManagerImpl.java         | 16 ++--
 .../briar/forum/ForumPostFactoryImpl.java     | 12 +--
 .../briar/forum/ForumPostValidator.java       | 20 +++--
 .../introduction/AbstractProtocolEngine.java  |  4 +-
 .../IntroduceeProtocolEngine.java             |  5 +-
 .../IntroducerProtocolEngine.java             | 12 ++-
 .../introduction/IntroductionManagerImpl.java |  8 +-
 .../introduction/IntroductionValidator.java   |  6 +-
 .../briar/introduction/MessageEncoder.java    |  2 +-
 .../introduction/MessageEncoderImpl.java      |  6 +-
 .../briar/introduction/MessageParserImpl.java |  4 +-
 .../briar/introduction/ProtocolEngine.java    |  2 +-
 .../briar/introduction/RequestMessage.java    | 14 +--
 .../briar/messaging/MessagingManagerImpl.java |  4 +-
 .../messaging/PrivateMessageFactoryImpl.java  |  8 +-
 .../messaging/PrivateMessageValidator.java    |  9 +-
 .../privategroup/GroupMessageFactoryImpl.java |  6 +-
 .../privategroup/GroupMessageValidator.java   | 12 +--
 .../privategroup/PrivateGroupManagerImpl.java | 12 +--
 .../invitation/AbstractProtocolEngine.java    |  4 +-
 .../invitation/CreatorProtocolEngine.java     |  8 +-
 .../GroupInvitationManagerImpl.java           |  6 +-
 .../invitation/GroupInvitationValidator.java  |  8 +-
 .../invitation/InviteMessage.java             | 10 +--
 .../invitation/InviteeProtocolEngine.java     |  4 +-
 .../invitation/MessageEncoder.java            |  2 +-
 .../invitation/MessageEncoderImpl.java        |  4 +-
 .../invitation/MessageParserImpl.java         |  6 +-
 .../invitation/PeerProtocolEngine.java        |  3 +-
 .../invitation/ProtocolEngine.java            |  2 +-
 .../sharing/BlogInvitationFactoryImpl.java    |  2 +-
 .../sharing/ForumInvitationFactoryImpl.java   |  2 +-
 .../briar/sharing/InviteMessage.java          | 12 +--
 .../briar/sharing/MessageEncoder.java         |  2 +-
 .../briar/sharing/MessageEncoderImpl.java     |  6 +-
 .../briar/sharing/MessageParserImpl.java      |  4 +-
 .../briar/sharing/ProtocolEngine.java         |  2 +-
 .../briar/sharing/ProtocolEngineImpl.java     | 12 +--
 .../briar/sharing/SharingManagerImpl.java     |  4 +-
 .../briar/sharing/SharingValidator.java       |  6 +-
 .../briar/test/TestDataCreatorImpl.java       | 20 ++---
 .../briar/blog/BlogManagerImplTest.java       |  6 +-
 .../blog/BlogManagerIntegrationTest.java      | 43 +++++----
 .../briar/blog/BlogPostValidatorTest.java     | 16 ++--
 .../briar/feed/FeedManagerImplTest.java       |  4 +-
 .../briar/forum/ForumManagerTest.java         | 18 ++--
 .../briar/forum/ForumPostValidatorTest.java   | 58 ++++++-------
 .../IntroductionValidatorTest.java            |  4 +-
 .../MessageEncoderParserIntegrationTest.java  |  8 +-
 .../introduction/MessageEncoderTest.java      |  4 +-
 .../messaging/MessageSizeIntegrationTest.java | 16 ++--
 .../PrivateMessageValidatorTest.java          | 25 +++---
 .../GroupMessageValidatorTest.java            | 56 ++++++------
 .../PrivateGroupIntegrationTest.java          |  8 +-
 .../PrivateGroupManagerIntegrationTest.java   |  6 +-
 .../AbstractProtocolEngineTest.java           |  8 +-
 .../invitation/CreatorProtocolEngineTest.java | 19 ++--
 .../GroupInvitationIntegrationTest.java       | 10 +--
 .../GroupInvitationManagerImplTest.java       | 12 +--
 .../GroupInvitationValidatorTest.java         | 54 ++++++------
 .../invitation/InviteeProtocolEngineTest.java |  4 +-
 .../sharing/BlogSharingIntegrationTest.java   |  6 +-
 .../sharing/BlogSharingValidatorTest.java     | 34 ++++----
 .../sharing/ForumSharingIntegrationTest.java  | 19 ++--
 .../sharing/ForumSharingValidatorTest.java    | 23 +++--
 .../headless/blogs/BlogControllerImpl.kt      | 10 +--
 .../briar/headless/blogs/OutputBlogPost.kt    |  4 +-
 .../briar/headless/event/OutputEvent.kt       |  4 +-
 .../headless/forums/ForumControllerImpl.kt    |  4 +-
 .../messaging/MessagingControllerImpl.kt      | 12 +--
 .../messaging/OutputPrivateMessage.kt         |  8 +-
 .../messaging/OutputPrivateRequest.kt         |  2 +-
 .../briar/headless/ControllerTest.kt          |  2 +-
 .../headless/blogs/BlogControllerTest.kt      | 18 ++--
 .../headless/event/WebSocketControllerTest.kt |  8 +-
 .../messaging/MessagingControllerImplTest.kt  | 36 ++++----
 145 files changed, 750 insertions(+), 764 deletions(-)

diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BaseControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BaseControllerImpl.java
index 0ad579f555..e80cafbd50 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BaseControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BaseControllerImpl.java
@@ -51,7 +51,7 @@ abstract class BaseControllerImpl extends DbControllerImpl
 	protected final IdentityManager identityManager;
 	protected final BlogManager blogManager;
 
-	private final Map<MessageId, String> bodyCache = new ConcurrentHashMap<>();
+	private final Map<MessageId, String> textCache = new ConcurrentHashMap<>();
 	private final Map<MessageId, BlogPostHeader> headerCache =
 			new ConcurrentHashMap<>();
 
@@ -129,17 +129,17 @@ abstract class BaseControllerImpl extends DbControllerImpl
 	public void loadBlogPost(BlogPostHeader header,
 			ResultExceptionHandler<BlogPostItem, DbException> handler) {
 
-		String body = bodyCache.get(header.getId());
-		if (body != null) {
-			LOG.info("Loaded body from cache");
-			handler.onResult(new BlogPostItem(header, body));
+		String text = textCache.get(header.getId());
+		if (text != null) {
+			LOG.info("Loaded text from cache");
+			handler.onResult(new BlogPostItem(header, text));
 			return;
 		}
 		runOnDbThread(() -> {
 			try {
 				long start = now();
 				BlogPostItem item = getItem(header);
-				logDuration(LOG, "Loading body", start);
+				logDuration(LOG, "Loading text", start);
 				handler.onResult(item);
 			} catch (DbException e) {
 				logException(LOG, WARNING, e);
@@ -200,28 +200,28 @@ abstract class BaseControllerImpl extends DbControllerImpl
 
 	@DatabaseExecutor
 	private BlogPostItem getItem(BlogPostHeader h) throws DbException {
-		String body;
+		String text;
 		if (h instanceof BlogCommentHeader) {
 			BlogCommentHeader c = (BlogCommentHeader) h;
 			BlogCommentItem item = new BlogCommentItem(c);
-			body = getPostBody(item.getPostHeader().getId());
-			item.setBody(body);
+			text = getPostText(item.getPostHeader().getId());
+			item.setText(text);
 			return item;
 		} else {
-			body = getPostBody(h.getId());
-			return new BlogPostItem(h, body);
+			text = getPostText(h.getId());
+			return new BlogPostItem(h, text);
 		}
 	}
 
 	@DatabaseExecutor
-	private String getPostBody(MessageId m) throws DbException {
-		String body = bodyCache.get(m);
-		if (body == null) {
-			body = HtmlUtils.clean(blogManager.getPostBody(m), ARTICLE);
-			bodyCache.put(m, body);
+	private String getPostText(MessageId m) throws DbException {
+		String text = textCache.get(m);
+		if (text == null) {
+			text = HtmlUtils.clean(blogManager.getPostText(m), ARTICLE);
+			textCache.put(m, text);
 		}
 		//noinspection ConstantConditions
-		return body;
+		return text;
 	}
 
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogCommentItem.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogCommentItem.java
index 2ef640d37b..89a6e7fa48 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogCommentItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogCommentItem.java
@@ -34,8 +34,8 @@ class BlogCommentItem extends BlogPostItem {
 		}
 	}
 
-	public void setBody(String body) {
-		this.body = body;
+	public void setText(String text) {
+		this.text = text;
 	}
 
 	@Override
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostItem.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostItem.java
index 546f9ac180..f350fc3f09 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostItem.java
@@ -15,12 +15,12 @@ import javax.annotation.concurrent.NotThreadSafe;
 public class BlogPostItem implements Comparable<BlogPostItem> {
 
 	private final BlogPostHeader header;
-	protected String body;
+	protected String text;
 	private boolean read;
 
-	BlogPostItem(BlogPostHeader header, @Nullable String body) {
+	BlogPostItem(BlogPostHeader header, @Nullable String text) {
 		this.header = header;
-		this.body = body;
+		this.text = text;
 		this.read = header.isRead();
 	}
 
@@ -44,8 +44,8 @@ public class BlogPostItem implements Comparable<BlogPostItem> {
 		return header.getAuthorStatus();
 	}
 
-	public String getBody() {
-		return body;
+	public String getText() {
+		return text;
 	}
 
 	public boolean isRssFeed() {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java
index b330aeb7a7..ec42e8ef4c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/BlogPostViewHolder.java
@@ -41,7 +41,7 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder {
 	private final AuthorView reblogger;
 	private final AuthorView author;
 	private final ImageButton reblogButton;
-	private final TextView body;
+	private final TextView text;
 	private final ViewGroup commentContainer;
 	private final boolean fullText;
 
@@ -63,7 +63,7 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder {
 		reblogger = v.findViewById(R.id.rebloggerView);
 		author = v.findViewById(R.id.authorView);
 		reblogButton = v.findViewById(R.id.commentView);
-		body = v.findViewById(R.id.bodyView);
+		text = v.findViewById(R.id.textView);
 		commentContainer = v.findViewById(R.id.commentContainer);
 	}
 
@@ -111,17 +111,17 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder {
 			author.setAuthorNotClickable();
 		}
 
-		// post body
-		Spanned bodyText = getSpanned(item.getBody());
+		// post text
+		Spanned postText = getSpanned(item.getText());
 		if (fullText) {
-			body.setText(bodyText);
-			body.setTextIsSelectable(true);
-			makeLinksClickable(body, fragmentManager);
+			text.setText(postText);
+			text.setTextIsSelectable(true);
+			makeLinksClickable(text, fragmentManager);
 		} else {
-			body.setTextIsSelectable(false);
-			if (bodyText.length() > TEASER_LENGTH)
-				bodyText = getTeaser(ctx, bodyText);
-			body.setText(bodyText);
+			text.setTextIsSelectable(false);
+			if (postText.length() > TEASER_LENGTH)
+				postText = getTeaser(ctx, postText);
+			text.setText(postText);
 		}
 
 		// reblog button
@@ -163,15 +163,15 @@ class BlogPostViewHolder extends RecyclerView.ViewHolder {
 							commentContainer, false);
 
 			AuthorView author = v.findViewById(R.id.authorView);
-			TextView body = v.findViewById(R.id.bodyView);
+			TextView text = v.findViewById(R.id.textView);
 
 			author.setAuthor(c.getAuthor());
 			author.setAuthorStatus(c.getAuthorStatus());
 			author.setDate(c.getTimestamp());
 			// TODO make author clickable #624
 
-			body.setText(c.getComment());
-			if (fullText) body.setTextIsSelectable(true);
+			text.setText(c.getComment());
+			if (fullText) text.setTextIsSelectable(true);
 
 			commentContainer.addView(v);
 		}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/blog/WriteBlogPostActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/blog/WriteBlogPostActivity.java
index eb7b9812c1..d077f97f83 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/blog/WriteBlogPostActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/blog/WriteBlogPostActivity.java
@@ -35,7 +35,7 @@ import static android.view.View.GONE;
 import static android.view.View.VISIBLE;
 import static java.util.logging.Level.WARNING;
 import static org.briarproject.bramble.util.LogUtils.logException;
-import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_BODY_LENGTH;
+import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_TEXT_LENGTH;
 
 public class WriteBlogPostActivity extends BriarActivity
 		implements OnEditorActionListener, TextInputListener {
@@ -70,7 +70,7 @@ public class WriteBlogPostActivity extends BriarActivity
 
 		setContentView(R.layout.activity_write_blog_post);
 
-		input = findViewById(R.id.bodyInput);
+		input = findViewById(R.id.textInput);
 		input.setSendButtonEnabled(false);
 		input.addTextChangedListener(new TextWatcher() {
 			@Override
@@ -132,23 +132,23 @@ public class WriteBlogPostActivity extends BriarActivity
 	}
 
 	@Override
-	public void onSendClick(String body) {
+	public void onSendClick(String text) {
 		// hide publish button, show progress bar
 		input.hideSoftKeyboard();
 		input.setVisibility(GONE);
 		progressBar.setVisibility(VISIBLE);
 
-		body = StringUtils.truncateUtf8(body, MAX_BLOG_POST_BODY_LENGTH);
-		storePost(body);
+		text = StringUtils.truncateUtf8(text, MAX_BLOG_POST_TEXT_LENGTH);
+		storePost(text);
 	}
 
-	private void storePost(String body) {
+	private void storePost(String text) {
 		runOnDbThread(() -> {
 			long timestamp = System.currentTimeMillis();
 			try {
 				LocalAuthor author = identityManager.getLocalAuthor();
 				BlogPost p = blogPostFactory
-						.createBlogPost(groupId, timestamp, null, author, body);
+						.createBlogPost(groupId, timestamp, null, author, text);
 				blogManager.addLocalPost(p);
 				postPublished();
 			} catch (DbException | GeneralSecurityException
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java
index 6e6ce6d785..423f47ec9a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java
@@ -53,7 +53,7 @@ import org.briarproject.briar.android.activity.ActivityComponent;
 import org.briarproject.briar.android.activity.BriarActivity;
 import org.briarproject.briar.android.blog.BlogActivity;
 import org.briarproject.briar.android.contact.ConversationAdapter.ConversationListener;
-import org.briarproject.briar.android.contact.ConversationVisitor.BodyCache;
+import org.briarproject.briar.android.contact.ConversationVisitor.TextCache;
 import org.briarproject.briar.android.forum.ForumActivity;
 import org.briarproject.briar.android.introduction.IntroductionActivity;
 import org.briarproject.briar.android.privategroup.conversation.GroupActivity;
@@ -105,7 +105,7 @@ import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_INTRO
 import static org.briarproject.briar.android.settings.SettingsFragment.SETTINGS_NAMESPACE;
 import static org.briarproject.briar.android.util.UiUtils.getAvatarTransitionName;
 import static org.briarproject.briar.android.util.UiUtils.getBulbTransitionName;
-import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_BODY_LENGTH;
+import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH;
 import static uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt.STATE_DISMISSED;
 import static uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt.STATE_FINISHED;
 
@@ -113,7 +113,7 @@ import static uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt.S
 @ParametersNotNullByDefault
 public class ConversationActivity extends BriarActivity
 		implements EventListener, ConversationListener, TextInputListener,
-		BodyCache {
+		TextCache {
 
 	public static final String CONTACT_ID = "briar.CONTACT_ID";
 
@@ -130,7 +130,7 @@ public class ConversationActivity extends BriarActivity
 	@CryptoExecutor
 	Executor cryptoExecutor;
 
-	private final Map<MessageId, String> bodyCache = new ConcurrentHashMap<>();
+	private final Map<MessageId, String> textCache = new ConcurrentHashMap<>();
 	private final MutableLiveData<String> contactName = new MutableLiveData<>();
 
 	private ConversationVisitor visitor;
@@ -370,28 +370,28 @@ public class ConversationActivity extends BriarActivity
 		return items;
 	}
 
-	private void loadMessageBody(MessageId m) {
+	private void loadMessageText(MessageId m) {
 		runOnDbThread(() -> {
 			try {
 				long start = now();
-				String body = messagingManager.getMessageBody(m);
-				logDuration(LOG, "Loading body", start);
-				displayMessageBody(m, body);
+				String text = messagingManager.getMessageText(m);
+				logDuration(LOG, "Loading text", start);
+				displayMessageText(m, text);
 			} catch (DbException e) {
 				logException(LOG, WARNING, e);
 			}
 		});
 	}
 
-	private void displayMessageBody(MessageId m, String body) {
+	private void displayMessageText(MessageId m, String text) {
 		runOnUiThreadUnlessDestroyed(() -> {
-			bodyCache.put(m, body);
+			textCache.put(m, text);
 			SparseArray<ConversationItem> messages =
 					adapter.getPrivateMessages();
 			for (int i = 0; i < messages.size(); i++) {
 				ConversationItem item = messages.valueAt(i);
 				if (item.getId().equals(m)) {
-					item.setBody(body);
+					item.setText(text);
 					adapter.notifyItemChanged(messages.keyAt(i));
 					list.scrollToPosition(adapter.getItemCount() - 1);
 					return;
@@ -470,7 +470,7 @@ public class ConversationActivity extends BriarActivity
 				}
 			} else {
 				addConversationItem(h.accept(visitor));
-				loadMessageBody(h.getId());
+				loadMessageText(h.getId());
 			}
 		});
 	}
@@ -495,8 +495,8 @@ public class ConversationActivity extends BriarActivity
 
 	@Override
 	public void onSendClick(String text) {
-		if (text.equals("")) return;
-		text = StringUtils.truncateUtf8(text, MAX_PRIVATE_MESSAGE_BODY_LENGTH);
+		if (text.isEmpty()) return;
+		text = StringUtils.truncateUtf8(text, MAX_PRIVATE_MESSAGE_TEXT_LENGTH);
 		long timestamp = System.currentTimeMillis();
 		timestamp = Math.max(timestamp, getMinTimestampForNewMessage());
 		if (messagingGroupId == null) loadGroupId(text, timestamp);
@@ -510,12 +510,12 @@ public class ConversationActivity extends BriarActivity
 		return item == null ? 0 : item.getTime() + 1;
 	}
 
-	private void loadGroupId(String body, long timestamp) {
+	private void loadGroupId(String text, long timestamp) {
 		runOnDbThread(() -> {
 			try {
 				messagingGroupId =
 						messagingManager.getConversationId(contactId);
-				createMessage(body, timestamp);
+				createMessage(text, timestamp);
 			} catch (DbException e) {
 				logException(LOG, WARNING, e);
 			}
@@ -523,19 +523,19 @@ public class ConversationActivity extends BriarActivity
 		});
 	}
 
-	private void createMessage(String body, long timestamp) {
+	private void createMessage(String text, long timestamp) {
 		cryptoExecutor.execute(() -> {
 			try {
 				//noinspection ConstantConditions init in loadGroupId()
 				storeMessage(privateMessageFactory.createPrivateMessage(
-						messagingGroupId, timestamp, body), body);
+						messagingGroupId, timestamp, text), text);
 			} catch (FormatException e) {
 				throw new RuntimeException(e);
 			}
 		});
 	}
 
-	private void storeMessage(PrivateMessage m, String body) {
+	private void storeMessage(PrivateMessage m, String text) {
 		runOnDbThread(() -> {
 			try {
 				long start = now();
@@ -545,7 +545,7 @@ public class ConversationActivity extends BriarActivity
 				PrivateMessageHeader h = new PrivateMessageHeader(
 						message.getId(), message.getGroupId(),
 						message.getTimestamp(), true, false, false, false);
-				bodyCache.put(message.getId(), body);
+				textCache.put(message.getId(), text);
 				addConversationItem(h.accept(visitor));
 			} catch (DbException e) {
 				logException(LOG, WARNING, e);
@@ -761,9 +761,9 @@ public class ConversationActivity extends BriarActivity
 
 	@Nullable
 	@Override
-	public String getBody(MessageId m) {
-		String body = bodyCache.get(m);
-		if (body == null) loadMessageBody(m);
-		return body;
+	public String getText(MessageId m) {
+		String text = textCache.get(m);
+		if (text == null) loadMessageText(m);
+		return text;
 	}
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItem.java
index 98b72b3900..bfd724dff8 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItem.java
@@ -14,17 +14,17 @@ import javax.annotation.concurrent.NotThreadSafe;
 abstract class ConversationItem {
 
 	@Nullable
-	protected String body;
+	protected String text;
 	private final MessageId id;
 	private final GroupId groupId;
 	private final long time;
 	private boolean read;
 
-	ConversationItem(MessageId id, GroupId groupId, @Nullable String body,
+	ConversationItem(MessageId id, GroupId groupId, @Nullable String text,
 			long time, boolean read) {
 		this.id = id;
 		this.groupId = groupId;
-		this.body = body;
+		this.text = text;
 		this.time = time;
 		this.read = read;
 	}
@@ -37,13 +37,13 @@ abstract class ConversationItem {
 		return groupId;
 	}
 
-	void setBody(String body) {
-		this.body = body;
+	void setText(String text) {
+		this.text = text;
 	}
 
 	@Nullable
-	public String getBody() {
-		return body;
+	public String getText() {
+		return text;
 	}
 
 	long getTime() {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItemViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItemViewHolder.java
index 2d0763a3b8..596b9adf76 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItemViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItemViewHolder.java
@@ -29,10 +29,10 @@ class ConversationItemViewHolder extends ViewHolder {
 
 	@CallSuper
 	void bind(ConversationItem item) {
-		if (item.getBody() == null) {
+		if (item.getText() == null) {
 			text.setText("\u2026");
 		} else {
-			text.setText(StringUtils.trim(item.getBody()));
+			text.setText(StringUtils.trim(item.getText()));
 		}
 
 		long timestamp = item.getTime();
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeInViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeInViewHolder.java
index a77ec07bac..7ea6e93e89 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeInViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeInViewHolder.java
@@ -29,13 +29,13 @@ class ConversationNoticeInViewHolder extends ConversationItemViewHolder {
 		ConversationNoticeInItem item =
 				(ConversationNoticeInItem) conversationItem;
 
-		String message = item.getMsgText();
-		if (StringUtils.isNullOrEmpty(message)) {
+		String text = item.getMsgText();
+		if (StringUtils.isNullOrEmpty(text)) {
 			msgText.setVisibility(GONE);
 			layout.setBackgroundResource(R.drawable.notice_in);
 		} else {
 			msgText.setVisibility(VISIBLE);
-			msgText.setText(StringUtils.trim(message));
+			msgText.setText(StringUtils.trim(text));
 			layout.setBackgroundResource(R.drawable.notice_in_bottom);
 		}
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeOutItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeOutItem.java
index d575e2a832..63eb8e0faa 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeOutItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeOutItem.java
@@ -20,7 +20,7 @@ class ConversationNoticeOutItem extends ConversationOutItem {
 	ConversationNoticeOutItem(String text, PrivateRequest r) {
 		super(r.getId(), r.getGroupId(), text, r.getTimestamp(), r.isSent(),
 				r.isSeen());
-		this.msgText = r.getMessage();
+		this.msgText = r.getText();
 	}
 
 	ConversationNoticeOutItem(String text, PrivateResponse r) {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeOutViewHolder.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeOutViewHolder.java
index d762018fba..90962b8eda 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeOutViewHolder.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationNoticeOutViewHolder.java
@@ -29,13 +29,13 @@ class ConversationNoticeOutViewHolder extends ConversationOutItemViewHolder {
 		ConversationNoticeOutItem item =
 				(ConversationNoticeOutItem) conversationItem;
 
-		String message = item.getMsgText();
-		if (StringUtils.isNullOrEmpty(message)) {
+		String text = item.getMsgText();
+		if (StringUtils.isNullOrEmpty(text)) {
 			msgText.setVisibility(GONE);
 			layout.setBackgroundResource(R.drawable.notice_out);
 		} else {
 			msgText.setVisibility(VISIBLE);
-			msgText.setText(StringUtils.trim(message));
+			msgText.setText(StringUtils.trim(text));
 			layout.setBackgroundResource(R.drawable.notice_out_bottom);
 		}
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestItem.java
index f6dc0a2ead..cd0ce22edb 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationRequestItem.java
@@ -27,7 +27,7 @@ class ConversationRequestItem extends ConversationNoticeInItem {
 	private boolean answered;
 
 	ConversationRequestItem(String text, RequestType type, PrivateRequest r) {
-		super(r.getId(), r.getGroupId(), text, r.getMessage(),
+		super(r.getId(), r.getGroupId(), text, r.getText(),
 				r.getTimestamp(), r.isRead());
 		this.requestType = type;
 		this.sessionId = r.getSessionId();
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationVisitor.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationVisitor.java
index e74dfecf30..3c33b27c0c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationVisitor.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationVisitor.java
@@ -30,13 +30,13 @@ import static org.briarproject.briar.android.contact.ConversationRequestItem.Req
 class ConversationVisitor implements PrivateMessageVisitor<ConversationItem> {
 
 	private final Context ctx;
-	private final BodyCache bodyCache;
+	private final TextCache textCache;
 	private final LiveData<String> contactName;
 
-	ConversationVisitor(Context ctx, BodyCache bodyCache,
+	ConversationVisitor(Context ctx, TextCache textCache,
 			LiveData<String> contactName) {
 		this.ctx = ctx;
-		this.bodyCache = bodyCache;
+		this.textCache = textCache;
 		this.contactName = contactName;
 	}
 
@@ -45,8 +45,8 @@ class ConversationVisitor implements PrivateMessageVisitor<ConversationItem> {
 		ConversationItem item;
 		if (h.isLocal()) item = new ConversationMessageOutItem(h);
 		else item = new ConversationMessageInItem(h);
-		String body = bodyCache.getBody(h.getId());
-		if (body != null) item.setBody(body);
+		String text = textCache.getText(h.getId());
+		if (text != null) item.setText(text);
 		return item;
 	}
 
@@ -239,8 +239,8 @@ class ConversationVisitor implements PrivateMessageVisitor<ConversationItem> {
 		}
 	}
 
-	interface BodyCache {
+	interface TextCache {
 		@Nullable
-		String getBody(MessageId m);
+		String getText(MessageId m);
 	}
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java
index 51e6f3937f..76c5b82fe6 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumActivity.java
@@ -33,7 +33,7 @@ import javax.inject.Inject;
 import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TOP;
 import static android.widget.Toast.LENGTH_SHORT;
 import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_SHARE_FORUM;
-import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_BODY_LENGTH;
+import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_TEXT_LENGTH;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
@@ -130,8 +130,8 @@ public class ForumActivity extends
 	}
 
 	@Override
-	protected int getMaxBodyLength() {
-		return MAX_FORUM_POST_BODY_LENGTH;
+	protected int getMaxTextLength() {
+		return MAX_FORUM_POST_TEXT_LENGTH;
 	}
 
 	@Override
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumControllerImpl.java
index 9abe8a1374..8ca52974fa 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumControllerImpl.java
@@ -79,7 +79,7 @@ class ForumControllerImpl extends
 			ForumPostReceivedEvent f = (ForumPostReceivedEvent) e;
 			if (f.getGroupId().equals(getGroupId())) {
 				LOG.info("Forum post received, adding...");
-				onForumPostReceived(f.getHeader(), f.getBody());
+				onForumPostReceived(f.getHeader(), f.getText());
 			}
 		} else if (e instanceof ForumInvitationResponseReceivedEvent) {
 			ForumInvitationResponseReceivedEvent f =
@@ -109,8 +109,8 @@ class ForumControllerImpl extends
 	}
 
 	@Override
-	protected String loadMessageBody(ForumPostHeader h) throws DbException {
-		return forumManager.getPostBody(h.getId());
+	protected String loadMessageText(ForumPostHeader h) throws DbException {
+		return forumManager.getPostText(h.getId());
 	}
 
 	@Override
@@ -137,7 +137,7 @@ class ForumControllerImpl extends
 	}
 
 	@Override
-	public void createAndStoreMessage(String body,
+	public void createAndStoreMessage(String text,
 			@Nullable ForumItem parentItem,
 			ResultExceptionHandler<ForumItem, DbException> handler) {
 		runOnDbThread(() -> {
@@ -148,7 +148,7 @@ class ForumControllerImpl extends
 						clock.currentTimeMillis());
 				MessageId parentId = parentItem != null ?
 						parentItem.getId() : null;
-				createMessage(body, timestamp, parentId, author, handler);
+				createMessage(text, timestamp, parentId, author, handler);
 			} catch (DbException e) {
 				logException(LOG, WARNING, e);
 				handler.onException(e);
@@ -156,14 +156,14 @@ class ForumControllerImpl extends
 		});
 	}
 
-	private void createMessage(String body, long timestamp,
+	private void createMessage(String text, long timestamp,
 			@Nullable MessageId parentId, LocalAuthor author,
 			ResultExceptionHandler<ForumItem, DbException> handler) {
 		cryptoExecutor.execute(() -> {
 			LOG.info("Creating forum post...");
-			ForumPost msg = forumManager.createLocalPost(getGroupId(), body,
+			ForumPost msg = forumManager.createLocalPost(getGroupId(), text,
 					timestamp, parentId, author);
-			storePost(msg, body, handler);
+			storePost(msg, text, handler);
 		});
 	}
 
@@ -179,12 +179,12 @@ class ForumControllerImpl extends
 	}
 
 	@Override
-	protected ForumItem buildItem(ForumPostHeader header, String body) {
-		return new ForumItem(header, body);
+	protected ForumItem buildItem(ForumPostHeader header, String text) {
+		return new ForumItem(header, text);
 	}
 
-	private void onForumPostReceived(ForumPostHeader h, String body) {
-		ForumItem item = buildItem(h, body);
+	private void onForumPostReceived(ForumPostHeader h, String text) {
+		ForumItem item = buildItem(h, text);
 		listener.runOnUiThreadUnlessDestroyed(
 				() -> listener.onItemReceived(item));
 	}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumItem.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumItem.java
index 51070e9068..e963aed49a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumItem.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumItem.java
@@ -12,8 +12,8 @@ import javax.annotation.concurrent.NotThreadSafe;
 @NotThreadSafe
 class ForumItem extends ThreadItem {
 
-	ForumItem(ForumPostHeader h, String body) {
-		super(h.getId(), h.getParentId(), body, h.getTimestamp(), h.getAuthor(),
+	ForumItem(ForumPostHeader h, String text) {
+		super(h.getId(), h.getParentId(), text, h.getTimestamp(), h.getAuthor(),
 				h.getAuthorStatus(), h.isRead());
 	}
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java
index 7bf01e5892..194641f075 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/introduction/IntroductionMessageFragment.java
@@ -38,7 +38,7 @@ import static android.view.View.VISIBLE;
 import static android.widget.Toast.LENGTH_SHORT;
 import static java.util.logging.Level.WARNING;
 import static org.briarproject.bramble.util.LogUtils.logException;
-import static org.briarproject.briar.api.introduction.IntroductionConstants.MAX_REQUEST_MESSAGE_LENGTH;
+import static org.briarproject.briar.api.introduction.IntroductionConstants.MAX_INTRODUCTION_TEXT_LENGTH;
 
 public class IntroductionMessageFragment extends BaseFragment
 		implements TextInputListener {
@@ -187,10 +187,10 @@ public class IntroductionMessageFragment extends BaseFragment
 		// disable button to prevent accidental double invitations
 		ui.message.setSendButtonEnabled(false);
 
-		String msg = ui.message.getText().toString();
-		if (msg.equals("")) msg = null;
-		else msg = StringUtils.truncateUtf8(msg, MAX_REQUEST_MESSAGE_LENGTH);
-		makeIntroduction(contact1, contact2, msg);
+		String txt = ui.message.getText().toString();
+		if (txt.isEmpty()) txt = null;
+		else txt = StringUtils.truncateUtf8(txt, MAX_INTRODUCTION_TEXT_LENGTH);
+		makeIntroduction(contact1, contact2, txt);
 
 		// don't wait for the introduction to be made before finishing activity
 		introductionActivity.hideSoftKeyboard(ui.message);
@@ -199,12 +199,12 @@ public class IntroductionMessageFragment extends BaseFragment
 	}
 
 	private void makeIntroduction(Contact c1, Contact c2,
-			@Nullable String msg) {
+			@Nullable String text) {
 		introductionActivity.runOnDbThread(() -> {
 			// actually make the introduction
 			try {
 				long timestamp = System.currentTimeMillis();
-				introductionManager.makeIntroduction(c1, c2, msg, timestamp);
+				introductionManager.makeIntroduction(c1, c2, text, timestamp);
 			} catch (DbException e) {
 				logException(LOG, WARNING, e);
 				introductionError();
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java
index 8222624598..65b2587e92 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupActivity.java
@@ -37,7 +37,7 @@ import javax.inject.Inject;
 import static android.view.View.GONE;
 import static android.view.View.VISIBLE;
 import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_GROUP_INVITE;
-import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_POST_BODY_LENGTH;
+import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_POST_TEXT_LENGTH;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
@@ -179,8 +179,8 @@ public class GroupActivity extends
 	}
 
 	@Override
-	protected int getMaxBodyLength() {
-		return MAX_GROUP_POST_BODY_LENGTH;
+	protected int getMaxTextLength() {
+		return MAX_GROUP_POST_TEXT_LENGTH;
 	}
 
 	@Override
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupControllerImpl.java
index 35a3182653..3756e11a9d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupControllerImpl.java
@@ -84,7 +84,7 @@ class GroupControllerImpl extends
 			GroupMessageAddedEvent g = (GroupMessageAddedEvent) e;
 			if (!g.isLocal() && g.getGroupId().equals(getGroupId())) {
 				LOG.info("Group message received, adding...");
-				GroupMessageItem item = buildItem(g.getHeader(), g.getBody());
+				GroupMessageItem item = buildItem(g.getHeader(), g.getText());
 				listener.runOnUiThreadUnlessDestroyed(
 						() -> listener.onItemReceived(item));
 			}
@@ -124,13 +124,13 @@ class GroupControllerImpl extends
 	}
 
 	@Override
-	protected String loadMessageBody(GroupMessageHeader header)
+	protected String loadMessageText(GroupMessageHeader header)
 			throws DbException {
 		if (header instanceof JoinMessageHeader) {
 			// will be looked up later
 			return "";
 		}
-		return privateGroupManager.getMessageBody(header.getId());
+		return privateGroupManager.getMessageText(header.getId());
 	}
 
 	@Override
@@ -159,7 +159,7 @@ class GroupControllerImpl extends
 	}
 
 	@Override
-	public void createAndStoreMessage(String body,
+	public void createAndStoreMessage(String text,
 			@Nullable GroupMessageItem parentItem,
 			ResultExceptionHandler<GroupMessageItem, DbException> handler) {
 		runOnDbThread(() -> {
@@ -173,7 +173,7 @@ class GroupControllerImpl extends
 				long timestamp = count.getLatestMsgTime();
 				if (parentItem != null) parentId = parentItem.getId();
 				timestamp = max(clock.currentTimeMillis(), timestamp + 1);
-				createMessage(body, timestamp, parentId, author, previousMsgId,
+				createMessage(text, timestamp, parentId, author, previousMsgId,
 						handler);
 			} catch (DbException e) {
 				logException(LOG, WARNING, e);
@@ -182,7 +182,7 @@ class GroupControllerImpl extends
 		});
 	}
 
-	private void createMessage(String body, long timestamp,
+	private void createMessage(String text, long timestamp,
 			@Nullable MessageId parentId, LocalAuthor author,
 			MessageId previousMsgId,
 			ResultExceptionHandler<GroupMessageItem, DbException> handler) {
@@ -190,8 +190,8 @@ class GroupControllerImpl extends
 			LOG.info("Creating group message...");
 			GroupMessage msg = groupMessageFactory
 					.createGroupMessage(getGroupId(), timestamp,
-							parentId, author, body, previousMsgId);
-			storePost(msg, body, handler);
+							parentId, author, text, previousMsgId);
+			storePost(msg, text, handler);
 		});
 	}
 
@@ -208,11 +208,11 @@ class GroupControllerImpl extends
 
 	@Override
 	protected GroupMessageItem buildItem(GroupMessageHeader header,
-			String body) {
+			String text) {
 		if (header instanceof JoinMessageHeader) {
-			return new JoinMessageItem((JoinMessageHeader) header, body);
+			return new JoinMessageItem((JoinMessageHeader) header, text);
 		}
-		return new GroupMessageItem(header, body);
+		return new GroupMessageItem(header, text);
 	}
 
 	@Override
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupController.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupController.java
index 37f7b92a84..56a7614c0f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupController.java
@@ -18,6 +18,6 @@ public interface CreateGroupController
 			ResultExceptionHandler<GroupId, DbException> result);
 
 	void sendInvitation(GroupId g, Collection<ContactId> contacts,
-			String message, ResultExceptionHandler<Void, DbException> result);
+			String text, ResultExceptionHandler<Void, DbException> result);
 
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupControllerImpl.java
index 9791e16d5b..efdd03bb3b 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/CreateGroupControllerImpl.java
@@ -123,7 +123,7 @@ class CreateGroupControllerImpl extends ContactSelectorControllerImpl
 
 	@Override
 	public void sendInvitation(GroupId g, Collection<ContactId> contactIds,
-			String message, ResultExceptionHandler<Void, DbException> handler) {
+			String text, ResultExceptionHandler<Void, DbException> handler) {
 		runOnDbThread(() -> {
 			try {
 				LocalAuthor localAuthor = identityManager.getLocalAuthor();
@@ -135,7 +135,7 @@ class CreateGroupControllerImpl extends ContactSelectorControllerImpl
 						// Continue
 					}
 				}
-				signInvitations(g, localAuthor, contacts, message, handler);
+				signInvitations(g, localAuthor, contacts, text, handler);
 			} catch (DbException e) {
 				logException(LOG, WARNING, e);
 				handler.onException(e);
@@ -144,7 +144,7 @@ class CreateGroupControllerImpl extends ContactSelectorControllerImpl
 	}
 
 	private void signInvitations(GroupId g, LocalAuthor localAuthor,
-			Collection<Contact> contacts, String message,
+			Collection<Contact> contacts, String text,
 			ResultExceptionHandler<Void, DbException> handler) {
 		cryptoExecutor.execute(() -> {
 			long timestamp = clock.currentTimeMillis();
@@ -155,20 +155,20 @@ class CreateGroupControllerImpl extends ContactSelectorControllerImpl
 				contexts.add(new InvitationContext(c.getId(), timestamp,
 						signature));
 			}
-			sendInvitations(g, contexts, message, handler);
+			sendInvitations(g, contexts, text, handler);
 		});
 	}
 
 	private void sendInvitations(GroupId g,
-			Collection<InvitationContext> contexts, String message,
+			Collection<InvitationContext> contexts, String text,
 			ResultExceptionHandler<Void, DbException> handler) {
 		runOnDbThread(() -> {
 			try {
-				String msg = message.isEmpty() ? null : message;
+				String txt = text.isEmpty() ? null : text;
 				for (InvitationContext context : contexts) {
 					try {
 						groupInvitationManager.sendInvitation(g,
-								context.contactId, msg, context.timestamp,
+								context.contactId, txt, context.timestamp,
 								context.signature);
 					} catch (NoSuchContactException e) {
 						// Continue
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteActivity.java
index 3da66f7cbe..64dd54404c 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/creation/GroupInviteActivity.java
@@ -18,7 +18,7 @@ import java.util.Collection;
 import javax.annotation.Nullable;
 import javax.inject.Inject;
 
-import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_INVITATION_MSG_LENGTH;
+import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_INVITATION_TEXT_LENGTH;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
@@ -55,10 +55,10 @@ public class GroupInviteActivity extends ContactSelectorActivity
 	}
 
 	@Override
-	public boolean onButtonClick(String message) {
+	public boolean onButtonClick(String text) {
 		if (groupId == null)
 			throw new IllegalStateException("GroupId was not initialized");
-		controller.sendInvitation(groupId, contacts, message,
+		controller.sendInvitation(groupId, contacts, text,
 				new UiResultExceptionHandler<Void, DbException>(this) {
 					@Override
 					public void onResultUi(Void result) {
@@ -76,7 +76,7 @@ public class GroupInviteActivity extends ContactSelectorActivity
 	}
 
 	@Override
-	public int getMaximumMessageLength() {
-		return MAX_GROUP_INVITATION_MSG_LENGTH;
+	public int getMaximumTextLength() {
+		return MAX_GROUP_INVITATION_TEXT_LENGTH;
 	}
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BaseMessageFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BaseMessageFragment.java
index 75d999c9b0..c4fee64293 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/BaseMessageFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/BaseMessageFragment.java
@@ -11,7 +11,6 @@ import android.view.View;
 import android.view.ViewGroup;
 
 import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
-import org.briarproject.bramble.util.StringUtils;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.fragment.BaseFragment;
 import org.briarproject.briar.android.view.LargeTextInputView;
@@ -19,7 +18,8 @@ import org.briarproject.briar.android.view.TextInputView.TextInputListener;
 
 import static android.support.design.widget.Snackbar.LENGTH_SHORT;
 import static org.briarproject.bramble.util.StringUtils.truncateUtf8;
-import static org.briarproject.briar.api.sharing.SharingConstants.MAX_INVITATION_MESSAGE_LENGTH;
+import static org.briarproject.bramble.util.StringUtils.utf8IsTooLong;
+import static org.briarproject.briar.api.sharing.SharingConstants.MAX_INVITATION_TEXT_LENGTH;
 
 public abstract class BaseMessageFragment extends BaseFragment
 		implements TextInputListener {
@@ -76,8 +76,8 @@ public abstract class BaseMessageFragment extends BaseFragment
 	}
 
 	@Override
-	public void onSendClick(String msg) {
-		if (StringUtils.utf8IsTooLong(msg, listener.getMaximumMessageLength())) {
+	public void onSendClick(String text) {
+		if (utf8IsTooLong(text, listener.getMaximumTextLength())) {
 			Snackbar.make(message, R.string.text_too_long, LENGTH_SHORT).show();
 			return;
 		}
@@ -86,8 +86,8 @@ public abstract class BaseMessageFragment extends BaseFragment
 		message.setSendButtonEnabled(false);
 		message.hideSoftKeyboard();
 
-		msg = truncateUtf8(msg, MAX_INVITATION_MESSAGE_LENGTH);
-		if(!listener.onButtonClick(msg)) {
+		text = truncateUtf8(text, MAX_INVITATION_TEXT_LENGTH);
+		if(!listener.onButtonClick(text)) {
 			message.setSendButtonEnabled(true);
 			message.showSoftKeyboard();
 		}
@@ -102,9 +102,9 @@ public abstract class BaseMessageFragment extends BaseFragment
 		void setTitle(@StringRes int titleRes);
 
 		/** Returns true when the button click has been consumed. */
-		boolean onButtonClick(String message);
+		boolean onButtonClick(String text);
 
-		int getMaximumMessageLength();
+		int getMaximumTextLength();
 
 	}
 
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java
index 5258a3210e..4c7e6268a5 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareActivity.java
@@ -41,13 +41,13 @@ public abstract class ShareActivity extends ContactSelectorActivity
 
 	@UiThread
 	@Override
-	public boolean onButtonClick(String message) {
-		share(contacts, message);
+	public boolean onButtonClick(String text) {
+		share(contacts, text);
 		setResult(RESULT_OK);
 		supportFinishAfterTransition();
 		return true;
 	}
 
-	abstract void share(Collection<ContactId> contacts, String msg);
+	abstract void share(Collection<ContactId> contacts, String text);
 
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java
index b9fbcbde54..3a89eb994a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogActivity.java
@@ -17,7 +17,7 @@ import javax.annotation.Nullable;
 import javax.inject.Inject;
 
 import static android.widget.Toast.LENGTH_SHORT;
-import static org.briarproject.bramble.api.sync.SyncConstants.MAX_MESSAGE_BODY_LENGTH;
+import static org.briarproject.briar.api.sharing.SharingConstants.MAX_INVITATION_TEXT_LENGTH;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
@@ -46,13 +46,13 @@ public class ShareBlogActivity extends ShareActivity {
 	}
 
 	@Override
-	public int getMaximumMessageLength() {
-		return MAX_MESSAGE_BODY_LENGTH;
+	public int getMaximumTextLength() {
+		return MAX_INVITATION_TEXT_LENGTH;
 	}
 
 	@Override
-	void share(Collection<ContactId> contacts, String msg) {
-		controller.share(groupId, contacts, msg,
+	void share(Collection<ContactId> contacts, String text) {
+		controller.share(groupId, contacts, text,
 				new UiExceptionHandler<DbException>(this) {
 					@Override
 					public void onExceptionUi(DbException exception) {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogController.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogController.java
index 55ed2b46c4..2500d8b592 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogController.java
@@ -12,7 +12,7 @@ import java.util.Collection;
 public interface ShareBlogController
 		extends ContactSelectorController<SelectableContactItem> {
 
-	void share(GroupId g, Collection<ContactId> contacts, String msg,
+	void share(GroupId g, Collection<ContactId> contacts, String text,
 			ExceptionHandler<DbException> handler);
 
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogControllerImpl.java
index 86149af67c..c0d002e22a 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareBlogControllerImpl.java
@@ -56,17 +56,17 @@ class ShareBlogControllerImpl extends ContactSelectorControllerImpl
 	}
 
 	@Override
-	public void share(GroupId g, Collection<ContactId> contacts, String message,
+	public void share(GroupId g, Collection<ContactId> contacts, String text,
 			ExceptionHandler<DbException> handler) {
 		runOnDbThread(() -> {
 			try {
-				String msg = isNullOrEmpty(message) ? null : message;
+				String txt = isNullOrEmpty(text) ? null : text;
 				for (ContactId c : contacts) {
 					try {
 						long time = Math.max(clock.currentTimeMillis(),
 								conversationManager.getGroupCount(c)
 										.getLatestMsgTime() + 1);
-						blogSharingManager.sendInvitation(g, c, msg, time);
+						blogSharingManager.sendInvitation(g, c, txt, time);
 					} catch (NoSuchContactException | NoSuchGroupException e) {
 						logException(LOG, WARNING, e);
 					}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java
index b274991a1a..d4c5974e10 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumActivity.java
@@ -17,7 +17,7 @@ import javax.annotation.Nullable;
 import javax.inject.Inject;
 
 import static android.widget.Toast.LENGTH_SHORT;
-import static org.briarproject.bramble.api.sync.SyncConstants.MAX_MESSAGE_BODY_LENGTH;
+import static org.briarproject.briar.api.sharing.SharingConstants.MAX_INVITATION_TEXT_LENGTH;
 
 @MethodsNotNullByDefault
 @ParametersNotNullByDefault
@@ -46,13 +46,13 @@ public class ShareForumActivity extends ShareActivity {
 	}
 
 	@Override
-	public int getMaximumMessageLength() {
-		return MAX_MESSAGE_BODY_LENGTH;
+	public int getMaximumTextLength() {
+		return MAX_INVITATION_TEXT_LENGTH;
 	}
 
 	@Override
-	void share(Collection<ContactId> contacts, String msg) {
-		controller.share(groupId, contacts, msg,
+	void share(Collection<ContactId> contacts, String text) {
+		controller.share(groupId, contacts, text,
 				new UiExceptionHandler<DbException>(this) {
 					@Override
 					public void onExceptionUi(DbException exception) {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumController.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumController.java
index eedf45dfc0..744605714f 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumController.java
@@ -12,7 +12,7 @@ import java.util.Collection;
 public interface ShareForumController
 		extends ContactSelectorController<SelectableContactItem> {
 
-	void share(GroupId g, Collection<ContactId> contacts, String msg,
+	void share(GroupId g, Collection<ContactId> contacts, String text,
 			ExceptionHandler<DbException> handler);
 
 }
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumControllerImpl.java
index 90b08cd706..fad58360af 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/ShareForumControllerImpl.java
@@ -57,16 +57,16 @@ class ShareForumControllerImpl extends ContactSelectorControllerImpl
 
 	@Override
 	public void share(GroupId g, Collection<ContactId> contacts,
-			String message, ExceptionHandler<DbException> handler) {
+			String text, ExceptionHandler<DbException> handler) {
 		runOnDbThread(() -> {
 			try {
-				String msg = isNullOrEmpty(message) ? null : message;
+				String txt = isNullOrEmpty(text) ? null : text;
 				for (ContactId c : contacts) {
 					try {
 						long time = Math.max(clock.currentTimeMillis(),
 								conversationManager.getGroupCount(c)
 										.getLatestMsgTime() + 1);
-						forumSharingManager.sendInvitation(g, c, msg, time);
+						forumSharingManager.sendInvitation(g, c, txt, time);
 					} catch (NoSuchContactException | NoSuchGroupException e) {
 						logException(LOG, WARNING, e);
 					}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java
index 2d30f5c8d5..f99598fc58 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListActivity.java
@@ -17,7 +17,6 @@ import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
 import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
-import org.briarproject.bramble.util.StringUtils;
 import org.briarproject.briar.R;
 import org.briarproject.briar.android.activity.BriarActivity;
 import org.briarproject.briar.android.controller.SharingController;
@@ -43,6 +42,7 @@ import static android.support.design.widget.Snackbar.make;
 import static android.support.v7.widget.RecyclerView.NO_POSITION;
 import static android.support.v7.widget.RecyclerView.SCROLL_STATE_IDLE;
 import static java.util.logging.Level.INFO;
+import static org.briarproject.bramble.util.StringUtils.utf8IsTooLong;
 import static org.briarproject.briar.android.threaded.ThreadItemAdapter.UnreadCount;
 
 @MethodsNotNullByDefault
@@ -351,7 +351,7 @@ public abstract class ThreadListActivity<G extends NamedGroup, I extends ThreadI
 	public void onSendClick(String text) {
 		if (text.trim().length() == 0)
 			return;
-		if (StringUtils.utf8IsTooLong(text, getMaxBodyLength())) {
+		if (utf8IsTooLong(text, getMaxTextLength())) {
 			displaySnackbar(R.string.text_too_long);
 			return;
 		}
@@ -375,7 +375,7 @@ public abstract class ThreadListActivity<G extends NamedGroup, I extends ThreadI
 		updateTextInput();
 	}
 
-	protected abstract int getMaxBodyLength();
+	protected abstract int getMaxTextLength();
 
 	@Override
 	public void onItemReceived(I item) {
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListController.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListController.java
index f64a707689..ea9d77ab3d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListController.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListController.java
@@ -35,7 +35,7 @@ public interface ThreadListController<G extends NamedGroup, I extends ThreadItem
 
 	void markItemsRead(Collection<I> items);
 
-	void createAndStoreMessage(String body, @Nullable I parentItem,
+	void createAndStoreMessage(String text, @Nullable I parentItem,
 			ResultExceptionHandler<I, DbException> handler);
 
 	void deleteNamedGroup(ExceptionHandler<DbException> handler);
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListControllerImpl.java
index 3eb857aa52..590e582116 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListControllerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/threaded/ThreadListControllerImpl.java
@@ -50,7 +50,7 @@ public abstract class ThreadListControllerImpl<G extends NamedGroup, I extends T
 			Logger.getLogger(ThreadListControllerImpl.class.getName());
 
 	private final EventBus eventBus;
-	private final Map<MessageId, String> bodyCache = new ConcurrentHashMap<>();
+	private final Map<MessageId, String> textCache = new ConcurrentHashMap<>();
 	private volatile GroupId groupId;
 
 	protected final IdentityManager identityManager;
@@ -161,9 +161,9 @@ public abstract class ThreadListControllerImpl<G extends NamedGroup, I extends T
 				// Load bodies into cache
 				start = now();
 				for (H header : headers) {
-					if (!bodyCache.containsKey(header.getId())) {
-						bodyCache.put(header.getId(),
-								loadMessageBody(header));
+					if (!textCache.containsKey(header.getId())) {
+						textCache.put(header.getId(),
+								loadMessageText(header));
 					}
 				}
 				logDuration(LOG, "Loading bodies", start);
@@ -181,7 +181,7 @@ public abstract class ThreadListControllerImpl<G extends NamedGroup, I extends T
 	protected abstract Collection<H> loadHeaders() throws DbException;
 
 	@DatabaseExecutor
-	protected abstract String loadMessageBody(H header) throws DbException;
+	protected abstract String loadMessageText(H header) throws DbException;
 
 	@Override
 	public void markItemRead(I item) {
@@ -206,15 +206,15 @@ public abstract class ThreadListControllerImpl<G extends NamedGroup, I extends T
 	@DatabaseExecutor
 	protected abstract void markRead(MessageId id) throws DbException;
 
-	protected void storePost(M msg, String body,
+	protected void storePost(M msg, String text,
 			ResultExceptionHandler<I, DbException> resultHandler) {
 		runOnDbThread(() -> {
 			try {
 				long start = now();
 				H header = addLocalMessage(msg);
-				bodyCache.put(msg.getMessage().getId(), body);
+				textCache.put(msg.getMessage().getId(), text);
 				logDuration(LOG, "Storing message", start);
-				resultHandler.onResult(buildItem(header, body));
+				resultHandler.onResult(buildItem(header, text));
 			} catch (DbException e) {
 				logException(LOG, WARNING, e);
 				resultHandler.onException(e);
@@ -247,7 +247,7 @@ public abstract class ThreadListControllerImpl<G extends NamedGroup, I extends T
 			throws DbException {
 		ThreadItemList<I> items = new ThreadItemListImpl<>();
 		for (H h : headers) {
-			items.add(buildItem(h, bodyCache.get(h.getId())));
+			items.add(buildItem(h, textCache.get(h.getId())));
 		}
 		MessageId msgId = messageTracker.loadStoredMessageId(groupId);
 		if (LOG.isLoggable(INFO))
@@ -256,7 +256,7 @@ public abstract class ThreadListControllerImpl<G extends NamedGroup, I extends T
 		return items;
 	}
 
-	protected abstract I buildItem(H header, String body);
+	protected abstract I buildItem(H header, String text);
 
 	protected GroupId getGroupId() {
 		checkGroupId();
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
index 44426700d5..ff18520f4d 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
@@ -106,13 +106,13 @@ public class UiUtils {
 		return (int) daysBeforeExpiry;
 	}
 
-	public static SpannableStringBuilder getTeaser(Context ctx, Spanned body) {
-		if (body.length() < TEASER_LENGTH)
+	public static SpannableStringBuilder getTeaser(Context ctx, Spanned text) {
+		if (text.length() < TEASER_LENGTH)
 			throw new IllegalArgumentException(
 					"String is shorter than TEASER_LENGTH");
 
 		SpannableStringBuilder builder =
-				new SpannableStringBuilder(body.subSequence(0, TEASER_LENGTH));
+				new SpannableStringBuilder(text.subSequence(0, TEASER_LENGTH));
 		String ellipsis = ctx.getString(R.string.ellipsis);
 		builder.append(ellipsis).append(" ");
 
diff --git a/briar-android/src/main/res/layout/activity_write_blog_post.xml b/briar-android/src/main/res/layout/activity_write_blog_post.xml
index 8376d5804a..e6d09987e7 100644
--- a/briar-android/src/main/res/layout/activity_write_blog_post.xml
+++ b/briar-android/src/main/res/layout/activity_write_blog_post.xml
@@ -8,7 +8,7 @@
 	tools:context=".android.blog.WriteBlogPostActivity">
 
 	<org.briarproject.briar.android.view.LargeTextInputView
-		android:id="@+id/bodyInput"
+		android:id="@+id/textInput"
 		android:layout_width="match_parent"
 		android:layout_height="match_parent"
 		android:gravity="bottom"
diff --git a/briar-android/src/main/res/layout/list_item_blog_comment.xml b/briar-android/src/main/res/layout/list_item_blog_comment.xml
index 6c20a7a0c1..9488d52ac2 100644
--- a/briar-android/src/main/res/layout/list_item_blog_comment.xml
+++ b/briar-android/src/main/res/layout/list_item_blog_comment.xml
@@ -24,7 +24,7 @@
 		app:persona="commenter"/>
 
 	<com.vanniktech.emoji.EmojiTextView
-		android:id="@+id/bodyView"
+		android:id="@+id/textView"
 		android:layout_width="0dp"
 		android:layout_height="wrap_content"
 		android:paddingBottom="@dimen/listitem_vertical_margin"
diff --git a/briar-android/src/main/res/layout/list_item_blog_post.xml b/briar-android/src/main/res/layout/list_item_blog_post.xml
index 76bb71e33a..98eb37b4a1 100644
--- a/briar-android/src/main/res/layout/list_item_blog_post.xml
+++ b/briar-android/src/main/res/layout/list_item_blog_post.xml
@@ -54,7 +54,7 @@
 			app:tint="?attr/colorControlNormal"/>
 
 		<com.vanniktech.emoji.EmojiTextView
-			android:id="@+id/bodyView"
+			android:id="@+id/textView"
 			android:layout_width="0dp"
 			android:layout_height="wrap_content"
 			android:layout_margin="@dimen/listitem_vertical_margin"
@@ -72,7 +72,7 @@
 			android:layout_height="wrap_content"
 			android:layout_marginTop="@dimen/listitem_vertical_margin"
 			android:orientation="vertical"
-			app:layout_constraintTop_toBottomOf="@+id/bodyView">
+			app:layout_constraintTop_toBottomOf="@+id/textView">
 
 			<include
 				layout="@layout/list_item_blog_comment"
diff --git a/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java b/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java
index bf18e7ad0e..d940e5b8ab 100644
--- a/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java
+++ b/briar-android/src/test/java/org/briarproject/briar/android/forum/ForumActivityTest.java
@@ -30,7 +30,7 @@ import static org.briarproject.bramble.api.identity.Author.Status.UNKNOWN;
 import static org.briarproject.bramble.test.TestUtils.getAuthor;
 import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.bramble.util.StringUtils.getRandomString;
-import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_BODY_LENGTH;
+import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_TEXT_LENGTH;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
@@ -85,9 +85,9 @@ public class ForumActivityTest {
 		ForumItem[] forumItems = new ForumItem[6];
 		for (int i = 0; i < forumItems.length; i++) {
 			Author author = getAuthor();
-			String content = getRandomString(MAX_FORUM_POST_BODY_LENGTH);
+			String text = getRandomString(MAX_FORUM_POST_TEXT_LENGTH);
 			forumItems[i] = new ForumItem(MESSAGE_IDS[i], PARENT_IDS[i],
-					content, System.currentTimeMillis(), author, UNKNOWN);
+					text, System.currentTimeMillis(), author, UNKNOWN);
 			forumItems[i].setLevel(LEVELS[i]);
 		}
 		ThreadItemList<ForumItem> list = new ThreadItemListImpl<>();
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogConstants.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogConstants.java
index accb030daf..4a9fa9548c 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogConstants.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogConstants.java
@@ -5,14 +5,14 @@ import static org.briarproject.bramble.api.sync.SyncConstants.MAX_MESSAGE_BODY_L
 public interface BlogConstants {
 
 	/**
-	 * The maximum length of a blog post's body in bytes.
+	 * The maximum length of a blog post's text in UTF-8 bytes.
 	 */
-	int MAX_BLOG_POST_BODY_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
+	int MAX_BLOG_POST_TEXT_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
 
 	/**
-	 * The maximum length of a blog comment in bytes.
+	 * The maximum length of a blog comment's text in UTF-8 bytes.
 	 */
-	int MAX_BLOG_COMMENT_LENGTH = MAX_BLOG_POST_BODY_LENGTH;
+	int MAX_BLOG_COMMENT_TEXT_LENGTH = MAX_BLOG_POST_TEXT_LENGTH;
 
 	// Metadata keys
 	String KEY_TYPE = "type";
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationRequest.java
index b77e05bd73..a34b4de6d1 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationRequest.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationRequest.java
@@ -14,10 +14,10 @@ public class BlogInvitationRequest extends InvitationRequest<Blog> {
 
 	public BlogInvitationRequest(MessageId id, GroupId groupId, long time,
 			boolean local, boolean sent, boolean seen, boolean read,
-			SessionId sessionId, Blog blog, @Nullable String message,
+			SessionId sessionId, Blog blog, @Nullable String text,
 			boolean available, boolean canBeOpened) {
 		super(id, groupId, time, local, sent, seen, read, sessionId, blog,
-				message, available, canBeOpened);
+				text, available, canBeOpened);
 	}
 
 	@Override
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogManager.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogManager.java
index 9179a84a82..27ac12bac9 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogManager.java
@@ -104,9 +104,9 @@ public interface BlogManager {
 	BlogPostHeader getPostHeader(GroupId g, MessageId m) throws DbException;
 
 	/**
-	 * Returns the body of the blog post with the given ID.
+	 * Returns the text of the blog post with the given ID.
 	 */
-	String getPostBody(MessageId m) throws DbException;
+	String getPostText(MessageId m) throws DbException;
 
 	/**
 	 * Returns the headers of all posts in the given blog.
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostFactory.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostFactory.java
index 9bfc806967..1b7cd03dee 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostFactory.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogPostFactory.java
@@ -21,7 +21,7 @@ public interface BlogPostFactory {
 	String SIGNING_LABEL_COMMENT = CLIENT_ID.getString() + "/COMMENT";
 
 	BlogPost createBlogPost(GroupId groupId, long timestamp,
-			@Nullable MessageId parent, LocalAuthor author, String body)
+			@Nullable MessageId parent, LocalAuthor author, String text)
 			throws FormatException, GeneralSecurityException;
 
 	Message createBlogComment(GroupId groupId, LocalAuthor author,
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumConstants.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumConstants.java
index fbece006cd..309e8f4c48 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumConstants.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumConstants.java
@@ -15,9 +15,9 @@ public interface ForumConstants {
 	int FORUM_SALT_LENGTH = 32;
 
 	/**
-	 * The maximum length of a forum post's body in bytes.
+	 * The maximum length of a forum post's text in UTF-8 bytes.
 	 */
-	int MAX_FORUM_POST_BODY_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
+	int MAX_FORUM_POST_TEXT_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
 
 	// Metadata keys
 	String KEY_TIMESTAMP = "timestamp";
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationRequest.java
index 3944eca749..ce2dea7f81 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationRequest.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationRequest.java
@@ -16,10 +16,10 @@ public class ForumInvitationRequest extends InvitationRequest<Forum> {
 
 	public ForumInvitationRequest(MessageId id, GroupId groupId, long time,
 			boolean local, boolean sent, boolean seen, boolean read,
-			SessionId sessionId, Forum forum, @Nullable String message,
+			SessionId sessionId, Forum forum, @Nullable String text,
 			boolean available, boolean canBeOpened) {
 		super(id, groupId, time, local, sent, seen, read, sessionId, forum,
-				message, available, canBeOpened);
+				text, available, canBeOpened);
 	}
 
 	@Override
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumManager.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumManager.java
index 96f4477768..75297693a8 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumManager.java
@@ -51,7 +51,7 @@ public interface ForumManager {
 	 * Creates a local forum post.
 	 */
 	@CryptoExecutor
-	ForumPost createLocalPost(GroupId groupId, String body, long timestamp,
+	ForumPost createLocalPost(GroupId groupId, String text, long timestamp,
 			@Nullable MessageId parentId, LocalAuthor author);
 
 	/**
@@ -75,9 +75,9 @@ public interface ForumManager {
 	Collection<Forum> getForums() throws DbException;
 
 	/**
-	 * Returns the body of the forum post with the given ID.
+	 * Returns the text of the forum post with the given ID.
 	 */
-	String getPostBody(MessageId m) throws DbException;
+	String getPostText(MessageId m) throws DbException;
 
 	/**
 	 * Returns the headers of all posts in the given forum.
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostFactory.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostFactory.java
index 51f47fbe5b..3abe250dff 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostFactory.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumPostFactory.java
@@ -20,7 +20,7 @@ public interface ForumPostFactory {
 
 	@CryptoExecutor
 	ForumPost createPost(GroupId groupId, long timestamp,
-			@Nullable MessageId parent, LocalAuthor author, String body)
+			@Nullable MessageId parent, LocalAuthor author, String text)
 			throws FormatException, GeneralSecurityException;
 
 }
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumPostReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumPostReceivedEvent.java
index 44a24db8fc..28582acf66 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumPostReceivedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumPostReceivedEvent.java
@@ -16,13 +16,13 @@ public class ForumPostReceivedEvent extends Event {
 
 	private final GroupId groupId;
 	private final ForumPostHeader header;
-	private final String body;
+	private final String text;
 
 	public ForumPostReceivedEvent(GroupId groupId, ForumPostHeader header,
-			String body) {
+			String text) {
 		this.groupId = groupId;
 		this.header = header;
-		this.body = body;
+		this.text = text;
 	}
 
 	public GroupId getGroupId() {
@@ -33,7 +33,7 @@ public class ForumPostReceivedEvent extends Event {
 		return header;
 	}
 
-	public String getBody() {
-		return body;
+	public String getText() {
+		return text;
 	}
 }
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionConstants.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionConstants.java
index 87681d5250..d57f8f71f2 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionConstants.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionConstants.java
@@ -8,7 +8,7 @@ public interface IntroductionConstants {
 	 * The maximum length of the introducer's optional message to the
 	 * introducees in UTF-8 bytes.
 	 */
-	int MAX_REQUEST_MESSAGE_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
+	int MAX_INTRODUCTION_TEXT_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
 
 	String LABEL_SESSION_ID = "org.briarproject.briar.introduction/SESSION_ID";
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionManager.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionManager.java
index b52273daf2..0d0e4ef221 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionManager.java
@@ -36,7 +36,7 @@ public interface IntroductionManager extends ConversationClient {
 	/**
 	 * Sends two initial introduction messages.
 	 */
-	void makeIntroduction(Contact c1, Contact c2, @Nullable String msg,
+	void makeIntroduction(Contact c1, Contact c2, @Nullable String text,
 			long timestamp) throws DbException;
 
 	/**
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java
index fe7de46de4..5cbe9e0dd9 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java
@@ -19,10 +19,10 @@ public class IntroductionRequest extends PrivateRequest<Author> {
 
 	public IntroductionRequest(MessageId messageId, GroupId groupId,
 			long time, boolean local, boolean sent, boolean seen, boolean read,
-			SessionId sessionId, Author author, @Nullable String message,
+			SessionId sessionId, Author author, @Nullable String text,
 			boolean answered, boolean contact) {
 		super(messageId, groupId, time, local, sent, seen, read, sessionId,
-				author, message, answered);
+				author, text, answered);
 		this.contact = contact;
 	}
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/ConversationManager.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/ConversationManager.java
index be2eeab2c4..4d33514182 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/ConversationManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/ConversationManager.java
@@ -25,7 +25,7 @@ public interface ConversationManager {
 	 * Returns the headers of all messages in the given private conversation.
 	 *
 	 * Only {@link MessagingManager} returns only headers.
-	 * The others also return the message body.
+	 * The others also return the message text.
 	 */
 	Collection<PrivateMessageHeader> getMessageHeaders(ContactId c)
 			throws DbException;
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/MessagingConstants.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/MessagingConstants.java
index f515e60e6a..1efdd748d7 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/MessagingConstants.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/MessagingConstants.java
@@ -5,7 +5,7 @@ import static org.briarproject.bramble.api.sync.SyncConstants.MAX_MESSAGE_BODY_L
 public interface MessagingConstants {
 
 	/**
-	 * The maximum length of a private message's body in bytes.
+	 * The maximum length of a private message's text in UTF-8 bytes.
 	 */
-	int MAX_PRIVATE_MESSAGE_BODY_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
+	int MAX_PRIVATE_MESSAGE_TEXT_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
 }
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/MessagingManager.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/MessagingManager.java
index 47c4f66b0f..65c2eacb09 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/MessagingManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/MessagingManager.java
@@ -42,8 +42,8 @@ public interface MessagingManager extends ConversationClient {
 	GroupId getConversationId(ContactId c) throws DbException;
 
 	/**
-	 * Returns the body of the private message with the given ID.
+	 * Returns the text of the private message with the given ID.
 	 */
-	String getMessageBody(MessageId m) throws DbException;
+	String getMessageText(MessageId m) throws DbException;
 
 }
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageFactory.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageFactory.java
index 95db155f10..8fbcf11a86 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageFactory.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageFactory.java
@@ -8,6 +8,6 @@ import org.briarproject.bramble.api.sync.GroupId;
 public interface PrivateMessageFactory {
 
 	PrivateMessage createPrivateMessage(GroupId groupId, long timestamp,
-			String body) throws FormatException;
+			String text) throws FormatException;
 
 }
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateRequest.java
index b980cea30d..ead57390b9 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateRequest.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateRequest.java
@@ -16,17 +16,17 @@ public class PrivateRequest<N extends Nameable> extends PrivateMessageHeader {
 	private final SessionId sessionId;
 	private final N nameable;
 	@Nullable
-	private final String message;
+	private final String text;
 	private final boolean answered;
 
 	public PrivateRequest(MessageId messageId, GroupId groupId, long time,
 			boolean local, boolean sent, boolean seen, boolean read,
-			SessionId sessionId, N nameable, @Nullable String message,
+			SessionId sessionId, N nameable, @Nullable String text,
 			boolean answered) {
 		super(messageId, groupId, time, local, sent, seen, read);
 		this.sessionId = sessionId;
 		this.nameable = nameable;
-		this.message = message;
+		this.text = text;
 		this.answered = answered;
 	}
 
@@ -43,8 +43,8 @@ public class PrivateRequest<N extends Nameable> extends PrivateMessageHeader {
 	}
 
 	@Nullable
-	public String getMessage() {
-		return message;
+	public String getText() {
+		return text;
 	}
 
 	public boolean wasAnswered() {
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageFactory.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageFactory.java
index a36ce0be74..03b0ea3fd0 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageFactory.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/GroupMessageFactory.java
@@ -51,13 +51,13 @@ public interface GroupMessageFactory {
 	 * @param parentId The ID of the parent post, or null if the post has no
 	 * parent
 	 * @param author The author of the post
-	 * @param body The content of the post
+	 * @param text The text of the post
 	 * @param previousMsgId The ID of the author's previous message
 	 * in this group
 	 */
 	@CryptoExecutor
 	GroupMessage createGroupMessage(GroupId groupId, long timestamp,
-			@Nullable MessageId parentId, LocalAuthor author, String body,
+			@Nullable MessageId parentId, LocalAuthor author, String text,
 			MessageId previousMsgId);
 
 }
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupConstants.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupConstants.java
index c9496a1b3f..0f2d699ac2 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupConstants.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupConstants.java
@@ -15,13 +15,13 @@ public interface PrivateGroupConstants {
 	int GROUP_SALT_LENGTH = 32;
 
 	/**
-	 * The maximum length of a group post's body in bytes.
+	 * The maximum length of a group post's text in UTF-8 bytes.
 	 */
-	int MAX_GROUP_POST_BODY_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
+	int MAX_GROUP_POST_TEXT_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
 
 	/**
-	 * The maximum length of a group invitation message in bytes.
+	 * The maximum length of a group invitation's optional text in UTF-8 bytes.
 	 */
-	int MAX_GROUP_INVITATION_MSG_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
+	int MAX_GROUP_INVITATION_TEXT_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
 
 }
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupManager.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupManager.java
index de4caecfc6..6ef9e02599 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/PrivateGroupManager.java
@@ -92,9 +92,9 @@ public interface PrivateGroupManager {
 	Collection<PrivateGroup> getPrivateGroups() throws DbException;
 
 	/**
-	 * Returns the body of the private group message with the given ID.
+	 * Returns the text of the private group message with the given ID.
 	 */
-	String getMessageBody(MessageId m) throws DbException;
+	String getMessageText(MessageId m) throws DbException;
 
 	/**
 	 * Returns the headers of all messages in the given private group.
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupMessageAddedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupMessageAddedEvent.java
index ce75850e52..80c25bd0be 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupMessageAddedEvent.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/event/GroupMessageAddedEvent.java
@@ -17,14 +17,14 @@ public class GroupMessageAddedEvent extends Event {
 
 	private final GroupId groupId;
 	private final GroupMessageHeader header;
-	private final String body;
+	private final String text;
 	private final boolean local;
 
 	public GroupMessageAddedEvent(GroupId groupId, GroupMessageHeader header,
-			String body, boolean local) {
+			String text, boolean local) {
 		this.groupId = groupId;
 		this.header = header;
-		this.body = body;
+		this.text = text;
 		this.local = local;
 	}
 
@@ -36,8 +36,8 @@ public class GroupMessageAddedEvent extends Event {
 		return header;
 	}
 
-	public String getBody() {
-		return body;
+	public String getText() {
+		return text;
 	}
 
 	public boolean isLocal() {
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationManager.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationManager.java
index 913edbbc66..a7295bc762 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationManager.java
@@ -42,7 +42,7 @@ public interface GroupInvitationManager extends ConversationClient {
 	 * shared with the contact, for example because an invitation is already
 	 * pending.
 	 */
-	void sendInvitation(GroupId g, ContactId c, @Nullable String message,
+	void sendInvitation(GroupId g, ContactId c, @Nullable String text,
 			long timestamp, byte[] signature) throws DbException;
 
 	/**
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationRequest.java
index 794b005af6..6d3e5d5783 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationRequest.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationRequest.java
@@ -18,9 +18,9 @@ public class GroupInvitationRequest extends InvitationRequest<PrivateGroup> {
 	public GroupInvitationRequest(MessageId id, GroupId groupId, long time,
 			boolean local, boolean sent, boolean seen, boolean read,
 			SessionId sessionId, PrivateGroup shareable,
-			@Nullable String message, boolean available, boolean canBeOpened) {
+			@Nullable String text, boolean available, boolean canBeOpened) {
 		super(id, groupId, time, local, sent, seen, read, sessionId, shareable,
-				message, available, canBeOpened);
+				text, available, canBeOpened);
 	}
 
 	@Override
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationRequest.java
index 7cf456eb61..4da9acd78b 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationRequest.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationRequest.java
@@ -14,10 +14,10 @@ public abstract class InvitationRequest<S extends Shareable> extends
 
 	public InvitationRequest(MessageId messageId, GroupId groupId, long time,
 			boolean local, boolean sent, boolean seen, boolean read,
-			SessionId sessionId, S object, @Nullable String message,
+			SessionId sessionId, S object, @Nullable String text,
 			boolean available, boolean canBeOpened) {
 		super(messageId, groupId, time, local, sent, seen, read, sessionId,
-				object, message, !available);
+				object, text, !available);
 		this.canBeOpened = canBeOpened;
 	}
 
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingConstants.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingConstants.java
index 81eb45aff6..86e9f7f244 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingConstants.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingConstants.java
@@ -5,9 +5,8 @@ import static org.briarproject.bramble.api.sync.SyncConstants.MAX_MESSAGE_BODY_L
 public interface SharingConstants {
 
 	/**
-	 * The maximum length of the optional message from the inviter to the
-	 * invitee in UTF-8 bytes.
+	 * The maximum length of an invitation's optional text in UTF-8 bytes.
 	 */
-	int MAX_INVITATION_MESSAGE_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
+	int MAX_INVITATION_TEXT_LENGTH = MAX_MESSAGE_BODY_LENGTH - 1024;
 
 }
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java
index 64f4af7621..8b81a8b207 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java
@@ -17,11 +17,11 @@ public interface SharingManager<S extends Shareable>
 		extends ConversationClient {
 
 	/**
-	 * Sends an invitation to share the given group with the given contact
-	 * and sends an optional message along with it.
+	 * Sends an invitation to share the given group with the given contact,
+	 * including optional text.
 	 */
 	void sendInvitation(GroupId shareableId, ContactId contactId,
-			@Nullable String message, long timestamp) throws DbException;
+			@Nullable String text, long timestamp) throws DbException;
 
 	/**
 	 * Responds to a pending group invitation
diff --git a/briar-api/src/main/java/org/briarproject/briar/api/test/TestDataCreator.java b/briar-api/src/main/java/org/briarproject/briar/api/test/TestDataCreator.java
index fe1178307b..073a7b38a8 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/test/TestDataCreator.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/test/TestDataCreator.java
@@ -26,7 +26,7 @@ public interface TestDataCreator {
 	Contact addContact(String name) throws DbException;
 
 	@IoExecutor
-	void addPrivateMessage(Contact contact, String body, long time,
+	void addPrivateMessage(Contact contact, String text, long time,
 			boolean local) throws DbException, FormatException;
 
 }
diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
index 7718b0d68a..18c97f3ad8 100644
--- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java
@@ -456,21 +456,22 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
 	}
 
 	@Override
-	public String getPostBody(MessageId m) throws DbException {
+	public String getPostText(MessageId m) throws DbException {
 		try {
-			return getPostBody(clientHelper.getMessageAsList(m));
+			return getPostText(clientHelper.getMessageAsList(m));
 		} catch (FormatException e) {
 			throw new DbException(e);
 		}
 	}
 
-	private String getPostBody(BdfList message) throws FormatException {
+	private String getPostText(BdfList message) throws FormatException {
 		MessageType type = MessageType.valueOf(message.getLong(0).intValue());
 		if (type == POST) {
-			// type, body, signature
+			// Type, text, signature
 			return message.getString(1);
 		} else if (type == WRAPPED_POST) {
-			// type, p_group descriptor, p_timestamp, p_content, p_signature
+			// Type, copied group descriptor, copied timestamp, copied text,
+			// copied signature
 			return message.getString(3);
 		} else {
 			throw new FormatException();
diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostFactoryImpl.java
index bd89a0ba81..12e2ff4353 100644
--- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostFactoryImpl.java
@@ -20,8 +20,8 @@ import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
 
-import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_COMMENT_LENGTH;
-import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_BODY_LENGTH;
+import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_COMMENT_TEXT_LENGTH;
+import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_TEXT_LENGTH;
 import static org.briarproject.briar.api.blog.MessageType.COMMENT;
 import static org.briarproject.briar.api.blog.MessageType.POST;
 import static org.briarproject.briar.api.blog.MessageType.WRAPPED_COMMENT;
@@ -42,23 +42,23 @@ class BlogPostFactoryImpl implements BlogPostFactory {
 
 	@Override
 	public BlogPost createBlogPost(GroupId groupId, long timestamp,
-			@Nullable MessageId parent, LocalAuthor author, String body)
+			@Nullable MessageId parent, LocalAuthor author, String text)
 			throws FormatException, GeneralSecurityException {
 
 		// Validate the arguments
-		int bodyLength = StringUtils.toUtf8(body).length;
-		if (bodyLength > MAX_BLOG_POST_BODY_LENGTH)
+		int textLength = StringUtils.toUtf8(text).length;
+		if (textLength > MAX_BLOG_POST_TEXT_LENGTH)
 			throw new IllegalArgumentException();
 
 		// Serialise the data to be signed
-		BdfList signed = BdfList.of(groupId, timestamp, body);
+		BdfList signed = BdfList.of(groupId, timestamp, text);
 
 		// Generate the signature
 		byte[] sig = clientHelper
 				.sign(SIGNING_LABEL_POST, signed, author.getPrivateKey());
 
 		// Serialise the signed message
-		BdfList message = BdfList.of(POST.getInt(), body, sig);
+		BdfList message = BdfList.of(POST.getInt(), text, sig);
 		Message m = clientHelper.createMessage(groupId, timestamp, message);
 		return new BlogPost(m, parent, author);
 	}
@@ -72,7 +72,7 @@ class BlogPostFactoryImpl implements BlogPostFactory {
 		if (comment != null) {
 			int commentLength = StringUtils.toUtf8(comment).length;
 			if (commentLength == 0) throw new IllegalArgumentException();
-			if (commentLength > MAX_BLOG_COMMENT_LENGTH)
+			if (commentLength > MAX_BLOG_COMMENT_TEXT_LENGTH)
 				throw new IllegalArgumentException();
 		}
 
@@ -98,10 +98,10 @@ class BlogPostFactoryImpl implements BlogPostFactory {
 			throw new IllegalArgumentException("Needs to wrap a POST");
 
 		// Serialise the message
-		String content = body.getString(1);
+		String text = body.getString(1);
 		byte[] signature = body.getRaw(2);
 		BdfList message = BdfList.of(WRAPPED_POST.getInt(), descriptor,
-				timestamp, content, signature);
+				timestamp, text, signature);
 		return clientHelper
 				.createMessage(groupId, clock.currentTimeMillis(), message);
 	}
@@ -116,10 +116,10 @@ class BlogPostFactoryImpl implements BlogPostFactory {
 		// Serialise the message
 		byte[] descriptor = body.getRaw(1);
 		long timestamp = body.getLong(2);
-		String content = body.getString(3);
+		String text = body.getString(3);
 		byte[] signature = body.getRaw(4);
 		BdfList message = BdfList.of(WRAPPED_POST.getInt(), descriptor,
-				timestamp, content, signature);
+				timestamp, text, signature);
 		return clientHelper
 				.createMessage(groupId, clock.currentTimeMillis(), message);
 	}
diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostValidator.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostValidator.java
index 0b53468df8..86347dd344 100644
--- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogPostValidator.java
@@ -22,10 +22,10 @@ import org.briarproject.briar.api.blog.MessageType;
 
 import java.security.GeneralSecurityException;
 import java.util.Collection;
-import java.util.Collections;
 
 import javax.annotation.concurrent.Immutable;
 
+import static java.util.Collections.singletonList;
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_SIGNATURE_LENGTH;
 import static org.briarproject.bramble.util.ValidationUtils.checkLength;
 import static org.briarproject.bramble.util.ValidationUtils.checkSize;
@@ -39,8 +39,8 @@ import static org.briarproject.briar.api.blog.BlogConstants.KEY_RSS_FEED;
 import static org.briarproject.briar.api.blog.BlogConstants.KEY_TIMESTAMP;
 import static org.briarproject.briar.api.blog.BlogConstants.KEY_TIME_RECEIVED;
 import static org.briarproject.briar.api.blog.BlogConstants.KEY_TYPE;
-import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_COMMENT_LENGTH;
-import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_BODY_LENGTH;
+import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_COMMENT_TEXT_LENGTH;
+import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_TEXT_LENGTH;
 import static org.briarproject.briar.api.blog.BlogManager.CLIENT_ID;
 import static org.briarproject.briar.api.blog.BlogManager.MAJOR_VERSION;
 import static org.briarproject.briar.api.blog.BlogPostFactory.SIGNING_LABEL_COMMENT;
@@ -99,15 +99,15 @@ class BlogPostValidator extends BdfMessageValidator {
 	private BdfMessageContext validatePost(Message m, Group g, BdfList body)
 			throws InvalidMessageException, FormatException {
 
-		// Content, Signature
+		// Text, signature
 		checkSize(body, 2);
-		String postBody = body.getString(0);
-		checkLength(postBody, 0, MAX_BLOG_POST_BODY_LENGTH);
+		String text = body.getString(0);
+		checkLength(text, 0, MAX_BLOG_POST_TEXT_LENGTH);
 
-		// Verify Signature
+		// Verify signature
 		byte[] sig = body.getRaw(1);
 		checkLength(sig, 1, MAX_SIGNATURE_LENGTH);
-		BdfList signed = BdfList.of(g.getId(), m.getTimestamp(), postBody);
+		BdfList signed = BdfList.of(g.getId(), m.getTimestamp(), text);
 		Blog b = blogFactory.parseBlog(g);
 		Author a = b.getAuthor();
 		try {
@@ -128,23 +128,23 @@ class BlogPostValidator extends BdfMessageValidator {
 	private BdfMessageContext validateComment(Message m, Group g, BdfList body)
 			throws InvalidMessageException, FormatException {
 
-		// comment, parent_original_id, parent_id, signature
+		// Comment, parent original ID, parent ID, signature
 		checkSize(body, 4);
 
 		// Comment
 		String comment = body.getOptionalString(0);
-		checkLength(comment, 1, MAX_BLOG_COMMENT_LENGTH);
+		checkLength(comment, 1, MAX_BLOG_COMMENT_TEXT_LENGTH);
 
-		// parent_original_id
-		// The ID of a post or comment in this group or another group
+		// Parent original ID
+		// The ID of a post or comment in this blog or another blog
 		byte[] pOriginalIdBytes = body.getRaw(1);
 		checkLength(pOriginalIdBytes, MessageId.LENGTH);
 		MessageId pOriginalId = new MessageId(pOriginalIdBytes);
 
-		// parent_id
-		// The ID of a post, comment, wrapped post or wrapped comment in this
-		// group, which had the ID parent_original_id in the group
-		// where it was originally posted
+		// Parent ID
+		// The ID of the comment's parent, which is a post, comment, wrapped
+		// post or wrapped comment in this blog, which had the ID
+		// parentOriginalId in the blog where it was originally posted
 		byte[] currentIdBytes = body.getRaw(2);
 		checkLength(currentIdBytes, MessageId.LENGTH);
 		MessageId currentId = new MessageId(currentIdBytes);
@@ -170,35 +170,37 @@ class BlogPostValidator extends BdfMessageValidator {
 		meta.put(KEY_ORIGINAL_PARENT_MSG_ID, pOriginalId);
 		meta.put(KEY_PARENT_MSG_ID, currentId);
 		meta.put(KEY_AUTHOR, clientHelper.toList(a));
-		Collection<MessageId> dependencies = Collections.singleton(currentId);
+		Collection<MessageId> dependencies = singletonList(currentId);
 		return new BdfMessageContext(meta, dependencies);
 	}
 
 	private BdfMessageContext validateWrappedPost(BdfList body)
 			throws InvalidMessageException, FormatException {
 
-		// p_group descriptor, p_timestamp, p_content, p_signature
+		// Copied group descriptor, copied timestamp, copied text, copied
+		// signature
 		checkSize(body, 4);
 
-		// Group Descriptor
+		// Copied group descriptor of original post
 		byte[] descriptor = body.getRaw(0);
 
-		// Timestamp of Wrapped Post
+		// Copied timestamp of original post
 		long wTimestamp = body.getLong(1);
 		if (wTimestamp < 0) throw new FormatException();
 
-		// Content of Wrapped Post
-		String content = body.getString(2);
+		// Copied text of original post
+		String text = body.getString(2);
+		checkLength(text, 0, MAX_BLOG_POST_TEXT_LENGTH);
 
-		// Signature of Wrapped Post
+		// Copied signature of original post
 		byte[] signature = body.getRaw(3);
 		checkLength(signature, 1, MAX_SIGNATURE_LENGTH);
 
-		// Get and Validate the Wrapped Message
+		// Reconstruct and validate the original post
 		Group wGroup = groupFactory.createGroup(CLIENT_ID, MAJOR_VERSION,
 				descriptor);
 		Blog wBlog = blogFactory.parseBlog(wGroup);
-		BdfList wBodyList = BdfList.of(POST.getInt(), content, signature);
+		BdfList wBodyList = BdfList.of(POST.getInt(), text, signature);
 		byte[] wBody = clientHelper.toByteArray(wBodyList);
 		Message wMessage =
 				messageFactory.createMessage(wGroup.getId(), wTimestamp, wBody);
@@ -217,47 +219,46 @@ class BlogPostValidator extends BdfMessageValidator {
 	private BdfMessageContext validateWrappedComment(BdfList body)
 			throws InvalidMessageException, FormatException {
 
-		// c_group descriptor, c_timestamp, c_comment, c_parent_original_id,
-		// c_parent_id, c_signature, parent_id
+		// Copied group descriptor, copied timestamp, copied text, copied
+		// parent original ID, copied parent ID, copied signature, parent ID
 		checkSize(body, 7);
 
-		// Group Descriptor
+		// Copied group descriptor of original comment
 		byte[] descriptor = body.getRaw(0);
 
-		// Timestamp of Wrapped Comment
+		// Copied timestamp of original comment
 		long wTimestamp = body.getLong(1);
 		if (wTimestamp < 0) throw new FormatException();
 
-		// Body of Wrapped Comment
+		// Copied text of original comment
 		String comment = body.getOptionalString(2);
-		checkLength(comment, 1, MAX_BLOG_COMMENT_LENGTH);
+		checkLength(comment, 1, MAX_BLOG_COMMENT_TEXT_LENGTH);
 
-		// c_parent_original_id
-		// Taken from the original comment
+		// Copied parent original ID of original comment
 		byte[] pOriginalIdBytes = body.getRaw(3);
 		checkLength(pOriginalIdBytes, MessageId.LENGTH);
 		MessageId pOriginalId = new MessageId(pOriginalIdBytes);
 
-		// c_parent_id
-		// Taken from the original comment
+		// Copied parent ID of original comment
 		byte[] oldIdBytes = body.getRaw(4);
 		checkLength(oldIdBytes, MessageId.LENGTH);
 		MessageId oldId = new MessageId(oldIdBytes);
 
-		// c_signature
-		// Taken from the original comment
+		// Copied signature of original comment
 		byte[] signature = body.getRaw(5);
 		checkLength(signature, 1, MAX_SIGNATURE_LENGTH);
 
-		// parent_id
-		// The ID of a post, comment, wrapped post or wrapped comment in this
-		// group, which had the ID c_parent_original_id in the group
-		// where it was originally posted
+		// Parent ID
+		// The ID of this comment's parent, which is a post, comment, wrapped
+		// post or wrapped comment in this blog, which had the ID
+		// copiedParentOriginalId in the blog where the parent was originally
+		// posted, and the ID copiedParentId in the blog where this comment was
+		// originally posted
 		byte[] parentIdBytes = body.getRaw(6);
 		checkLength(parentIdBytes, MessageId.LENGTH);
 		MessageId parentId = new MessageId(parentIdBytes);
 
-		// Get and Validate the Wrapped Comment
+		// Reconstruct and validate the original comment
 		Group wGroup = groupFactory.createGroup(CLIENT_ID, MAJOR_VERSION,
 				descriptor);
 		BdfList wBodyList = BdfList.of(COMMENT.getInt(), comment, pOriginalId,
@@ -269,7 +270,7 @@ class BlogPostValidator extends BdfMessageValidator {
 		BdfMessageContext c = validateComment(wMessage, wGroup, wBodyList);
 
 		// Return the metadata and dependencies
-		Collection<MessageId> dependencies = Collections.singleton(parentId);
+		Collection<MessageId> dependencies = singletonList(parentId);
 		BdfDictionary meta = new BdfDictionary();
 		meta.put(KEY_ORIGINAL_MSG_ID, wMessage.getId());
 		meta.put(KEY_ORIGINAL_PARENT_MSG_ID, pOriginalId);
diff --git a/briar-core/src/main/java/org/briarproject/briar/feed/FeedManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/feed/FeedManagerImpl.java
index 38a374035c..cea1e169ff 100644
--- a/briar-core/src/main/java/org/briarproject/briar/feed/FeedManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/feed/FeedManagerImpl.java
@@ -64,7 +64,7 @@ import okhttp3.ResponseBody;
 import static java.util.concurrent.TimeUnit.MILLISECONDS;
 import static java.util.logging.Level.WARNING;
 import static org.briarproject.bramble.util.LogUtils.logException;
-import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_BODY_LENGTH;
+import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_TEXT_LENGTH;
 import static org.briarproject.briar.api.feed.FeedConstants.FETCH_DELAY_INITIAL;
 import static org.briarproject.briar.api.feed.FeedConstants.FETCH_INTERVAL;
 import static org.briarproject.briar.api.feed.FeedConstants.FETCH_UNIT;
@@ -410,11 +410,10 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
 		return lastEntryTime;
 	}
 
-	private void postEntry(Transaction txn, Feed feed, SyndEntry entry)
-			throws DbException {
+	private void postEntry(Transaction txn, Feed feed, SyndEntry entry) {
 		LOG.info("Adding new entry...");
 
-		// build post body
+		// build post text
 		StringBuilder b = new StringBuilder();
 
 		if (!StringUtils.isNullOrEmpty(entry.getTitle())) {
@@ -454,12 +453,12 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
 		if (date == null) date = entry.getPublishedDate();
 		if (date == null) time = now;
 		else time = Math.max(0, Math.min(date.getTime(), now));
-		String body = getPostBody(b.toString());
+		String text = getPostText(b.toString());
 		try {
 			// create and store post
 			LocalAuthor localAuthor = feed.getLocalAuthor();
 			BlogPost post = blogPostFactory
-					.createBlogPost(groupId, time, null, localAuthor, body);
+					.createBlogPost(groupId, time, null, localAuthor, text);
 			blogManager.addLocalPost(txn, post);
 		} catch (DbException | GeneralSecurityException | FormatException e) {
 			logException(LOG, WARNING, e);
@@ -470,9 +469,9 @@ class FeedManagerImpl implements FeedManager, Client, EventListener,
 		}
 	}
 
-	private String getPostBody(String text) {
+	private String getPostText(String text) {
 		text = clean(text, ARTICLE);
-		return StringUtils.truncateUtf8(text, MAX_BLOG_POST_BODY_LENGTH);
+		return StringUtils.truncateUtf8(text, MAX_BLOG_POST_TEXT_LENGTH);
 	}
 
 	private Comparator<SyndEntry> getEntryComparator() {
diff --git a/briar-core/src/main/java/org/briarproject/briar/forum/ForumManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/forum/ForumManagerImpl.java
index b60e7c94bf..d1b3bb9750 100644
--- a/briar-core/src/main/java/org/briarproject/briar/forum/ForumManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/forum/ForumManagerImpl.java
@@ -82,9 +82,9 @@ class ForumManagerImpl extends BdfIncomingMessageHook implements ForumManager {
 		messageTracker.trackIncomingMessage(txn, m);
 
 		ForumPostHeader header = getForumPostHeader(txn, m.getId(), meta);
-		String postBody = getPostBody(body);
+		String text = getPostText(body);
 		ForumPostReceivedEvent event =
-				new ForumPostReceivedEvent(m.getGroupId(), header, postBody);
+				new ForumPostReceivedEvent(m.getGroupId(), header, text);
 		txn.attach(event);
 
 		// share message
@@ -113,12 +113,12 @@ class ForumManagerImpl extends BdfIncomingMessageHook implements ForumManager {
 	}
 
 	@Override
-	public ForumPost createLocalPost(GroupId groupId, String body,
+	public ForumPost createLocalPost(GroupId groupId, String text,
 			long timestamp, @Nullable MessageId parentId, LocalAuthor author) {
 		ForumPost p;
 		try {
 			p = forumPostFactory.createPost(groupId, timestamp, parentId,
-					author, body);
+					author, text);
 		} catch (GeneralSecurityException | FormatException e) {
 			throw new AssertionError(e);
 		}
@@ -175,16 +175,16 @@ class ForumManagerImpl extends BdfIncomingMessageHook implements ForumManager {
 	}
 
 	@Override
-	public String getPostBody(MessageId m) throws DbException {
+	public String getPostText(MessageId m) throws DbException {
 		try {
-			return getPostBody(clientHelper.getMessageAsList(m));
+			return getPostText(clientHelper.getMessageAsList(m));
 		} catch (FormatException e) {
 			throw new DbException(e);
 		}
 	}
 
-	private String getPostBody(BdfList body) throws FormatException {
-		// Parent ID, author, forum post body, signature
+	private String getPostText(BdfList body) throws FormatException {
+		// Parent ID, author, text, signature
 		return body.getString(2);
 	}
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostFactoryImpl.java
index acdb7fb90e..c07987d9cc 100644
--- a/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostFactoryImpl.java
@@ -8,7 +8,6 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
-import org.briarproject.bramble.util.StringUtils;
 import org.briarproject.briar.api.forum.ForumPost;
 import org.briarproject.briar.api.forum.ForumPostFactory;
 
@@ -18,7 +17,8 @@ import javax.annotation.Nullable;
 import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
 
-import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_BODY_LENGTH;
+import static org.briarproject.bramble.util.StringUtils.utf8IsTooLong;
+import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_TEXT_LENGTH;
 
 @Immutable
 @NotNullByDefault
@@ -33,20 +33,20 @@ class ForumPostFactoryImpl implements ForumPostFactory {
 
 	@Override
 	public ForumPost createPost(GroupId groupId, long timestamp,
-			@Nullable MessageId parent, LocalAuthor author, String body)
+			@Nullable MessageId parent, LocalAuthor author, String text)
 			throws FormatException, GeneralSecurityException {
 		// Validate the arguments
-		if (StringUtils.utf8IsTooLong(body, MAX_FORUM_POST_BODY_LENGTH))
+		if (utf8IsTooLong(text, MAX_FORUM_POST_TEXT_LENGTH))
 			throw new IllegalArgumentException();
 		// Serialise the data to be signed
 		BdfList authorList = clientHelper.toList(author);
 		BdfList signed = BdfList.of(groupId, timestamp, parent, authorList,
-				body);
+				text);
 		// Sign the data
 		byte[] sig = clientHelper.sign(SIGNING_LABEL_POST, signed,
 				author.getPrivateKey());
 		// Serialise the signed message
-		BdfList message = BdfList.of(parent, authorList, body, sig);
+		BdfList message = BdfList.of(parent, authorList, text, sig);
 		Message m = clientHelper.createMessage(groupId, timestamp, message);
 		return new ForumPost(m, parent, author);
 	}
diff --git a/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostValidator.java b/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostValidator.java
index 8357361c73..818a9b9e36 100644
--- a/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/forum/ForumPostValidator.java
@@ -18,10 +18,11 @@ import org.briarproject.bramble.api.system.Clock;
 
 import java.security.GeneralSecurityException;
 import java.util.Collection;
-import java.util.Collections;
 
 import javax.annotation.concurrent.Immutable;
 
+import static java.util.Collections.emptyList;
+import static java.util.Collections.singletonList;
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_SIGNATURE_LENGTH;
 import static org.briarproject.bramble.util.ValidationUtils.checkLength;
 import static org.briarproject.bramble.util.ValidationUtils.checkSize;
@@ -29,7 +30,7 @@ import static org.briarproject.briar.api.forum.ForumConstants.KEY_AUTHOR;
 import static org.briarproject.briar.api.forum.ForumConstants.KEY_PARENT;
 import static org.briarproject.briar.api.forum.ForumConstants.KEY_READ;
 import static org.briarproject.briar.api.forum.ForumConstants.KEY_TIMESTAMP;
-import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_BODY_LENGTH;
+import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_TEXT_LENGTH;
 import static org.briarproject.briar.api.forum.ForumPostFactory.SIGNING_LABEL_POST;
 
 @Immutable
@@ -44,7 +45,7 @@ class ForumPostValidator extends BdfMessageValidator {
 	@Override
 	protected BdfMessageContext validateMessage(Message m, Group g,
 			BdfList body) throws InvalidMessageException, FormatException {
-		// Parent ID, author, content type, forum post body, signature
+		// Parent ID, author, text, signature
 		checkSize(body, 4);
 
 		// Parent ID is optional
@@ -55,16 +56,17 @@ class ForumPostValidator extends BdfMessageValidator {
 		BdfList authorList = body.getList(1);
 		Author author = clientHelper.parseAndValidateAuthor(authorList);
 
-		// Forum post body
-		String content = body.getString(2);
-		checkLength(content, 0, MAX_FORUM_POST_BODY_LENGTH);
+		// Text
+		String text = body.getString(2);
+		checkLength(text, 0, MAX_FORUM_POST_TEXT_LENGTH);
 
 		// Signature
 		byte[] sig = body.getRaw(3);
 		checkLength(sig, 1, MAX_SIGNATURE_LENGTH);
+
 		// Verify the signature
 		BdfList signed = BdfList.of(g.getId(), m.getTimestamp(), parent,
-				authorList, content);
+				authorList, text);
 		try {
 			clientHelper.verifySignature(sig, SIGNING_LABEL_POST,
 					signed, author.getPublicKey());
@@ -74,11 +76,11 @@ class ForumPostValidator extends BdfMessageValidator {
 
 		// Return the metadata and dependencies
 		BdfDictionary meta = new BdfDictionary();
-		Collection<MessageId> dependencies = Collections.emptyList();
+		Collection<MessageId> dependencies = emptyList();
 		meta.put(KEY_TIMESTAMP, m.getTimestamp());
 		if (parent != null) {
 			meta.put(KEY_PARENT, parent);
-			dependencies = Collections.singletonList(new MessageId(parent));
+			dependencies = singletonList(new MessageId(parent));
 		}
 		meta.put(KEY_AUTHOR, authorList);
 		meta.put(KEY_READ, false);
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java
index 68d8d61c4f..8438974e67 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java
@@ -72,11 +72,11 @@ abstract class AbstractProtocolEngine<S extends Session>
 	}
 
 	Message sendRequestMessage(Transaction txn, PeerSession s,
-			long timestamp, Author author, @Nullable String message)
+			long timestamp, Author author, @Nullable String text)
 			throws DbException {
 		Message m = messageEncoder
 				.encodeRequestMessage(s.getContactGroupId(), timestamp,
-						s.getLastLocalMessageId(), author, message);
+						s.getLastLocalMessageId(), author, text);
 		sendMessage(txn, REQUEST, s.getSessionId(), m, true);
 		return m;
 	}
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java
index a0a871ac86..b63da62078 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java
@@ -85,8 +85,7 @@ class IntroduceeProtocolEngine
 
 	@Override
 	public IntroduceeSession onRequestAction(Transaction txn,
-			IntroduceeSession session, @Nullable String message,
-			long timestamp) {
+			IntroduceeSession session, @Nullable String text, long timestamp) {
 		throw new UnsupportedOperationException(); // Invalid in this role
 	}
 
@@ -256,7 +255,7 @@ class IntroduceeProtocolEngine
 				.contactExists(txn, m.getAuthor().getId(), localAuthor.getId());
 		IntroductionRequest request = new IntroductionRequest(m.getMessageId(),
 				m.getGroupId(), m.getTimestamp(), false, false, false, false,
-				s.getSessionId(), m.getAuthor(), m.getMessage(), false,
+				s.getSessionId(), m.getAuthor(), m.getText(), false,
 				contactExists);
 		IntroductionRequestReceivedEvent e =
 				new IntroductionRequestReceivedEvent(request, c.getId());
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerProtocolEngine.java
index c159697adc..69e6579a94 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroducerProtocolEngine.java
@@ -58,11 +58,11 @@ class IntroducerProtocolEngine
 
 	@Override
 	public IntroducerSession onRequestAction(Transaction txn,
-			IntroducerSession s, @Nullable String message, long timestamp)
+			IntroducerSession s, @Nullable String text, long timestamp)
 			throws DbException {
 		switch (s.getState()) {
 			case START:
-				return onLocalRequest(txn, s, message, timestamp);
+				return onLocalRequest(txn, s, text, timestamp);
 			case AWAIT_RESPONSES:
 			case AWAIT_RESPONSE_A:
 			case AWAIT_RESPONSE_B:
@@ -222,7 +222,7 @@ class IntroducerProtocolEngine
 	}
 
 	private IntroducerSession onLocalRequest(Transaction txn,
-			IntroducerSession s, @Nullable String message, long timestamp)
+			IntroducerSession s, @Nullable String text, long timestamp)
 			throws DbException {
 		// Send REQUEST messages
 		long maxIntroduceeTimestamp =
@@ -230,11 +230,9 @@ class IntroducerProtocolEngine
 						getLocalTimestamp(s, s.getIntroduceeB()));
 		long localTimestamp = Math.max(timestamp, maxIntroduceeTimestamp);
 		Message sentA = sendRequestMessage(txn, s.getIntroduceeA(),
-				localTimestamp, s.getIntroduceeB().author, message
-		);
+				localTimestamp, s.getIntroduceeB().author, text);
 		Message sentB = sendRequestMessage(txn, s.getIntroduceeB(),
-				localTimestamp, s.getIntroduceeA().author, message
-		);
+				localTimestamp, s.getIntroduceeA().author, text);
 		// Track the messages
 		messageTracker.trackOutgoingMessage(txn, sentA);
 		messageTracker.trackOutgoingMessage(txn, sentB);
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java
index 50c6fefcb4..6d6727aec7 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java
@@ -316,7 +316,7 @@ class IntroductionManagerImpl extends ConversationClientImpl
 	}
 
 	@Override
-	public void makeIntroduction(Contact c1, Contact c2, @Nullable String msg,
+	public void makeIntroduction(Contact c1, Contact c2, @Nullable String text,
 			long timestamp) throws DbException {
 		Transaction txn = db.startTransaction(false);
 		try {
@@ -350,7 +350,7 @@ class IntroductionManagerImpl extends ConversationClientImpl
 			}
 			// Handle the request action
 			session = introducerEngine
-					.onRequestAction(txn, session, msg, timestamp);
+					.onRequestAction(txn, session, text, timestamp);
 			// Store the updated session
 			storeSession(txn, storageId, session);
 			db.commitTransaction(txn);
@@ -461,14 +461,14 @@ class IntroductionManagerImpl extends ConversationClientImpl
 		Message msg = clientHelper.getMessage(txn, m);
 		BdfList body = clientHelper.toList(msg);
 		RequestMessage rm = messageParser.parseRequestMessage(msg, body);
-		String message = rm.getMessage();
+		String text = rm.getText();
 		LocalAuthor localAuthor = identityManager.getLocalAuthor(txn);
 		boolean contactExists = contactManager
 				.contactExists(txn, rm.getAuthor().getId(),
 						localAuthor.getId());
 		return new IntroductionRequest(m, contactGroupId, meta.getTimestamp(),
 				meta.isLocal(), status.isSent(), status.isSeen(), meta.isRead(),
-				sessionId, author, message, !meta.isAvailableToAnswer(),
+				sessionId, author, text, !meta.isAvailableToAnswer(),
 				contactExists);
 	}
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionValidator.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionValidator.java
index 929c8bddf9..b62604fe55 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionValidator.java
@@ -24,7 +24,7 @@ import static org.briarproject.bramble.api.crypto.CryptoConstants.MAX_SIGNATURE_
 import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
 import static org.briarproject.bramble.util.ValidationUtils.checkLength;
 import static org.briarproject.bramble.util.ValidationUtils.checkSize;
-import static org.briarproject.briar.api.introduction.IntroductionConstants.MAX_REQUEST_MESSAGE_LENGTH;
+import static org.briarproject.briar.api.introduction.IntroductionConstants.MAX_INTRODUCTION_TEXT_LENGTH;
 import static org.briarproject.briar.introduction.MessageType.ACCEPT;
 import static org.briarproject.briar.introduction.MessageType.ACTIVATE;
 import static org.briarproject.briar.introduction.MessageType.AUTH;
@@ -75,8 +75,8 @@ class IntroductionValidator extends BdfMessageValidator {
 		BdfList authorList = body.getList(2);
 		clientHelper.parseAndValidateAuthor(authorList);
 
-		String msg = body.getOptionalString(3);
-		checkLength(msg, 1, MAX_REQUEST_MESSAGE_LENGTH);
+		String text = body.getOptionalString(3);
+		checkLength(text, 1, MAX_INTRODUCTION_TEXT_LENGTH);
 
 		BdfDictionary meta =
 				messageEncoder.encodeRequestMetadata(m.getTimestamp());
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoder.java b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoder.java
index 1327b54a93..98d06b39db 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoder.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoder.java
@@ -31,7 +31,7 @@ interface MessageEncoder {
 
 	Message encodeRequestMessage(GroupId contactGroupId, long timestamp,
 			@Nullable MessageId previousMessageId, Author author,
-			@Nullable String message);
+			@Nullable String text);
 
 	Message encodeAcceptMessage(GroupId contactGroupId, long timestamp,
 			@Nullable MessageId previousMessageId, SessionId sessionId,
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoderImpl.java b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoderImpl.java
index fb3d66f380..91df8046c9 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoderImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageEncoderImpl.java
@@ -89,15 +89,15 @@ class MessageEncoderImpl implements MessageEncoder {
 	@Override
 	public Message encodeRequestMessage(GroupId contactGroupId, long timestamp,
 			@Nullable MessageId previousMessageId, Author author,
-			@Nullable String message) {
-		if (message != null && message.equals("")) {
+			@Nullable String text) {
+		if (text != null && text.isEmpty()) {
 			throw new IllegalArgumentException();
 		}
 		BdfList body = BdfList.of(
 				REQUEST.getValue(),
 				previousMessageId,
 				clientHelper.toList(author),
-				message
+				text
 		);
 		return createMessage(contactGroupId, timestamp, body);
 	}
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageParserImpl.java b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageParserImpl.java
index 69ddd242d1..f934af3a04 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/MessageParserImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/MessageParserImpl.java
@@ -74,9 +74,9 @@ class MessageParserImpl implements MessageParser {
 		MessageId previousMessageId = (previousMsgBytes == null ? null :
 				new MessageId(previousMsgBytes));
 		Author author = clientHelper.parseAndValidateAuthor(body.getList(2));
-		String message = body.getOptionalString(3);
+		String text = body.getOptionalString(3);
 		return new RequestMessage(m.getId(), m.getGroupId(),
-				m.getTimestamp(), previousMessageId, author, message);
+				m.getTimestamp(), previousMessageId, author, text);
 	}
 
 	@Override
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/ProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/ProtocolEngine.java
index e3766c91a4..855cce767a 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/ProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/ProtocolEngine.java
@@ -10,7 +10,7 @@ import javax.annotation.Nullable;
 @NotNullByDefault
 interface ProtocolEngine<S extends Session> {
 
-	S onRequestAction(Transaction txn, S session, @Nullable String message,
+	S onRequestAction(Transaction txn, S session, @Nullable String text,
 			long timestamp) throws DbException;
 
 	S onAcceptAction(Transaction txn, S session, long timestamp)
diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/RequestMessage.java b/briar-core/src/main/java/org/briarproject/briar/introduction/RequestMessage.java
index 743e87af87..f6d8d4870c 100644
--- a/briar-core/src/main/java/org/briarproject/briar/introduction/RequestMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/introduction/RequestMessage.java
@@ -14,14 +14,14 @@ class RequestMessage extends AbstractIntroductionMessage {
 
 	private final Author author;
 	@Nullable
-	private final String message;
+	private final String text;
 
-	protected RequestMessage(MessageId messageId, GroupId groupId,
-			long timestamp, @Nullable MessageId previousMessageId,
-			Author author, @Nullable String message) {
+	RequestMessage(MessageId messageId, GroupId groupId, long timestamp,
+			@Nullable MessageId previousMessageId, Author author,
+			@Nullable String text) {
 		super(messageId, groupId, timestamp, previousMessageId);
 		this.author = author;
-		this.message = message;
+		this.text = text;
 	}
 
 	public Author getAuthor() {
@@ -29,8 +29,8 @@ class RequestMessage extends AbstractIntroductionMessage {
 	}
 
 	@Nullable
-	public String getMessage() {
-		return message;
+	public String getText() {
+		return text;
 	}
 
 }
diff --git a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java
index cf97a32b29..a2d10005a8 100644
--- a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java
@@ -209,9 +209,9 @@ class MessagingManagerImpl extends ConversationClientImpl
 	}
 
 	@Override
-	public String getMessageBody(MessageId m) throws DbException {
+	public String getMessageText(MessageId m) throws DbException {
 		try {
-			// 0: private message body
+			// 0: private message text
 			return clientHelper.getMessageAsList(m).getString(0);
 		} catch (FormatException e) {
 			throw new DbException(e);
diff --git a/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageFactoryImpl.java
index d3b73f8b5b..9bb49d275f 100644
--- a/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageFactoryImpl.java
@@ -13,7 +13,7 @@ import javax.annotation.concurrent.Immutable;
 import javax.inject.Inject;
 
 import static org.briarproject.bramble.util.StringUtils.utf8IsTooLong;
-import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_BODY_LENGTH;
+import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH;
 
 @Immutable
 @NotNullByDefault
@@ -28,12 +28,12 @@ class PrivateMessageFactoryImpl implements PrivateMessageFactory {
 
 	@Override
 	public PrivateMessage createPrivateMessage(GroupId groupId, long timestamp,
-			String body) throws FormatException {
+			String text) throws FormatException {
 		// Validate the arguments
-		if (utf8IsTooLong(body, MAX_PRIVATE_MESSAGE_BODY_LENGTH))
+		if (utf8IsTooLong(text, MAX_PRIVATE_MESSAGE_TEXT_LENGTH))
 			throw new IllegalArgumentException();
 		// Serialise the message
-		BdfList message = BdfList.of(body);
+		BdfList message = BdfList.of(text);
 		Message m = clientHelper.createMessage(groupId, timestamp, message);
 		return new PrivateMessage(m);
 	}
diff --git a/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageValidator.java b/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageValidator.java
index a93218210d..bc1bbcddff 100644
--- a/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/messaging/PrivateMessageValidator.java
@@ -16,7 +16,7 @@ import javax.annotation.concurrent.Immutable;
 
 import static org.briarproject.bramble.util.ValidationUtils.checkLength;
 import static org.briarproject.bramble.util.ValidationUtils.checkSize;
-import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_BODY_LENGTH;
+import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH;
 import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ;
 
 @Immutable
@@ -31,11 +31,10 @@ class PrivateMessageValidator extends BdfMessageValidator {
 	@Override
 	protected BdfMessageContext validateMessage(Message m, Group g,
 			BdfList body) throws FormatException {
-		// private message body
+		// Private message text
 		checkSize(body, 1);
-		// Private message body
-		String privateMessageBody = body.getString(0);
-		checkLength(privateMessageBody, 0, MAX_PRIVATE_MESSAGE_BODY_LENGTH);
+		String text = body.getString(0);
+		checkLength(text, 0, MAX_PRIVATE_MESSAGE_TEXT_LENGTH);
 		// Return the metadata
 		BdfDictionary meta = new BdfDictionary();
 		meta.put("timestamp", m.getTimestamp());
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageFactoryImpl.java
index f0138e82e0..a0033ace7b 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageFactoryImpl.java
@@ -78,7 +78,7 @@ class GroupMessageFactoryImpl implements GroupMessageFactory {
 
 	@Override
 	public GroupMessage createGroupMessage(GroupId groupId, long timestamp,
-			@Nullable MessageId parentId, LocalAuthor member, String content,
+			@Nullable MessageId parentId, LocalAuthor member, String text,
 			MessageId previousMsgId) {
 		try {
 			// Generate the signature
@@ -89,7 +89,7 @@ class GroupMessageFactoryImpl implements GroupMessageFactory {
 					memberList,
 					parentId,
 					previousMsgId,
-					content
+					text
 			);
 			byte[] signature = clientHelper.sign(SIGNING_LABEL_POST, toSign,
 					member.getPrivateKey());
@@ -100,7 +100,7 @@ class GroupMessageFactoryImpl implements GroupMessageFactory {
 					memberList,
 					parentId,
 					previousMsgId,
-					content,
+					text,
 					signature
 			);
 			Message m = clientHelper.createMessage(groupId, timestamp, body);
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageValidator.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageValidator.java
index 525a7216ae..0c19291129 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/GroupMessageValidator.java
@@ -31,7 +31,7 @@ import static org.briarproject.briar.api.privategroup.GroupMessageFactory.SIGNIN
 import static org.briarproject.briar.api.privategroup.GroupMessageFactory.SIGNING_LABEL_POST;
 import static org.briarproject.briar.api.privategroup.MessageType.JOIN;
 import static org.briarproject.briar.api.privategroup.MessageType.POST;
-import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_POST_BODY_LENGTH;
+import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_POST_TEXT_LENGTH;
 import static org.briarproject.briar.api.privategroup.invitation.GroupInvitationFactory.SIGNING_LABEL_INVITE;
 import static org.briarproject.briar.privategroup.GroupConstants.KEY_INITIAL_JOIN_MSG;
 import static org.briarproject.briar.privategroup.GroupConstants.KEY_MEMBER;
@@ -65,7 +65,7 @@ class GroupMessageValidator extends BdfMessageValidator {
 		// Message type (int)
 		int type = body.getLong(0).intValue();
 
-		// Member (list of int, string, raw)
+		// Member (author)
 		BdfList memberList = body.getList(1);
 		Author member = clientHelper.parseAndValidateAuthor(memberList);
 
@@ -144,14 +144,14 @@ class GroupMessageValidator extends BdfMessageValidator {
 	private BdfMessageContext validatePost(Message m, Group g, BdfList body,
 			Author member) throws FormatException {
 		// Message type, member, optional parent ID, previous message ID,
-		// content, signature
+		// text, signature
 		checkSize(body, 6);
 		byte[] parentId = body.getOptionalRaw(2);
 		checkLength(parentId, MessageId.LENGTH);
 		byte[] previousMessageId = body.getRaw(3);
 		checkLength(previousMessageId, MessageId.LENGTH);
-		String content = body.getString(4);
-		checkLength(content, 1, MAX_GROUP_POST_BODY_LENGTH);
+		String text = body.getString(4);
+		checkLength(text, 1, MAX_GROUP_POST_TEXT_LENGTH);
 		byte[] signature = body.getRaw(5);
 		checkLength(signature, 1, MAX_SIGNATURE_LENGTH);
 
@@ -163,7 +163,7 @@ class GroupMessageValidator extends BdfMessageValidator {
 				memberList,
 				parentId,
 				previousMessageId,
-				content
+				text
 		);
 		try {
 			clientHelper.verifySignature(signature, SIGNING_LABEL_POST,
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupManagerImpl.java
index 4a615fe343..64dbe834bc 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/PrivateGroupManagerImpl.java
@@ -299,17 +299,17 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
 	}
 
 	@Override
-	public String getMessageBody(MessageId m) throws DbException {
+	public String getMessageText(MessageId m) throws DbException {
 		try {
-			return getMessageBody(clientHelper.getMessageAsList(m));
+			return getMessageText(clientHelper.getMessageAsList(m));
 		} catch (FormatException e) {
 			throw new DbException(e);
 		}
 	}
 
-	private String getMessageBody(BdfList body) throws FormatException {
+	private String getMessageText(BdfList body) throws FormatException {
 		// Message type (0), member (1), parent ID (2), previous message ID (3),
-		// content (4), signature (5)
+		// text (4), signature (5)
 		return body.getString(4);
 	}
 
@@ -570,8 +570,8 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
 			throws DbException, FormatException {
 		GroupMessageHeader header = getGroupMessageHeader(txn, m.getGroupId(),
 				m.getId(), meta, Collections.emptyMap());
-		String body = getMessageBody(clientHelper.toList(m));
-		txn.attach(new GroupMessageAddedEvent(m.getGroupId(), header, body,
+		String text = getMessageText(clientHelper.toList(m));
+		txn.attach(new GroupMessageAddedEvent(m.getGroupId(), header, text,
 				local));
 	}
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngine.java
index d3bd73943c..aa018042e3 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngine.java
@@ -107,7 +107,7 @@ abstract class AbstractProtocolEngine<S extends Session>
 	}
 
 	Message sendInviteMessage(Transaction txn, S session,
-			@Nullable String message, long timestamp, byte[] signature)
+			@Nullable String text, long timestamp, byte[] signature)
 			throws DbException {
 		Group g = db.getGroup(txn, session.getPrivateGroupId());
 		PrivateGroup privateGroup;
@@ -119,7 +119,7 @@ abstract class AbstractProtocolEngine<S extends Session>
 		Message m = messageEncoder.encodeInviteMessage(
 				session.getContactGroupId(), privateGroup.getId(),
 				timestamp, privateGroup.getName(), privateGroup.getCreator(),
-				privateGroup.getSalt(), message, signature);
+				privateGroup.getSalt(), text, signature);
 		sendMessage(txn, m, INVITE, privateGroup.getId(), true);
 		return m;
 	}
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngine.java
index 4ca049b42e..2830db2a24 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngine.java
@@ -51,11 +51,11 @@ class CreatorProtocolEngine extends AbstractProtocolEngine<CreatorSession> {
 
 	@Override
 	public CreatorSession onInviteAction(Transaction txn, CreatorSession s,
-			@Nullable String message, long timestamp, byte[] signature)
+			@Nullable String text, long timestamp, byte[] signature)
 			throws DbException {
 		switch (s.getState()) {
 			case START:
-				return onLocalInvite(txn, s, message, timestamp, signature);
+				return onLocalInvite(txn, s, text, timestamp, signature);
 			case INVITED:
 			case JOINED:
 			case LEFT:
@@ -145,10 +145,10 @@ class CreatorProtocolEngine extends AbstractProtocolEngine<CreatorSession> {
 	}
 
 	private CreatorSession onLocalInvite(Transaction txn, CreatorSession s,
-			@Nullable String message, long timestamp, byte[] signature)
+			@Nullable String text, long timestamp, byte[] signature)
 			throws DbException {
 		// Send an INVITE message
-		Message sent = sendInviteMessage(txn, s, message, timestamp, signature);
+		Message sent = sendInviteMessage(txn, s, text, timestamp, signature);
 		// Track the message
 		messageTracker.trackOutgoingMessage(txn, sent);
 		// Move to the INVITED state
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java
index 1082ec2cf9..f6d8a010c6 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java
@@ -260,7 +260,7 @@ class GroupInvitationManagerImpl extends ConversationClientImpl
 
 	@Override
 	public void sendInvitation(GroupId privateGroupId, ContactId c,
-			@Nullable String message, long timestamp, byte[] signature)
+			@Nullable String text, long timestamp, byte[] signature)
 			throws DbException {
 		SessionId sessionId = getSessionId(privateGroupId);
 		Transaction txn = db.startTransaction(false);
@@ -283,7 +283,7 @@ class GroupInvitationManagerImpl extends ConversationClientImpl
 				storageId = ss.storageId;
 			}
 			// Handle the invite action
-			session = creatorEngine.onInviteAction(txn, session, message,
+			session = creatorEngine.onInviteAction(txn, session, text,
 					timestamp, signature);
 			// Store the updated session
 			storeSession(txn, storageId, session);
@@ -416,7 +416,7 @@ class GroupInvitationManagerImpl extends ConversationClientImpl
 		return new GroupInvitationRequest(m, contactGroupId,
 				meta.getTimestamp(), meta.isLocal(), status.isSent(),
 				status.isSeen(), meta.isRead(), sessionId, pg,
-				invite.getMessage(), meta.isAvailableToAnswer(), canBeOpened);
+				invite.getText(), meta.isAvailableToAnswer(), canBeOpened);
 	}
 
 	private GroupInvitationResponse parseInvitationResponse(
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidator.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidator.java
index 251b416a88..8e0505759e 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidator.java
@@ -27,7 +27,7 @@ import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_SIGNATUR
 import static org.briarproject.bramble.util.ValidationUtils.checkLength;
 import static org.briarproject.bramble.util.ValidationUtils.checkSize;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.GROUP_SALT_LENGTH;
-import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_INVITATION_MSG_LENGTH;
+import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_INVITATION_TEXT_LENGTH;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_NAME_LENGTH;
 import static org.briarproject.briar.api.privategroup.invitation.GroupInvitationFactory.SIGNING_LABEL_INVITE;
 import static org.briarproject.briar.privategroup.invitation.MessageType.ABORT;
@@ -71,15 +71,15 @@ class GroupInvitationValidator extends BdfMessageValidator {
 
 	private BdfMessageContext validateInviteMessage(Message m, BdfList body)
 			throws FormatException {
-		// Message type, creator, group name, salt, optional message, signature
+		// Message type, creator, group name, salt, optional text, signature
 		checkSize(body, 6);
 		BdfList creatorList = body.getList(1);
 		String groupName = body.getString(2);
 		checkLength(groupName, 1, MAX_GROUP_NAME_LENGTH);
 		byte[] salt = body.getRaw(3);
 		checkLength(salt, GROUP_SALT_LENGTH);
-		String message = body.getOptionalString(4);
-		checkLength(message, 1, MAX_GROUP_INVITATION_MSG_LENGTH);
+		String text = body.getOptionalString(4);
+		checkLength(text, 1, MAX_GROUP_INVITATION_TEXT_LENGTH);
 		byte[] signature = body.getRaw(5);
 		checkLength(signature, 1, MAX_SIGNATURE_LENGTH);
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteMessage.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteMessage.java
index b1847aafa1..5d97e3f7e5 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteMessage.java
@@ -16,16 +16,16 @@ class InviteMessage extends GroupInvitationMessage {
 	private final Author creator;
 	private final byte[] salt, signature;
 	@Nullable
-	private final String message;
+	private final String text;
 
 	InviteMessage(MessageId id, GroupId contactGroupId, GroupId privateGroupId,
 			long timestamp, String groupName, Author creator, byte[] salt,
-			@Nullable String message, byte[] signature) {
+			@Nullable String text, byte[] signature) {
 		super(id, contactGroupId, privateGroupId, timestamp);
 		this.groupName = groupName;
 		this.creator = creator;
 		this.salt = salt;
-		this.message = message;
+		this.text = text;
 		this.signature = signature;
 	}
 
@@ -42,8 +42,8 @@ class InviteMessage extends GroupInvitationMessage {
 	}
 
 	@Nullable
-	String getMessage() {
-		return message;
+	String getText() {
+		return text;
 	}
 
 	byte[] getSignature() {
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngine.java
index 722b562b86..2a8d1a859c 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngine.java
@@ -56,7 +56,7 @@ class InviteeProtocolEngine extends AbstractProtocolEngine<InviteeSession> {
 
 	@Override
 	public InviteeSession onInviteAction(Transaction txn, InviteeSession s,
-			@Nullable String message, long timestamp, byte[] signature) {
+			@Nullable String text, long timestamp, byte[] signature) {
 		throw new UnsupportedOperationException(); // Invalid in this role
 	}
 
@@ -330,7 +330,7 @@ class InviteeProtocolEngine extends AbstractProtocolEngine<InviteeSession> {
 		SessionId sessionId = new SessionId(m.getPrivateGroupId().getBytes());
 		return new GroupInvitationRequest(m.getId(), m.getContactGroupId(),
 				m.getTimestamp(), false, false, true, false, sessionId, pg,
-				m.getMessage(), true, false);
+				m.getText(), true, false);
 	}
 
 }
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoder.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoder.java
index ee6b98a84a..8ba1caaa78 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoder.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoder.java
@@ -24,7 +24,7 @@ interface MessageEncoder {
 
 	Message encodeInviteMessage(GroupId contactGroupId, GroupId privateGroupId,
 			long timestamp, String groupName, Author creator, byte[] salt,
-			@Nullable String message, byte[] signature);
+			@Nullable String text, byte[] signature);
 
 	Message encodeJoinMessage(GroupId contactGroupId, GroupId privateGroupId,
 			long timestamp, @Nullable MessageId previousMessageId);
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoderImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoderImpl.java
index 0a97145052..43f208a948 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoderImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageEncoderImpl.java
@@ -76,7 +76,7 @@ class MessageEncoderImpl implements MessageEncoder {
 	@Override
 	public Message encodeInviteMessage(GroupId contactGroupId,
 			GroupId privateGroupId, long timestamp, String groupName,
-			Author creator, byte[] salt, @Nullable String message,
+			Author creator, byte[] salt, @Nullable String text,
 			byte[] signature) {
 		BdfList creatorList = clientHelper.toList(creator);
 		BdfList body = BdfList.of(
@@ -84,7 +84,7 @@ class MessageEncoderImpl implements MessageEncoder {
 				creatorList,
 				groupName,
 				salt,
-				message,
+				text,
 				signature
 		);
 		try {
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageParserImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageParserImpl.java
index aa682fa52f..d15dda40ff 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageParserImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/MessageParserImpl.java
@@ -98,11 +98,11 @@ class MessageParserImpl implements MessageParser {
 	@Override
 	public InviteMessage parseInviteMessage(Message m, BdfList body)
 			throws FormatException {
-		// Message type, creator, group name, salt, optional message, signature
+		// Message type, creator, group name, salt, optional text, signature
 		BdfList creatorList = body.getList(1);
 		String groupName = body.getString(2);
 		byte[] salt = body.getRaw(3);
-		String message = body.getOptionalString(4);
+		String text = body.getOptionalString(4);
 		byte[] signature = body.getRaw(5);
 
 		// Format version, name, public key
@@ -117,7 +117,7 @@ class MessageParserImpl implements MessageParser {
 				groupName, creator, salt);
 		return new InviteMessage(m.getId(), m.getGroupId(),
 				privateGroup.getId(), m.getTimestamp(), groupName, creator,
-				salt, message, signature);
+				salt, text, signature);
 	}
 
 	@Override
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerProtocolEngine.java
index 9b7096b63b..b7eb293f53 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/PeerProtocolEngine.java
@@ -51,8 +51,7 @@ class PeerProtocolEngine extends AbstractProtocolEngine<PeerSession> {
 
 	@Override
 	public PeerSession onInviteAction(Transaction txn, PeerSession s,
-			@Nullable String message, long timestamp, byte[] signature)
-			throws DbException {
+			@Nullable String text, long timestamp, byte[] signature) {
 		throw new UnsupportedOperationException(); // Invalid in this role
 	}
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngine.java
index b0833260d2..74fa35269f 100644
--- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/ProtocolEngine.java
@@ -10,7 +10,7 @@ import javax.annotation.Nullable;
 @NotNullByDefault
 interface ProtocolEngine<S extends Session> {
 
-	S onInviteAction(Transaction txn, S session, @Nullable String message,
+	S onInviteAction(Transaction txn, S session, @Nullable String text,
 			long timestamp, byte[] signature) throws DbException;
 
 	S onJoinAction(Transaction txn, S session) throws DbException;
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogInvitationFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogInvitationFactoryImpl.java
index 780f2b7a10..f8c0a14000 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogInvitationFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogInvitationFactoryImpl.java
@@ -24,7 +24,7 @@ public class BlogInvitationFactoryImpl
 		SessionId sessionId = new SessionId(m.getShareableId().getBytes());
 		return new BlogInvitationRequest(m.getId(), m.getContactGroupId(),
 				m.getTimestamp(), local, sent, seen, read, sessionId,
-				m.getShareable(), m.getMessage(), available, canBeOpened);
+				m.getShareable(), m.getText(), available, canBeOpened);
 	}
 
 	@Override
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumInvitationFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumInvitationFactoryImpl.java
index 4259c5cb24..4566ad0472 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumInvitationFactoryImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumInvitationFactoryImpl.java
@@ -24,7 +24,7 @@ public class ForumInvitationFactoryImpl
 		SessionId sessionId = new SessionId(m.getShareableId().getBytes());
 		return new ForumInvitationRequest(m.getId(), m.getContactGroupId(),
 				m.getTimestamp(), local, sent, seen, read, sessionId,
-				m.getShareable(), m.getMessage(), available, canBeOpened);
+				m.getShareable(), m.getText(), available, canBeOpened);
 	}
 
 	@Override
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/InviteMessage.java b/briar-core/src/main/java/org/briarproject/briar/sharing/InviteMessage.java
index f6343cd8db..d94fe4f60c 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/InviteMessage.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/InviteMessage.java
@@ -14,17 +14,17 @@ class InviteMessage<S extends Shareable> extends SharingMessage {
 
 	private final S shareable;
 	@Nullable
-	private final String message;
+	private final String text;
 
 	InviteMessage(MessageId id, @Nullable MessageId previousMessageId,
-			GroupId contactGroupId, S shareable, @Nullable String message,
+			GroupId contactGroupId, S shareable, @Nullable String text,
 			long timestamp) {
 		super(id, contactGroupId, shareable.getId(), timestamp,
 				previousMessageId);
-		if (message != null && message.equals(""))
+		if (text != null && text.isEmpty())
 			throw new IllegalArgumentException();
 		this.shareable = shareable;
-		this.message = message;
+		this.text = text;
 	}
 
 	public S getShareable() {
@@ -32,8 +32,8 @@ class InviteMessage<S extends Shareable> extends SharingMessage {
 	}
 
 	@Nullable
-	public String getMessage() {
-		return message;
+	public String getText() {
+		return text;
 	}
 
 }
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoder.java b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoder.java
index b53d4fbadf..6723ea0bbc 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoder.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoder.java
@@ -24,7 +24,7 @@ interface MessageEncoder {
 
 	Message encodeInviteMessage(GroupId contactGroupId, long timestamp,
 			@Nullable MessageId previousMessageId, BdfList descriptor,
-			@Nullable String message);
+			@Nullable String text);
 
 	Message encodeAcceptMessage(GroupId contactGroupId, GroupId shareableId,
 			long timestamp, @Nullable MessageId previousMessageId);
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoderImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoderImpl.java
index 17938b8e21..295fcf8714 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoderImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageEncoderImpl.java
@@ -76,14 +76,14 @@ class MessageEncoderImpl implements MessageEncoder {
 	@Override
 	public Message encodeInviteMessage(GroupId contactGroupId, long timestamp,
 			@Nullable MessageId previousMessageId, BdfList descriptor,
-			@Nullable String message) {
-		if (message != null && message.equals(""))
+			@Nullable String text) {
+		if (text != null && text.isEmpty())
 			throw new IllegalArgumentException();
 		BdfList body = BdfList.of(
 				INVITE.getValue(),
 				previousMessageId,
 				descriptor,
-				message
+				text
 		);
 		try {
 			return messageFactory.createMessage(contactGroupId, timestamp,
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageParserImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageParserImpl.java
index 4eaa981143..9ad4db67b5 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/MessageParserImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/MessageParserImpl.java
@@ -89,9 +89,9 @@ abstract class MessageParserImpl<S extends Shareable>
 		MessageId previousMessageId = (b == null ? null : new MessageId(b));
 		BdfList descriptor = body.getList(2);
 		S shareable = createShareable(descriptor);
-		String message = body.getOptionalString(3);
+		String text = body.getOptionalString(3);
 		return new InviteMessage<>(m.getId(), previousMessageId,
-				m.getGroupId(), shareable, message, m.getTimestamp());
+				m.getGroupId(), shareable, text, m.getTimestamp());
 	}
 
 	@Override
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngine.java
index 4277303c62..c0c94453c5 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngine.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngine.java
@@ -12,7 +12,7 @@ import javax.annotation.Nullable;
 interface ProtocolEngine<S extends Shareable> {
 
 	Session onInviteAction(Transaction txn, Session session,
-			@Nullable String message, long timestamp) throws DbException;
+			@Nullable String text, long timestamp) throws DbException;
 
 	Session onAcceptAction(Transaction txn, Session session) throws DbException;
 
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngineImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngineImpl.java
index 8b20cdb105..b5741d0310 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngineImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ProtocolEngineImpl.java
@@ -78,10 +78,10 @@ abstract class ProtocolEngineImpl<S extends Shareable>
 
 	@Override
 	public Session onInviteAction(Transaction txn, Session s,
-			@Nullable String message, long timestamp) throws DbException {
+			@Nullable String text, long timestamp) throws DbException {
 		switch (s.getState()) {
 			case START:
-				return onLocalInvite(txn, s, message, timestamp);
+				return onLocalInvite(txn, s, text, timestamp);
 			case LOCAL_INVITED:
 			case REMOTE_INVITED:
 			case SHARING:
@@ -94,9 +94,9 @@ abstract class ProtocolEngineImpl<S extends Shareable>
 	}
 
 	private Session onLocalInvite(Transaction txn, Session s,
-			@Nullable String message, long timestamp) throws DbException {
+			@Nullable String text, long timestamp) throws DbException {
 		// Send an INVITE message
-		Message sent = sendInviteMessage(txn, s, message, timestamp);
+		Message sent = sendInviteMessage(txn, s, text, timestamp);
 		// Track the message
 		messageTracker.trackOutgoingMessage(txn, sent);
 		// Make the shareable visible to the contact
@@ -112,7 +112,7 @@ abstract class ProtocolEngineImpl<S extends Shareable>
 	}
 
 	private Message sendInviteMessage(Transaction txn, Session s,
-			@Nullable String message, long timestamp) throws DbException {
+			@Nullable String text, long timestamp) throws DbException {
 		Group g = db.getGroup(txn, s.getShareableId());
 		BdfList descriptor;
 		try {
@@ -122,7 +122,7 @@ abstract class ProtocolEngineImpl<S extends Shareable>
 		}
 		long localTimestamp = Math.max(timestamp, getLocalTimestamp(s));
 		Message m = messageEncoder.encodeInviteMessage(s.getContactGroupId(),
-				localTimestamp, s.getLastLocalMessageId(), descriptor, message);
+				localTimestamp, s.getLastLocalMessageId(), descriptor, text);
 		sendMessage(txn, m, INVITE, s.getShareableId(), true);
 		return m;
 	}
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
index d37807953c..2d638b9a82 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java
@@ -252,7 +252,7 @@ abstract class SharingManagerImpl<S extends Shareable>
 
 	@Override
 	public void sendInvitation(GroupId shareableId, ContactId contactId,
-			@Nullable String message, long timestamp) throws DbException {
+			@Nullable String text, long timestamp) throws DbException {
 		SessionId sessionId = getSessionId(shareableId);
 		Transaction txn = db.startTransaction(false);
 		try {
@@ -277,7 +277,7 @@ abstract class SharingManagerImpl<S extends Shareable>
 				storageId = ss.storageId;
 			}
 			// Handle the invite action
-			session = engine.onInviteAction(txn, session, message, timestamp);
+			session = engine.onInviteAction(txn, session, text, timestamp);
 			// Store the updated session
 			storeSession(txn, storageId, session);
 			db.commitTransaction(txn);
diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingValidator.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingValidator.java
index a7eadcd154..dcf38bf7b8 100644
--- a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingValidator.java
+++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingValidator.java
@@ -21,7 +21,7 @@ import javax.annotation.concurrent.Immutable;
 
 import static org.briarproject.bramble.util.ValidationUtils.checkLength;
 import static org.briarproject.bramble.util.ValidationUtils.checkSize;
-import static org.briarproject.briar.api.sharing.SharingConstants.MAX_INVITATION_MESSAGE_LENGTH;
+import static org.briarproject.briar.api.sharing.SharingConstants.MAX_INVITATION_TEXT_LENGTH;
 import static org.briarproject.briar.sharing.MessageType.INVITE;
 
 @Immutable
@@ -60,8 +60,8 @@ abstract class SharingValidator extends BdfMessageValidator {
 		checkLength(previousMessageId, UniqueId.LENGTH);
 		BdfList descriptor = body.getList(2);
 		GroupId shareableId = validateDescriptor(descriptor);
-		String msg = body.getOptionalString(3);
-		checkLength(msg, 1, MAX_INVITATION_MESSAGE_LENGTH);
+		String text = body.getOptionalString(3);
+		checkLength(text, 1, MAX_INVITATION_TEXT_LENGTH);
 
 		BdfDictionary meta = messageEncoder
 				.encodeMetadata(INVITE, shareableId, m.getTimestamp(), false,
diff --git a/briar-core/src/main/java/org/briarproject/briar/test/TestDataCreatorImpl.java b/briar-core/src/main/java/org/briarproject/briar/test/TestDataCreatorImpl.java
index 6b2dbc2439..40d655114c 100644
--- a/briar-core/src/main/java/org/briarproject/briar/test/TestDataCreatorImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/test/TestDataCreatorImpl.java
@@ -312,15 +312,15 @@ public class TestDataCreatorImpl implements TestDataCreator {
 	private void createRandomPrivateMessage(GroupId groupId, int num)
 			throws DbException, FormatException {
 		long timestamp = clock.currentTimeMillis() - num * 60 * 1000;
-		String body = getRandomText();
+		String text = getRandomText();
 		boolean local = random.nextBoolean();
-		createPrivateMessage(groupId, body, timestamp, local);
+		createPrivateMessage(groupId, text, timestamp, local);
 	}
 
-	private void createPrivateMessage(GroupId groupId, String body,
+	private void createPrivateMessage(GroupId groupId, String text,
 			long timestamp, boolean local) throws DbException, FormatException {
 		PrivateMessage m = privateMessageFactory
-				.createPrivateMessage(groupId, timestamp, body);
+				.createPrivateMessage(groupId, timestamp, text);
 		BdfDictionary meta = new BdfDictionary();
 		meta.put("timestamp", timestamp);
 		meta.put("local", local);
@@ -338,10 +338,10 @@ public class TestDataCreatorImpl implements TestDataCreator {
 	}
 
 	@Override
-	public void addPrivateMessage(Contact contact, String body, long time,
+	public void addPrivateMessage(Contact contact, String text, long time,
 			boolean local) throws DbException, FormatException {
 		Group group = messagingManager.getContactGroup(contact);
-		createPrivateMessage(group.getId(), body, time, local);
+		createPrivateMessage(group.getId(), text, time, local);
 	}
 
 	private void createBlogPosts(List<Contact> contacts, int numBlogPosts)
@@ -359,10 +359,10 @@ public class TestDataCreatorImpl implements TestDataCreator {
 	private void addBlogPost(LocalAuthor author, int num) throws DbException {
 		Blog blog = blogManager.getPersonalBlog(author);
 		long timestamp = clock.currentTimeMillis() - num * 60 * 1000;
-		String body = getRandomText();
+		String text = getRandomText();
 		try {
 			BlogPost blogPost = blogPostFactory.createBlogPost(blog.getId(),
-					timestamp, null, author, body);
+					timestamp, null, author, text);
 			blogManager.addLocalPost(blogPost);
 		} catch (FormatException | GeneralSecurityException e) {
 			throw new RuntimeException(e);
@@ -404,14 +404,14 @@ public class TestDataCreatorImpl implements TestDataCreator {
 			Contact contact = contacts.get(random.nextInt(contacts.size()));
 			LocalAuthor author = localAuthors.get(contact);
 			long timestamp = clock.currentTimeMillis() - i * 60 * 1000;
-			String body = getRandomText();
+			String text = getRandomText();
 			MessageId parent = null;
 			if (random.nextBoolean() && posts.size() > 0) {
 				ForumPost parentPost =
 						posts.get(random.nextInt(posts.size()));
 				parent = parentPost.getMessage().getId();
 			}
-			ForumPost post = forumManager.createLocalPost(forum.getId(), body,
+			ForumPost post = forumManager.createLocalPost(forum.getId(), text,
 					timestamp, parent, author);
 			posts.add(post);
 			forumManager.addLocalPost(post);
diff --git a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java
index a4f79f5c10..a0f16d45b6 100644
--- a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerImplTest.java
@@ -47,7 +47,7 @@ import static org.briarproject.briar.api.blog.BlogConstants.KEY_RSS_FEED;
 import static org.briarproject.briar.api.blog.BlogConstants.KEY_TIMESTAMP;
 import static org.briarproject.briar.api.blog.BlogConstants.KEY_TIME_RECEIVED;
 import static org.briarproject.briar.api.blog.BlogConstants.KEY_TYPE;
-import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_COMMENT_LENGTH;
+import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_COMMENT_TEXT_LENGTH;
 import static org.briarproject.briar.api.blog.BlogManager.CLIENT_ID;
 import static org.briarproject.briar.api.blog.BlogManager.MAJOR_VERSION;
 import static org.briarproject.briar.api.blog.MessageType.COMMENT;
@@ -99,7 +99,7 @@ public class BlogManagerImplTest extends BriarTestCase {
 		rssMessageId = rssMessage.getId();
 		timestamp = message.getTimestamp();
 		timeReceived = timestamp + 1;
-		comment = getRandomString(MAX_BLOG_COMMENT_LENGTH);
+		comment = getRandomString(MAX_BLOG_COMMENT_TEXT_LENGTH);
 	}
 
 	@Test
@@ -694,7 +694,7 @@ public class BlogManagerImplTest extends BriarTestCase {
 				new BdfEntry(KEY_TIMESTAMP, timestamp),
 				new BdfEntry(KEY_TIME_RECEIVED, timeReceived)
 		);
-		String localComment = getRandomString(MAX_BLOG_COMMENT_LENGTH);
+		String localComment = getRandomString(MAX_BLOG_COMMENT_TEXT_LENGTH);
 		Message localCommentMsg = getMessage(blog2.getId());
 		MessageId localCommentId = localCommentMsg.getId();
 		BdfDictionary localCommentMeta = BdfDictionary.of(
diff --git a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java
index 11265c8104..ffa6ed7341 100644
--- a/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/blog/BlogManagerIntegrationTest.java
@@ -122,15 +122,14 @@ public class BlogManagerIntegrationTest
 	@Test
 	public void testBlogPost() throws Exception {
 		// check that blog0 has no posts
-		String body = getRandomString(42);
+		String text = getRandomString(42);
 		Collection<BlogPostHeader> headers0 =
 				blogManager0.getPostHeaders(blog0.getId());
 		assertEquals(0, headers0.size());
 
 		// add a post to blog0
-		BlogPost p = blogPostFactory
-				.createBlogPost(blog0.getId(), clock.currentTimeMillis(), null,
-						author0, body);
+		BlogPost p = blogPostFactory.createBlogPost(blog0.getId(),
+				clock.currentTimeMillis(), null, author0, text);
 		blogManager0.addLocalPost(p);
 
 		// check that post is now in blog0
@@ -138,7 +137,7 @@ public class BlogManagerIntegrationTest
 		assertEquals(1, headers0.size());
 
 		// check that body is there
-		assertEquals(body, blogManager0.getPostBody(p.getMessage().getId()));
+		assertEquals(text, blogManager0.getPostText(p.getMessage().getId()));
 
 		// make sure that blog0 at author1 doesn't have the post yet
 		Collection<BlogPostHeader> headers1 =
@@ -154,16 +153,16 @@ public class BlogManagerIntegrationTest
 		assertEquals(POST, headers1.iterator().next().getType());
 
 		// check that body is there
-		assertEquals(body, blogManager1.getPostBody(p.getMessage().getId()));
+		assertEquals(text, blogManager1.getPostText(p.getMessage().getId()));
 	}
 
 	@Test
 	public void testBlogPostInWrongBlog() throws Exception {
 		// add a post to blog1
-		String body = getRandomString(42);
+		String text = getRandomString(42);
 		BlogPost p = blogPostFactory
 				.createBlogPost(blog1.getId(), clock.currentTimeMillis(), null,
-						author0, body);
+						author0, text);
 		blogManager0.addLocalPost(p);
 
 		// check that post is now in blog1
@@ -199,10 +198,10 @@ public class BlogManagerIntegrationTest
 	@Test
 	public void testBlogComment() throws Exception {
 		// add a post to blog0
-		String body = getRandomString(42);
+		String text = getRandomString(42);
 		BlogPost p = blogPostFactory
 				.createBlogPost(blog0.getId(), clock.currentTimeMillis(), null,
-						author0, body);
+						author0, text);
 		blogManager0.addLocalPost(p);
 
 		// sync the post over
@@ -234,7 +233,7 @@ public class BlogManagerIntegrationTest
 		// ensure that body can be retrieved from wrapped post
 		MessageId parentId = h.getParentId();
 		assertNotNull(parentId);
-		assertEquals(body, blogManager0.getPostBody(parentId));
+		assertEquals(text, blogManager0.getPostText(parentId));
 
 		// 1 has only their own comment in their blog
 		headers1 = blogManager1.getPostHeaders(blog1.getId());
@@ -244,10 +243,10 @@ public class BlogManagerIntegrationTest
 	@Test
 	public void testBlogCommentOnOwnPost() throws Exception {
 		// add a post to blog0
-		String body = getRandomString(42);
+		String text = getRandomString(42);
 		BlogPost p = blogPostFactory
 				.createBlogPost(blog0.getId(), clock.currentTimeMillis(), null,
-						author0, body);
+						author0, text);
 		blogManager0.addLocalPost(p);
 
 		// get header of own post
@@ -270,7 +269,7 @@ public class BlogManagerIntegrationTest
 		assertEquals(2, headers1.size());
 		for (BlogPostHeader h : headers1) {
 			if (h.getType() == POST) {
-				assertEquals(body, blogManager1.getPostBody(h.getId()));
+				assertEquals(text, blogManager1.getPostText(h.getId()));
 			} else {
 				assertEquals(comment, ((BlogCommentHeader) h).getComment());
 			}
@@ -280,10 +279,10 @@ public class BlogManagerIntegrationTest
 	@Test
 	public void testCommentOnComment() throws Exception {
 		// add a post to blog0
-		String body = getRandomString(42);
+		String text = getRandomString(42);
 		BlogPost p = blogPostFactory
 				.createBlogPost(blog0.getId(), clock.currentTimeMillis(), null,
-						author0, body);
+						author0, text);
 		blogManager0.addLocalPost(p);
 
 		// sync the post over
@@ -368,10 +367,10 @@ public class BlogManagerIntegrationTest
 	@Test
 	public void testCommentOnOwnComment() throws Exception {
 		// add a post to blog0
-		String body = getRandomString(42);
+		String text = getRandomString(42);
 		BlogPost p = blogPostFactory
 				.createBlogPost(blog0.getId(), clock.currentTimeMillis(), null,
-						author0, body);
+						author0, text);
 		blogManager0.addLocalPost(p);
 
 		// sync the post over
@@ -413,10 +412,10 @@ public class BlogManagerIntegrationTest
 		assertTrue(rssBlog.isRssFeed());
 
 		// add a feed post to rssBlog
-		String body = getRandomString(42);
+		String text = getRandomString(42);
 		BlogPost p = blogPostFactory
 				.createBlogPost(rssBlog.getId(), clock.currentTimeMillis(),
-						null, author0, body);
+						null, author0, text);
 		blogManager0.addLocalPost(p);
 
 		// make sure it got saved as an RSS feed post
@@ -432,10 +431,10 @@ public class BlogManagerIntegrationTest
 	@Test
 	public void testFeedReblog() throws Exception {
 		// add a feed post to rssBlog
-		String body = getRandomString(42);
+		String text = getRandomString(42);
 		BlogPost p = blogPostFactory
 				.createBlogPost(rssBlog.getId(), clock.currentTimeMillis(),
-						null, author0, body);
+						null, author0, text);
 		blogManager0.addLocalPost(p);
 
 		// reblog feed post to own blog
diff --git a/briar-core/src/test/java/org/briarproject/briar/blog/BlogPostValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/blog/BlogPostValidatorTest.java
index 5cbe347ae3..884753afab 100644
--- a/briar-core/src/test/java/org/briarproject/briar/blog/BlogPostValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/blog/BlogPostValidatorTest.java
@@ -62,7 +62,7 @@ public class BlogPostValidatorTest extends BriarTestCase {
 	private final BlogFactory blogFactory = context.mock(BlogFactory.class);
 	private final ClientHelper clientHelper = context.mock(ClientHelper.class);
 	private final Author author;
-	private final String body = getRandomString(42);
+	private final String text = getRandomString(42);
 
 	public BlogPostValidatorTest() {
 		group = getGroup(CLIENT_ID, MAJOR_VERSION);
@@ -99,9 +99,9 @@ public class BlogPostValidatorTest extends BriarTestCase {
 	private void testValidateProperBlogPost(Blog b, boolean rssFeed)
 			throws IOException, GeneralSecurityException {
 		byte[] sigBytes = getRandomBytes(42);
-		BdfList m = BdfList.of(POST.getInt(), body, sigBytes);
+		BdfList m = BdfList.of(POST.getInt(), text, sigBytes);
 
-		BdfList signed = BdfList.of(b.getId(), message.getTimestamp(), body);
+		BdfList signed = BdfList.of(b.getId(), message.getTimestamp(), text);
 		expectCrypto(b, SIGNING_LABEL_POST, signed, sigBytes);
 		BdfDictionary result =
 				validator.validateMessage(message, group, m).getDictionary();
@@ -114,7 +114,7 @@ public class BlogPostValidatorTest extends BriarTestCase {
 
 	@Test(expected = FormatException.class)
 	public void testValidateBlogPostWithoutAttachments() throws IOException {
-		BdfList content = BdfList.of(null, null, body);
+		BdfList content = BdfList.of(null, null, text);
 		BdfList m = BdfList.of(POST.getInt(), content, null);
 
 		validator.validateMessage(message, group, m);
@@ -122,7 +122,7 @@ public class BlogPostValidatorTest extends BriarTestCase {
 
 	@Test(expected = FormatException.class)
 	public void testValidateBlogPostWithoutSignature() throws IOException {
-		BdfList content = BdfList.of(null, null, body, null);
+		BdfList content = BdfList.of(null, null, text, null);
 		BdfList m = BdfList.of(POST.getInt(), content, null);
 
 		validator.validateMessage(message, group, m);
@@ -191,12 +191,12 @@ public class BlogPostValidatorTest extends BriarTestCase {
 		// group descriptor, timestamp, content, signature
 		byte[] sigBytes = getRandomBytes(42);
 		BdfList m = BdfList.of(WRAPPED_POST.getInt(), descriptor,
-				message.getTimestamp(), body, sigBytes);
+				message.getTimestamp(), text, sigBytes);
 
-		BdfList signed = BdfList.of(b.getId(), message.getTimestamp(), body);
+		BdfList signed = BdfList.of(b.getId(), message.getTimestamp(), text);
 		expectCrypto(b, SIGNING_LABEL_POST, signed, sigBytes);
 
-		BdfList originalList = BdfList.of(POST.getInt(), body, sigBytes);
+		BdfList originalList = BdfList.of(POST.getInt(), text, sigBytes);
 		byte[] originalBody = getRandomBytes(42);
 
 		context.checking(new Expectations() {{
diff --git a/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerImplTest.java
index 086db14442..48a2037106 100644
--- a/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerImplTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/feed/FeedManagerImplTest.java
@@ -106,7 +106,7 @@ public class FeedManagerImplTest extends BrambleMockTestCase {
 		SyndEntry entry = new SyndEntryImpl();
 		entry.setUpdatedDate(new Date());
 		entries.add(entry);
-		String body = "<p> (" + entry.getUpdatedDate().toString() + ")</p>";
+		String text = "<p> (" + entry.getUpdatedDate().toString() + ")</p>";
 		Message msg = getMessage(blogGroupId);
 		BlogPost post = new BlogPost(msg, null, localAuthor);
 
@@ -116,7 +116,7 @@ public class FeedManagerImplTest extends BrambleMockTestCase {
 			oneOf(clock).currentTimeMillis();
 			will(returnValue(42L));
 			oneOf(blogPostFactory).createBlogPost(feed.getBlogId(), 42L, null,
-					localAuthor, body);
+					localAuthor, text);
 			will(returnValue(post));
 			oneOf(blogManager).addLocalPost(txn, post);
 			oneOf(db).commitTransaction(txn);
diff --git a/briar-core/src/test/java/org/briarproject/briar/forum/ForumManagerTest.java b/briar-core/src/test/java/org/briarproject/briar/forum/ForumManagerTest.java
index d53af17304..179e4282ef 100644
--- a/briar-core/src/test/java/org/briarproject/briar/forum/ForumManagerTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/forum/ForumManagerTest.java
@@ -72,24 +72,24 @@ public class ForumManagerTest
 	}
 
 	private ForumPost createForumPost(GroupId groupId,
-			@Nullable ForumPost parent, String body, long ms) throws Exception {
+			@Nullable ForumPost parent, String text, long ms) throws Exception {
 		return forumPostFactory.createPost(groupId, ms,
 				parent == null ? null : parent.getMessage().getId(),
-				author0, body);
+				author0, text);
 	}
 
 	@Test
 	public void testForumPost() throws Exception {
 		assertEquals(1, forumManager0.getForums().size());
 		long ms1 = clock.currentTimeMillis() - 1000L;
-		String body1 = "some forum text";
+		String text1 = "some forum text";
 		long ms2 = clock.currentTimeMillis();
-		String body2 = "some other forum text";
+		String text2 = "some other forum text";
 		ForumPost post1 =
-				createForumPost(forum0.getGroup().getId(), null, body1, ms1);
+				createForumPost(forum0.getGroup().getId(), null, text1, ms1);
 		assertEquals(ms1, post1.getMessage().getTimestamp());
 		ForumPost post2 =
-				createForumPost(forum0.getGroup().getId(), post1, body2, ms2);
+				createForumPost(forum0.getGroup().getId(), post1, text2, ms2);
 		assertEquals(ms2, post2.getMessage().getTimestamp());
 		forumManager0.addLocalPost(post1);
 		forumManager0.setReadFlag(forum0.getGroup().getId(),
@@ -109,19 +109,19 @@ public class ForumManagerTest
 				forumManager0.getPostHeaders(forum0.getGroup().getId());
 		assertEquals(2, headers.size());
 		for (ForumPostHeader h : headers) {
-			String hBody = forumManager0.getPostBody(h.getId());
+			String hText = forumManager0.getPostText(h.getId());
 
 			boolean isPost1 = h.getId().equals(post1.getMessage().getId());
 			boolean isPost2 = h.getId().equals(post2.getMessage().getId());
 			assertTrue(isPost1 || isPost2);
 			if (isPost1) {
 				assertEquals(h.getTimestamp(), ms1);
-				assertEquals(body1, hBody);
+				assertEquals(text1, hText);
 				assertNull(h.getParentId());
 				assertTrue(h.isRead());
 			} else {
 				assertEquals(h.getTimestamp(), ms2);
-				assertEquals(body2, hBody);
+				assertEquals(text2, hText);
 				assertEquals(h.getParentId(), post2.getParent());
 				assertFalse(h.isRead());
 			}
diff --git a/briar-core/src/test/java/org/briarproject/briar/forum/ForumPostValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/forum/ForumPostValidatorTest.java
index 6fc64fccb2..7369c671d6 100644
--- a/briar-core/src/test/java/org/briarproject/briar/forum/ForumPostValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/forum/ForumPostValidatorTest.java
@@ -24,7 +24,7 @@ import static org.briarproject.briar.api.blog.BlogConstants.KEY_READ;
 import static org.briarproject.briar.api.forum.ForumConstants.KEY_AUTHOR;
 import static org.briarproject.briar.api.forum.ForumConstants.KEY_PARENT;
 import static org.briarproject.briar.api.forum.ForumConstants.KEY_TIMESTAMP;
-import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_BODY_LENGTH;
+import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_TEXT_LENGTH;
 import static org.briarproject.briar.api.forum.ForumPostFactory.SIGNING_LABEL_POST;
 import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
@@ -33,7 +33,7 @@ import static org.junit.Assert.assertFalse;
 public class ForumPostValidatorTest extends ValidatorTestCase {
 
 	private final MessageId parentId = new MessageId(getRandomId());
-	private final String content = getRandomString(MAX_FORUM_POST_BODY_LENGTH);
+	private final String text = getRandomString(MAX_FORUM_POST_TEXT_LENGTH);
 	private final byte[] signature = getRandomBytes(MAX_SIGNATURE_LENGTH);
 	private final Author author = getAuthor();
 	private final String authorName = author.getName();
@@ -41,9 +41,9 @@ public class ForumPostValidatorTest extends ValidatorTestCase {
 	private final BdfList authorList = BdfList.of(author.getFormatVersion(),
 			authorName, authorPublicKey);
 	private final BdfList signedWithParent = BdfList.of(groupId, timestamp,
-			parentId.getBytes(), authorList, content);
+			parentId.getBytes(), authorList, text);
 	private final BdfList signedWithoutParent = BdfList.of(groupId, timestamp,
-			null, authorList, content);
+			null, authorList, text);
 
 	private final ForumPostValidator v = new ForumPostValidator(clientHelper,
 			metadataEncoder, clock);
@@ -51,13 +51,13 @@ public class ForumPostValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsTooShortBody() throws Exception {
 		v.validateMessage(message, group,
-				BdfList.of(parentId, authorList, content));
+				BdfList.of(parentId, authorList, text));
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsTooLongBody() throws Exception {
 		v.validateMessage(message, group,
-				BdfList.of(parentId, authorList, content, signature, 123));
+				BdfList.of(parentId, authorList, text, signature, 123));
 	}
 
 	@Test
@@ -69,40 +69,40 @@ public class ForumPostValidatorTest extends ValidatorTestCase {
 		}});
 
 		BdfMessageContext messageContext = v.validateMessage(message, group,
-				BdfList.of(null, authorList, content, signature));
+				BdfList.of(null, authorList, text, signature));
 		assertExpectedContext(messageContext, false);
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsNonRawParentId() throws Exception {
 		v.validateMessage(message, group,
-				BdfList.of(123, authorList, content, signature));
+				BdfList.of(123, authorList, text, signature));
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsTooShortParentId() throws Exception {
 		byte[] invalidParentId = getRandomBytes(UniqueId.LENGTH - 1);
 		v.validateMessage(message, group,
-				BdfList.of(invalidParentId, authorList, content, signature));
+				BdfList.of(invalidParentId, authorList, text, signature));
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsTooLongParentId() throws Exception {
 		byte[] invalidParentId = getRandomBytes(UniqueId.LENGTH + 1);
 		v.validateMessage(message, group,
-				BdfList.of(invalidParentId, authorList, content, signature));
+				BdfList.of(invalidParentId, authorList, text, signature));
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsNullAuthorList() throws Exception {
 		v.validateMessage(message, group,
-				BdfList.of(parentId, null, content, signature));
+				BdfList.of(parentId, null, text, signature));
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsNonListAuthorList() throws Exception {
 		v.validateMessage(message, group,
-				BdfList.of(parentId, 123, content, signature));
+				BdfList.of(parentId, 123, text, signature));
 	}
 
 	@Test(expected = FormatException.class)
@@ -112,11 +112,11 @@ public class ForumPostValidatorTest extends ValidatorTestCase {
 			will(throwException(new FormatException()));
 		}});
 		v.validateMessage(message, group,
-				BdfList.of(parentId, authorList, content, signature));
+				BdfList.of(parentId, authorList, text, signature));
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsNullContent() throws Exception {
+	public void testRejectsNullText() throws Exception {
 		expectCreateAuthor();
 
 		v.validateMessage(message, group,
@@ -124,7 +124,7 @@ public class ForumPostValidatorTest extends ValidatorTestCase {
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsNonStringContent() throws Exception {
+	public void testRejectsNonStringText() throws Exception {
 		expectCreateAuthor();
 
 		v.validateMessage(message, group,
@@ -132,30 +132,30 @@ public class ForumPostValidatorTest extends ValidatorTestCase {
 	}
 
 	@Test
-	public void testAcceptsMinLengthContent() throws Exception {
-		String shortContent = "";
-		BdfList signedWithShortContent = BdfList.of(groupId, timestamp,
-				parentId.getBytes(), authorList, shortContent);
+	public void testAcceptsMinLengthText() throws Exception {
+		String shortText = "";
+		BdfList signedWithShortText = BdfList.of(groupId, timestamp,
+				parentId.getBytes(), authorList, shortText);
 
 		expectCreateAuthor();
 		context.checking(new Expectations() {{
 			oneOf(clientHelper).verifySignature(signature, SIGNING_LABEL_POST,
-					signedWithShortContent, authorPublicKey);
+					signedWithShortText, authorPublicKey);
 		}});
 
 		BdfMessageContext messageContext = v.validateMessage(message, group,
-				BdfList.of(parentId, authorList, shortContent, signature));
+				BdfList.of(parentId, authorList, shortText, signature));
 		assertExpectedContext(messageContext, true);
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsTooLongContent() throws Exception {
-		String invalidContent = getRandomString(MAX_FORUM_POST_BODY_LENGTH + 1);
+	public void testRejectsTooLongText() throws Exception {
+		String invalidText = getRandomString(MAX_FORUM_POST_TEXT_LENGTH + 1);
 
 		expectCreateAuthor();
 
 		v.validateMessage(message, group,
-				BdfList.of(parentId, authorList, invalidContent, signature));
+				BdfList.of(parentId, authorList, invalidText, signature));
 	}
 
 	@Test(expected = FormatException.class)
@@ -163,7 +163,7 @@ public class ForumPostValidatorTest extends ValidatorTestCase {
 		expectCreateAuthor();
 
 		v.validateMessage(message, group,
-				BdfList.of(parentId, authorList, content, null));
+				BdfList.of(parentId, authorList, text, null));
 	}
 
 	@Test(expected = FormatException.class)
@@ -171,7 +171,7 @@ public class ForumPostValidatorTest extends ValidatorTestCase {
 		expectCreateAuthor();
 
 		v.validateMessage(message, group,
-				BdfList.of(parentId, authorList, content, 123));
+				BdfList.of(parentId, authorList, text, 123));
 	}
 
 	@Test(expected = FormatException.class)
@@ -181,7 +181,7 @@ public class ForumPostValidatorTest extends ValidatorTestCase {
 		expectCreateAuthor();
 
 		v.validateMessage(message, group,
-				BdfList.of(parentId, authorList, content, invalidSignature));
+				BdfList.of(parentId, authorList, text, invalidSignature));
 	}
 
 	@Test(expected = FormatException.class)
@@ -195,7 +195,7 @@ public class ForumPostValidatorTest extends ValidatorTestCase {
 		}});
 
 		v.validateMessage(message, group,
-				BdfList.of(parentId, authorList, content, signature));
+				BdfList.of(parentId, authorList, text, signature));
 	}
 
 	@Test(expected = InvalidMessageException.class)
@@ -209,7 +209,7 @@ public class ForumPostValidatorTest extends ValidatorTestCase {
 		}});
 
 		v.validateMessage(message, group,
-				BdfList.of(parentId, authorList, content, signature));
+				BdfList.of(parentId, authorList, text, signature));
 	}
 
 	private void expectCreateAuthor() throws Exception {
diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionValidatorTest.java
index 4f52aa4de9..32da49db37 100644
--- a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionValidatorTest.java
@@ -19,7 +19,7 @@ import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_K
 import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
 import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.bramble.util.StringUtils.getRandomString;
-import static org.briarproject.briar.api.introduction.IntroductionConstants.MAX_REQUEST_MESSAGE_LENGTH;
+import static org.briarproject.briar.api.introduction.IntroductionConstants.MAX_INTRODUCTION_TEXT_LENGTH;
 import static org.briarproject.briar.introduction.MessageType.ABORT;
 import static org.briarproject.briar.introduction.MessageType.ACCEPT;
 import static org.briarproject.briar.introduction.MessageType.ACTIVATE;
@@ -38,7 +38,7 @@ public class IntroductionValidatorTest extends ValidatorTestCase {
 
 	private final SessionId sessionId = new SessionId(getRandomId());
 	private final MessageId previousMsgId = new MessageId(getRandomId());
-	private final String text = getRandomString(MAX_REQUEST_MESSAGE_LENGTH);
+	private final String text = getRandomString(MAX_INTRODUCTION_TEXT_LENGTH);
 	private final BdfDictionary meta = new BdfDictionary();
 	private final long acceptTimestamp = 42;
 	private final BdfDictionary transportProperties = BdfDictionary.of(
diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/MessageEncoderParserIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/introduction/MessageEncoderParserIntegrationTest.java
index a29f794457..01675c3fcc 100644
--- a/briar-core/src/test/java/org/briarproject/briar/introduction/MessageEncoderParserIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/introduction/MessageEncoderParserIntegrationTest.java
@@ -30,7 +30,7 @@ import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
 import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.bramble.test.TestUtils.getTransportPropertiesMap;
 import static org.briarproject.bramble.util.StringUtils.getRandomString;
-import static org.briarproject.briar.api.introduction.IntroductionConstants.MAX_REQUEST_MESSAGE_LENGTH;
+import static org.briarproject.briar.api.introduction.IntroductionConstants.MAX_INTRODUCTION_TEXT_LENGTH;
 import static org.briarproject.briar.api.introduction.IntroductionManager.CLIENT_ID;
 import static org.briarproject.briar.api.introduction.IntroductionManager.MAJOR_VERSION;
 import static org.briarproject.briar.introduction.MessageType.ABORT;
@@ -65,7 +65,7 @@ public class MessageEncoderParserIntegrationTest extends BrambleTestCase {
 	private final SessionId sessionId = new SessionId(getRandomId());
 	private final MessageId previousMsgId = new MessageId(getRandomId());
 	private final Author author;
-	private final String text = getRandomString(MAX_REQUEST_MESSAGE_LENGTH);
+	private final String text = getRandomString(MAX_INTRODUCTION_TEXT_LENGTH);
 	private final byte[] ephemeralPublicKey =
 			getRandomBytes(MAX_PUBLIC_KEY_LENGTH);
 	private final byte[] mac = getRandomBytes(MAC_BYTES);
@@ -128,7 +128,7 @@ public class MessageEncoderParserIntegrationTest extends BrambleTestCase {
 		assertEquals(m.getTimestamp(), rm.getTimestamp());
 		assertEquals(previousMsgId, rm.getPreviousMessageId());
 		assertEquals(author, rm.getAuthor());
-		assertEquals(text, rm.getMessage());
+		assertEquals(text, rm.getText());
 	}
 
 	@Test
@@ -151,7 +151,7 @@ public class MessageEncoderParserIntegrationTest extends BrambleTestCase {
 		RequestMessage rm =
 				messageParser.parseRequestMessage(m, clientHelper.toList(m));
 
-		assertNull(rm.getMessage());
+		assertNull(rm.getText());
 	}
 
 	@Test
diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/MessageEncoderTest.java b/briar-core/src/test/java/org/briarproject/briar/introduction/MessageEncoderTest.java
index 6f1af6f746..0e06673f50 100644
--- a/briar-core/src/test/java/org/briarproject/briar/introduction/MessageEncoderTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/introduction/MessageEncoderTest.java
@@ -16,7 +16,7 @@ import static org.briarproject.bramble.test.TestUtils.getAuthor;
 import static org.briarproject.bramble.test.TestUtils.getMessage;
 import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.bramble.util.StringUtils.getRandomString;
-import static org.briarproject.briar.api.introduction.IntroductionConstants.MAX_REQUEST_MESSAGE_LENGTH;
+import static org.briarproject.briar.api.introduction.IntroductionConstants.MAX_INTRODUCTION_TEXT_LENGTH;
 import static org.briarproject.briar.introduction.MessageType.REQUEST;
 
 public class MessageEncoderTest extends BrambleMockTestCase {
@@ -34,7 +34,7 @@ public class MessageEncoderTest extends BrambleMockTestCase {
 	private final byte[] body = message.getBody();
 	private final Author author = getAuthor();
 	private final BdfList authorList = new BdfList();
-	private final String text = getRandomString(MAX_REQUEST_MESSAGE_LENGTH);
+	private final String text = getRandomString(MAX_INTRODUCTION_TEXT_LENGTH);
 
 	@Test
 	public void testEncodeRequestMessage() throws FormatException {
diff --git a/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTest.java
index a3f6c1bc41..d9a9733d6a 100644
--- a/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/messaging/MessageSizeIntegrationTest.java
@@ -29,8 +29,8 @@ import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_K
 import static org.briarproject.bramble.api.record.Record.MAX_RECORD_PAYLOAD_BYTES;
 import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.bramble.util.StringUtils.getRandomString;
-import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_BODY_LENGTH;
-import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_BODY_LENGTH;
+import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_POST_TEXT_LENGTH;
+import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH;
 import static org.junit.Assert.assertTrue;
 
 public class MessageSizeIntegrationTest extends BriarTestCase {
@@ -56,13 +56,13 @@ public class MessageSizeIntegrationTest extends BriarTestCase {
 		// Create a maximum-length private message
 		GroupId groupId = new GroupId(getRandomId());
 		long timestamp = Long.MAX_VALUE;
-		String body = getRandomString(MAX_PRIVATE_MESSAGE_BODY_LENGTH);
+		String text = getRandomString(MAX_PRIVATE_MESSAGE_TEXT_LENGTH);
 		PrivateMessage message = privateMessageFactory.createPrivateMessage(
-				groupId, timestamp, body);
+				groupId, timestamp, text);
 		// Check the size of the serialised message
 		int length = message.getMessage().getRawLength();
 		assertTrue(length > UniqueId.LENGTH + 8
-				+ MAX_PRIVATE_MESSAGE_BODY_LENGTH);
+				+ MAX_PRIVATE_MESSAGE_TEXT_LENGTH);
 		assertTrue(length <= MAX_RECORD_PAYLOAD_BYTES);
 	}
 
@@ -79,14 +79,14 @@ public class MessageSizeIntegrationTest extends BriarTestCase {
 		GroupId groupId = new GroupId(getRandomId());
 		long timestamp = Long.MAX_VALUE;
 		MessageId parent = new MessageId(getRandomId());
-		String body = getRandomString(MAX_FORUM_POST_BODY_LENGTH);
+		String text = getRandomString(MAX_FORUM_POST_TEXT_LENGTH);
 		ForumPost post = forumPostFactory.createPost(groupId,
-				timestamp, parent, author, body);
+				timestamp, parent, author, text);
 		// Check the size of the serialised message
 		int length = post.getMessage().getRawLength();
 		assertTrue(length > UniqueId.LENGTH + 8 + UniqueId.LENGTH + 4
 				+ MAX_AUTHOR_NAME_LENGTH + MAX_PUBLIC_KEY_LENGTH
-				+ MAX_FORUM_POST_BODY_LENGTH);
+				+ MAX_FORUM_POST_TEXT_LENGTH);
 		assertTrue(length <= MAX_RECORD_PAYLOAD_BYTES);
 	}
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/messaging/PrivateMessageValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/messaging/PrivateMessageValidatorTest.java
index 41a52035c8..9a279afdb7 100644
--- a/briar-core/src/test/java/org/briarproject/briar/messaging/PrivateMessageValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/messaging/PrivateMessageValidatorTest.java
@@ -5,10 +5,10 @@ import org.briarproject.bramble.api.client.BdfMessageContext;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfList;
 import org.briarproject.bramble.test.ValidatorTestCase;
-import org.briarproject.bramble.util.StringUtils;
 import org.junit.Test;
 
-import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_BODY_LENGTH;
+import static org.briarproject.bramble.util.StringUtils.getRandomString;
+import static org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH;
 import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -30,41 +30,40 @@ public class PrivateMessageValidatorTest extends ValidatorTestCase {
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsNullContent() throws Exception {
+	public void testRejectsNullText() throws Exception {
 		PrivateMessageValidator v = new PrivateMessageValidator(clientHelper,
 				metadataEncoder, clock);
 		v.validateMessage(message, group, BdfList.of((String) null));
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsNonStringContent() throws Exception {
+	public void testRejectsNonStringText() throws Exception {
 		PrivateMessageValidator v = new PrivateMessageValidator(clientHelper,
 				metadataEncoder, clock);
 		v.validateMessage(message, group, BdfList.of(123));
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsTooLongContent() throws Exception {
+	public void testRejectsTooLongText() throws Exception {
 		PrivateMessageValidator v = new PrivateMessageValidator(clientHelper,
 				metadataEncoder, clock);
-		String invalidContent =
-				StringUtils.getRandomString(MAX_PRIVATE_MESSAGE_BODY_LENGTH + 1);
-		v.validateMessage(message, group, BdfList.of(invalidContent));
+		String invalidText =
+				getRandomString(MAX_PRIVATE_MESSAGE_TEXT_LENGTH + 1);
+		v.validateMessage(message, group, BdfList.of(invalidText));
 	}
 
 	@Test
-	public void testAcceptsMaxLengthContent() throws Exception {
+	public void testAcceptsMaxLengthText() throws Exception {
 		PrivateMessageValidator v = new PrivateMessageValidator(clientHelper,
 				metadataEncoder, clock);
-		String content =
-				StringUtils.getRandomString(MAX_PRIVATE_MESSAGE_BODY_LENGTH);
+		String text = getRandomString(MAX_PRIVATE_MESSAGE_TEXT_LENGTH);
 		BdfMessageContext messageContext =
-				v.validateMessage(message, group, BdfList.of(content));
+				v.validateMessage(message, group, BdfList.of(text));
 		assertExpectedContext(messageContext);
 	}
 
 	@Test
-	public void testAcceptsMinLengthContent() throws Exception {
+	public void testAcceptsMinLengthText() throws Exception {
 		PrivateMessageValidator v = new PrivateMessageValidator(clientHelper,
 				metadataEncoder, clock);
 		BdfMessageContext messageContext =
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/GroupMessageValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/GroupMessageValidatorTest.java
index 3148da439f..b8ed89b16c 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/GroupMessageValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/GroupMessageValidatorTest.java
@@ -31,7 +31,7 @@ import static org.briarproject.briar.api.privategroup.MessageType.JOIN;
 import static org.briarproject.briar.api.privategroup.MessageType.POST;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.GROUP_SALT_LENGTH;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_NAME_LENGTH;
-import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_POST_BODY_LENGTH;
+import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_POST_TEXT_LENGTH;
 import static org.briarproject.briar.api.privategroup.invitation.GroupInvitationFactory.SIGNING_LABEL_INVITE;
 import static org.briarproject.briar.privategroup.GroupConstants.KEY_INITIAL_JOIN_MSG;
 import static org.briarproject.briar.privategroup.GroupConstants.KEY_MEMBER;
@@ -76,7 +76,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	private final BdfList token = new BdfList();
 	private final MessageId parentId = new MessageId(getRandomId());
 	private final MessageId previousMsgId = new MessageId(getRandomId());
-	private final String content = getRandomString(MAX_GROUP_POST_BODY_LENGTH);
+	private final String text = getRandomString(MAX_GROUP_POST_TEXT_LENGTH);
 
 	private final GroupMessageValidator validator =
 			new GroupMessageValidator(privateGroupFactory, clientHelper,
@@ -432,7 +432,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsTooShortPost() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
-				previousMsgId, content);
+				previousMsgId, text);
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
 	}
@@ -440,21 +440,21 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsTooLongPost() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
-				previousMsgId, content, memberSignature, "");
+				previousMsgId, text, memberSignature, "");
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithNullAuthor() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), null, parentId, previousMsgId,
-				content, memberSignature);
+				text, memberSignature);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithNonListAuthor() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), 123, parentId, previousMsgId,
-				content, memberSignature);
+				text, memberSignature);
 		validator.validateMessage(message, group, body);
 	}
 
@@ -462,14 +462,14 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	public void testRejectsPostWithInvalidAuthor() throws Exception {
 		expectRejectAuthor(memberList);
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
-				previousMsgId, content, memberSignature);
+				previousMsgId, text, memberSignature);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithTooShortParentId() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList,
-				getRandomBytes(MessageId.LENGTH - 1), previousMsgId, content,
+				getRandomBytes(MessageId.LENGTH - 1), previousMsgId, text,
 				memberSignature);
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
@@ -478,7 +478,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithTooLongParentId() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList,
-				getRandomBytes(MessageId.LENGTH + 1), previousMsgId, content,
+				getRandomBytes(MessageId.LENGTH + 1), previousMsgId, text,
 				memberSignature);
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
@@ -487,7 +487,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithNonRawParentId() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, "not raw",
-				previousMsgId, content, memberSignature);
+				previousMsgId, text, memberSignature);
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
 	}
@@ -495,7 +495,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithTooShortPreviousMsgId() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
-				getRandomBytes(MessageId.LENGTH - 1), content, memberSignature);
+				getRandomBytes(MessageId.LENGTH - 1), text, memberSignature);
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
 	}
@@ -503,7 +503,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithTooLongPreviousMsgId() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
-				getRandomBytes(MessageId.LENGTH + 1), content, memberSignature);
+				getRandomBytes(MessageId.LENGTH + 1), text, memberSignature);
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
 	}
@@ -511,7 +511,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithNullPreviousMsgId() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId, null,
-				content, memberSignature);
+				text, memberSignature);
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
 	}
@@ -519,13 +519,13 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithNonRawPreviousMsgId() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
-				"not raw", content, memberSignature);
+				"not raw", text, memberSignature);
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsPostWithTooShortContent() throws Exception {
+	public void testRejectsPostWithTooShortText() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
 				previousMsgId, "", memberSignature);
 		expectParseAuthor(memberList, member);
@@ -533,16 +533,16 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsPostWithTooLongContent() throws Exception {
+	public void testRejectsPostWithTooLongText() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
-				previousMsgId, getRandomString(MAX_GROUP_POST_BODY_LENGTH + 1),
+				previousMsgId, getRandomString(MAX_GROUP_POST_TEXT_LENGTH + 1),
 				memberSignature);
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsPostWithNullContent() throws Exception {
+	public void testRejectsPostWithNullText() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
 				previousMsgId, null, memberSignature);
 		expectParseAuthor(memberList, member);
@@ -550,7 +550,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsPostWithNonStringContent() throws Exception {
+	public void testRejectsPostWithNonStringText() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
 				previousMsgId, getRandomBytes(5), memberSignature);
 		expectParseAuthor(memberList, member);
@@ -560,7 +560,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithTooShortSignature() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
-				previousMsgId, content, new byte[0]);
+				previousMsgId, text, new byte[0]);
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
 	}
@@ -568,7 +568,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithTooLongSignature() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
-				previousMsgId, content,
+				previousMsgId, text,
 				getRandomBytes(MAX_SIGNATURE_LENGTH + 1));
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
@@ -577,7 +577,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithNullSignature() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
-				previousMsgId, content, null);
+				previousMsgId, text, null);
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
 	}
@@ -585,7 +585,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithNonRawSignature() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
-				previousMsgId, content, "not raw");
+				previousMsgId, text, "not raw");
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
 	}
@@ -593,7 +593,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsPostWithInvalidSignature() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
-				previousMsgId, content, memberSignature);
+				previousMsgId, text, memberSignature);
 		expectPostMessage(parentId, false);
 		validator.validateMessage(message, group, body);
 	}
@@ -601,7 +601,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test
 	public void testAcceptsPost() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, parentId,
-				previousMsgId, content, memberSignature);
+				previousMsgId, text, memberSignature);
 		expectPostMessage(parentId, true);
 		BdfMessageContext messageContext =
 				validator.validateMessage(message, group, body);
@@ -616,7 +616,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test
 	public void testAcceptsTopLevelPost() throws Exception {
 		BdfList body = BdfList.of(POST.getInt(), memberList, null,
-				previousMsgId, content, memberSignature);
+				previousMsgId, text, memberSignature);
 		expectPostMessage(null, true);
 		BdfMessageContext messageContext =
 				validator.validateMessage(message, group, body);
@@ -636,7 +636,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 				memberList,
 				parentId == null ? null : parentId.getBytes(),
 				previousMsgId.getBytes(),
-				content
+				text
 		);
 		expectParseAuthor(memberList, member);
 		context.checking(new Expectations() {{
@@ -662,7 +662,7 @@ public class GroupMessageValidatorTest extends ValidatorTestCase {
 	@Test(expected = InvalidMessageException.class)
 	public void testRejectsMessageWithUnknownType() throws Exception {
 		BdfList body = BdfList.of(POST.getInt() + 1, memberList,
-				parentId, previousMsgId, content, memberSignature);
+				parentId, previousMsgId, text, memberSignature);
 		expectParseAuthor(memberList, member);
 		validator.validateMessage(message, group, body);
 	}
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupIntegrationTest.java
index 2d384dac7e..c42fe911f6 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupIntegrationTest.java
@@ -176,10 +176,10 @@ public class PrivateGroupIntegrationTest
 
 		// 2 sends a message to the group
 		long time = clock.currentTimeMillis();
-		String body = "This is a test message!";
+		String text = "This is a test message!";
 		MessageId previousMsgId = groupManager2.getPreviousMsgId(groupId0);
 		GroupMessage msg = groupMessageFactory
-				.createGroupMessage(groupId0, time, null, author2, body,
+				.createGroupMessage(groupId0, time, null, author2, text,
 						previousMsgId);
 		groupManager2.addLocalMessage(msg);
 
@@ -209,13 +209,13 @@ public class PrivateGroupIntegrationTest
 	}
 
 	private void sendInvitation(ContactId c, long timestamp,
-			@Nullable String msg) throws DbException {
+			@Nullable String text) throws DbException {
 		Contact contact = contactManager0.getContact(c);
 		byte[] signature = groupInvitationFactory
 				.signInvitation(contact, groupId0, timestamp,
 						author0.getPrivateKey());
 		groupInvitationManager0
-				.sendInvitation(groupId0, c, msg, timestamp, signature);
+				.sendInvitation(groupId0, c, text, timestamp, signature);
 	}
 
 	private GroupMember getGroupMember(PrivateGroupManager groupManager,
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupManagerIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupManagerIntegrationTest.java
index 1723e5f519..4c4172741b 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupManagerIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/PrivateGroupManagerIntegrationTest.java
@@ -80,11 +80,11 @@ public class PrivateGroupManagerIntegrationTest
 
 		// create and add test message
 		long time = clock.currentTimeMillis();
-		String body = "This is a test message!";
+		String text = "This is a test message!";
 		MessageId previousMsgId =
 				groupManager0.getPreviousMsgId(groupId0);
 		GroupMessage msg = groupMessageFactory
-				.createGroupMessage(groupId0, time, null, author0, body,
+				.createGroupMessage(groupId0, time, null, author0, text,
 						previousMsgId);
 		groupManager0.addLocalMessage(msg);
 		assertEquals(msg.getMessage().getId(),
@@ -108,7 +108,7 @@ public class PrivateGroupManagerIntegrationTest
 		assertEquals(author0, header.getAuthor());
 		assertEquals(time, header.getTimestamp());
 		assertEquals(VERIFIED, header.getAuthorStatus());
-		assertEquals(body, groupManager1.getMessageBody(header.getId()));
+		assertEquals(text, groupManager1.getMessageText(header.getId()));
 		GroupCount count = groupManager1.getGroupCount(groupId0);
 		assertEquals(2, count.getUnreadCount());
 		assertEquals(time, count.getLatestMsgTime());
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngineTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngineTest.java
index a831d16ee6..2c2d1e6354 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngineTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/AbstractProtocolEngineTest.java
@@ -34,7 +34,7 @@ import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
 import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.bramble.util.StringUtils.getRandomString;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.GROUP_SALT_LENGTH;
-import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_INVITATION_MSG_LENGTH;
+import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_INVITATION_TEXT_LENGTH;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_NAME_LENGTH;
 import static org.briarproject.briar.api.privategroup.PrivateGroupManager.CLIENT_ID;
 import static org.briarproject.briar.api.privategroup.PrivateGroupManager.MAJOR_VERSION;
@@ -89,7 +89,7 @@ abstract class AbstractProtocolEngineTest extends BrambleMockTestCase {
 			new InviteMessage(new MessageId(getRandomId()), contactGroupId,
 					privateGroupId, 0L, privateGroup.getName(),
 					privateGroup.getCreator(), privateGroup.getSalt(),
-					getRandomString(MAX_GROUP_INVITATION_MSG_LENGTH),
+					getRandomString(MAX_GROUP_INVITATION_TEXT_LENGTH),
 					signature);
 	final JoinMessage joinMessage =
 			new JoinMessage(new MessageId(getRandomId()), contactGroupId,
@@ -121,12 +121,12 @@ abstract class AbstractProtocolEngineTest extends BrambleMockTestCase {
 		}});
 	}
 
-	void expectSendInviteMessage(String msg) throws Exception {
+	void expectSendInviteMessage(String text) throws Exception {
 		context.checking(new Expectations() {{
 			oneOf(messageEncoder)
 					.encodeInviteMessage(contactGroupId, privateGroupId,
 							inviteTimestamp, privateGroup.getName(), author,
-							privateGroup.getSalt(), msg, signature);
+							privateGroup.getSalt(), text, signature);
 			will(returnValue(message));
 		}});
 		expectSendMessage(INVITE, true);
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngineTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngineTest.java
index 19e996e43d..9495b19ec4 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngineTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngineTest.java
@@ -15,6 +15,7 @@ import static org.briarproject.briar.privategroup.invitation.CreatorState.JOINED
 import static org.briarproject.briar.privategroup.invitation.CreatorState.LEFT;
 import static org.briarproject.briar.privategroup.invitation.CreatorState.START;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 
 public class CreatorProtocolEngineTest extends AbstractProtocolEngineTest {
 
@@ -36,15 +37,15 @@ public class CreatorProtocolEngineTest extends AbstractProtocolEngineTest {
 	public void testOnInviteActionFromStart() throws Exception {
 		CreatorSession session =
 				new CreatorSession(contactGroupId, privateGroupId);
-		String message = "Invitation Message";
+		String text = "Invitation text";
 
-		expectOnLocalInvite(message);
+		expectOnLocalInvite(text);
 		CreatorSession newSession =
-				engine.onInviteAction(txn, session, message, inviteTimestamp,
+				engine.onInviteAction(txn, session, text, inviteTimestamp,
 						signature);
 		assertEquals(INVITED, newSession.getState());
 		assertEquals(messageId, newSession.getLastLocalMessageId());
-		assertEquals(null, newSession.getLastRemoteMessageId());
+		assertNull(newSession.getLastRemoteMessageId());
 		assertEquals(messageTimestamp, newSession.getLocalTimestamp());
 		assertEquals(inviteTimestamp, newSession.getInviteTimestamp());
 		assertSessionConstantsUnchanged(session, newSession);
@@ -61,13 +62,13 @@ public class CreatorProtocolEngineTest extends AbstractProtocolEngineTest {
 						signature);
 		assertEquals(INVITED, newSession.getState());
 		assertEquals(messageId, newSession.getLastLocalMessageId());
-		assertEquals(null, newSession.getLastRemoteMessageId());
+		assertNull(newSession.getLastRemoteMessageId());
 		assertEquals(messageTimestamp, newSession.getLocalTimestamp());
 		assertEquals(inviteTimestamp, newSession.getInviteTimestamp());
 		assertSessionConstantsUnchanged(session, newSession);
 	}
 
-	private void expectOnLocalInvite(String msg) throws Exception {
+	private void expectOnLocalInvite(String text) throws Exception {
 		context.checking(new Expectations() {{
 			oneOf(db).getGroup(txn, privateGroupId);
 			will(returnValue(privateGroupGroup));
@@ -75,7 +76,7 @@ public class CreatorProtocolEngineTest extends AbstractProtocolEngineTest {
 			will(returnValue(privateGroup));
 			oneOf(messageTracker).trackOutgoingMessage(txn, message);
 		}});
-		expectSendInviteMessage(msg);
+		expectSendInviteMessage(text);
 		expectGetLocalTimestamp(messageTimestamp);
 	}
 
@@ -112,7 +113,7 @@ public class CreatorProtocolEngineTest extends AbstractProtocolEngineTest {
 	// onJoinAction
 
 	@Test(expected = UnsupportedOperationException.class)
-	public void testOnJoinActionFails() throws Exception {
+	public void testOnJoinActionFails() {
 		engine.onJoinAction(txn, getDefaultSession(START));
 	}
 
@@ -186,7 +187,7 @@ public class CreatorProtocolEngineTest extends AbstractProtocolEngineTest {
 	// onMemberAddedAction
 
 	@Test
-	public void testOnMemberAddedAction() throws Exception {
+	public void testOnMemberAddedAction() {
 		CreatorSession session = getDefaultSession(START);
 		assertEquals(session, engine.onMemberAddedAction(txn, session));
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationIntegrationTest.java
index be62f3fe99..acc5e1ea38 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationIntegrationTest.java
@@ -76,8 +76,8 @@ public class GroupInvitationIntegrationTest
 	@Test
 	public void testSendInvitation() throws Exception {
 		long timestamp = clock.currentTimeMillis();
-		String msg = "Hi!";
-		sendInvitation(timestamp, msg);
+		String text = "Hi!";
+		sendInvitation(timestamp, text);
 
 		sync0To1(1, true);
 
@@ -97,7 +97,7 @@ public class GroupInvitationIntegrationTest
 		assertEquals(1, messages.size());
 		GroupInvitationRequest request =
 				(GroupInvitationRequest) messages.iterator().next();
-		assertEquals(msg, request.getMessage());
+		assertEquals(text, request.getText());
 		assertEquals(author0, request.getNameable().getCreator());
 		assertEquals(timestamp, request.getTimestamp());
 		assertEquals(privateGroup0.getName(), request.getNameable().getName());
@@ -442,12 +442,12 @@ public class GroupInvitationIntegrationTest
 		sync1To0(1, true);
 	}
 
-	private void sendInvitation(long timestamp, @Nullable String msg) throws
+	private void sendInvitation(long timestamp, @Nullable String text) throws
 			DbException {
 		byte[] signature = groupInvitationFactory.signInvitation(contact1From0,
 				privateGroup0.getId(), timestamp, author0.getPrivateKey());
 		groupInvitationManager0
-				.sendInvitation(privateGroup0.getId(), contactId1From0, msg,
+				.sendInvitation(privateGroup0.getId(), contactId1From0, text,
 						timestamp, signature);
 	}
 
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImplTest.java
index e9a19ae7fe..8c06d942e6 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImplTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImplTest.java
@@ -464,7 +464,7 @@ public class GroupInvitationManagerImplTest extends BrambleMockTestCase {
 
 	@Test
 	public void testSendFirstInvitation() throws Exception {
-		String msg = "Invitation text for first invitation";
+		String text = "Invitation text for first invitation";
 		long time = 42L;
 		byte[] signature = getRandomBytes(42);
 
@@ -481,7 +481,7 @@ public class GroupInvitationManagerImplTest extends BrambleMockTestCase {
 		expectCreateStorageId();
 		context.checking(new Expectations() {{
 			oneOf(creatorEngine).onInviteAction(with(txn),
-					with(any(CreatorSession.class)), with(msg), with(time),
+					with(any(CreatorSession.class)), with(text), with(time),
 					with(signature));
 			will(returnValue(creatorSession));
 		}});
@@ -491,12 +491,12 @@ public class GroupInvitationManagerImplTest extends BrambleMockTestCase {
 			oneOf(db).endTransaction(txn);
 		}});
 		groupInvitationManager.sendInvitation(privateGroup.getId(), contactId,
-				msg, time, signature);
+				text, time, signature);
 	}
 
 	@Test
 	public void testSendSubsequentInvitation() throws Exception {
-		String msg = "Invitation text for subsequent invitation";
+		String text = "Invitation text for subsequent invitation";
 		long time = 43L;
 		byte[] signature = getRandomBytes(43);
 
@@ -513,7 +513,7 @@ public class GroupInvitationManagerImplTest extends BrambleMockTestCase {
 					.parseCreatorSession(contactGroup.getId(), bdfSession);
 			will(returnValue(creatorSession));
 			oneOf(creatorEngine).onInviteAction(with(txn),
-					with(any(CreatorSession.class)), with(msg), with(time),
+					with(any(CreatorSession.class)), with(text), with(time),
 					with(signature));
 			will(returnValue(creatorSession));
 		}});
@@ -523,7 +523,7 @@ public class GroupInvitationManagerImplTest extends BrambleMockTestCase {
 			oneOf(db).endTransaction(txn);
 		}});
 		groupInvitationManager.sendInvitation(privateGroup.getId(), contactId,
-				msg, time, signature);
+				text, time, signature);
 	}
 
 	@Test(expected = IllegalArgumentException.class)
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidatorTest.java
index d68a5edabd..386c354485 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationValidatorTest.java
@@ -22,7 +22,7 @@ import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
 import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.bramble.util.StringUtils.getRandomString;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.GROUP_SALT_LENGTH;
-import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_INVITATION_MSG_LENGTH;
+import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_INVITATION_TEXT_LENGTH;
 import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_NAME_LENGTH;
 import static org.briarproject.briar.api.privategroup.invitation.GroupInvitationFactory.SIGNING_LABEL_INVITE;
 import static org.briarproject.briar.privategroup.invitation.MessageType.ABORT;
@@ -47,8 +47,8 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
 	);
 	private final String groupName = getRandomString(MAX_GROUP_NAME_LENGTH);
 	private final byte[] salt = getRandomBytes(GROUP_SALT_LENGTH);
-	private final String content =
-			getRandomString(MAX_GROUP_INVITATION_MSG_LENGTH);
+	private final String text =
+			getRandomString(MAX_GROUP_INVITATION_TEXT_LENGTH);
 	private final byte[] signature = getRandomBytes(MAX_SIGNATURE_LENGTH);
 	private final PrivateGroup privateGroup =
 			new PrivateGroup(group, groupName, creator, salt);
@@ -64,14 +64,14 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
 	@Test(expected = FormatException.class)
 	public void testRejectsTooShortInviteMessage() throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				salt, content);
+				salt, text);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsTooLongInviteMessage() throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				salt, content, signature, "");
+				salt, text, signature, "");
 		validator.validateMessage(message, group, body);
 	}
 
@@ -79,7 +79,7 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
 	public void testRejectsInviteMessageWithTooShortGroupName()
 			throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, "", salt,
-				content, signature);
+				text, signature);
 		validator.validateMessage(message, group, body);
 	}
 
@@ -88,14 +88,14 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
 			throws Exception {
 		String tooLongName = getRandomString(MAX_GROUP_NAME_LENGTH + 1);
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, tooLongName,
-				salt, content, signature);
+				salt, text, signature);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsInviteMessageWithNullGroupName() throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, null, salt,
-				content, signature);
+				text, signature);
 		validator.validateMessage(message, group, body);
 	}
 
@@ -103,21 +103,21 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
 	public void testRejectsInviteMessageWithNonStringGroupName()
 			throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList,
-				getRandomBytes(5), salt, content, signature);
+				getRandomBytes(5), salt, text, signature);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsInviteMessageWithNullCreator() throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), null, groupName, salt,
-				content, signature);
+				text, signature);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsInviteMessageWithNonListCreator() throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), 123, groupName, salt,
-				content, signature);
+				text, signature);
 		validator.validateMessage(message, group, body);
 	}
 
@@ -129,7 +129,7 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
 		}});
 
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				salt, content, signature);
+				salt, text, signature);
 		validator.validateMessage(message, group, body);
 	}
 
@@ -137,7 +137,7 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
 	public void testRejectsInviteMessageWithTooShortGroupSalt()
 			throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				getRandomBytes(GROUP_SALT_LENGTH - 1), content, signature);
+				getRandomBytes(GROUP_SALT_LENGTH - 1), text, signature);
 		validator.validateMessage(message, group, body);
 	}
 
@@ -145,41 +145,41 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
 	public void testRejectsInviteMessageWithTooLongGroupSalt()
 			throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				getRandomBytes(GROUP_SALT_LENGTH + 1), content, signature);
+				getRandomBytes(GROUP_SALT_LENGTH + 1), text, signature);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsInviteMessageWithNullGroupSalt() throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				null, content, signature);
+				null, text, signature);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsInviteMessageWithNonRawGroupSalt() throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				"not raw", content, signature);
+				"not raw", text, signature);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsInviteMessageWithTooShortContent() throws Exception {
+	public void testRejectsInviteMessageWithTooShortText() throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
 				salt, "", signature);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsInviteMessageWithTooLongContent() throws Exception {
+	public void testRejectsInviteMessageWithTooLongText() throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				salt, getRandomString(MAX_GROUP_INVITATION_MSG_LENGTH + 1),
+				salt, getRandomString(MAX_GROUP_INVITATION_TEXT_LENGTH + 1),
 				signature);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test
-	public void testAcceptsInviteMessageWithNullContent() throws Exception {
+	public void testAcceptsInviteMessageWithNullText() throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
 				salt, null, signature);
 		expectInviteMessage(false);
@@ -187,7 +187,7 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsInviteMessageWithNonStringContent()
+	public void testRejectsInviteMessageWithNonStringText()
 			throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
 				salt, getRandomBytes(5), signature);
@@ -198,7 +198,7 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
 	public void testRejectsInviteMessageWithTooShortSignature()
 			throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				salt, content, new byte[0]);
+				salt, text, new byte[0]);
 		validator.validateMessage(message, group, body);
 	}
 
@@ -206,21 +206,21 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
 	public void testRejectsInviteMessageWithTooLongSignature()
 			throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				salt, content, getRandomBytes(MAX_SIGNATURE_LENGTH + 1));
+				salt, text, getRandomBytes(MAX_SIGNATURE_LENGTH + 1));
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsInviteMessageWithNullSignature() throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				salt, content, null);
+				salt, text, null);
 		validator.validateMessage(message, group, body);
 	}
 
 	@Test(expected = FormatException.class)
 	public void testRejectsInviteMessageWithNonRawSignature() throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				salt, content, "not raw");
+				salt, text, "not raw");
 		validator.validateMessage(message, group, body);
 	}
 
@@ -228,7 +228,7 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
 	public void testRejectsInviteMessageWithInvalidSignature()
 			throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				salt, content, signature);
+				salt, text, signature);
 		expectInviteMessage(true);
 		validator.validateMessage(message, group, body);
 	}
@@ -236,7 +236,7 @@ public class GroupInvitationValidatorTest extends ValidatorTestCase {
 	@Test
 	public void testAcceptsValidInviteMessage() throws Exception {
 		BdfList body = BdfList.of(INVITE.getValue(), creatorList, groupName,
-				salt, content, signature);
+				salt, text, signature);
 		expectInviteMessage(false);
 		BdfMessageContext messageContext =
 				validator.validateMessage(message, group, body);
diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngineTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngineTest.java
index abbb912deb..4937695b2a 100644
--- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngineTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngineTest.java
@@ -21,7 +21,7 @@ import static org.briarproject.bramble.test.TestUtils.getAuthor;
 import static org.briarproject.bramble.test.TestUtils.getLocalAuthor;
 import static org.briarproject.bramble.test.TestUtils.getRandomId;
 import static org.briarproject.bramble.util.StringUtils.getRandomString;
-import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_INVITATION_MSG_LENGTH;
+import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_INVITATION_TEXT_LENGTH;
 import static org.briarproject.briar.privategroup.invitation.InviteeState.ACCEPTED;
 import static org.briarproject.briar.privategroup.invitation.InviteeState.DISSOLVED;
 import static org.briarproject.briar.privategroup.invitation.InviteeState.ERROR;
@@ -327,7 +327,7 @@ public class InviteeProtocolEngineTest extends AbstractProtocolEngineTest {
 						privateGroupId, session.getInviteTimestamp() + 1,
 						privateGroup.getName(), privateGroup.getCreator(),
 						privateGroup.getSalt(),
-						getRandomString(MAX_GROUP_INVITATION_MSG_LENGTH),
+						getRandomString(MAX_GROUP_INVITATION_TEXT_LENGTH),
 						signature);
 		Author notCreator = getAuthor();
 		Contact notCreatorContact = new Contact(contactId, notCreator,
diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
index 8987eeb21f..bcb6475e44 100644
--- a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java
@@ -159,7 +159,7 @@ public class BlogSharingIntegrationTest
 				assertEquals(blog2.getAuthor().getName(),
 						invitation.getName());
 				assertFalse(invitation.getNameable().isRssFeed());
-				assertEquals("Hi!", invitation.getMessage());
+				assertEquals("Hi!", invitation.getText());
 			} else {
 				BlogInvitationResponse response = (BlogInvitationResponse) m;
 				assertEquals(blog2.getId(), response.getShareableId());
@@ -232,7 +232,7 @@ public class BlogSharingIntegrationTest
 				assertEquals(rssBlog.getAuthor().getName(),
 						invitation.getName());
 				assertTrue(invitation.getNameable().isRssFeed());
-				assertEquals("Hi!", invitation.getMessage());
+				assertEquals("Hi!", invitation.getText());
 			} else {
 				BlogInvitationResponse response = (BlogInvitationResponse) m;
 				assertEquals(rssBlog.getId(), response.getShareableId());
@@ -293,7 +293,7 @@ public class BlogSharingIntegrationTest
 				assertTrue(invitation.wasAnswered());
 				assertEquals(blog2.getAuthor().getName(),
 						invitation.getName());
-				assertNull(invitation.getMessage());
+				assertNull(invitation.getText());
 			} else {
 				BlogInvitationResponse response = (BlogInvitationResponse) m;
 				assertEquals(blog2.getId(), response.getShareableId());
diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingValidatorTest.java
index 9e20390830..01b0ffd2a1 100644
--- a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingValidatorTest.java
@@ -10,7 +10,7 @@ import org.junit.Test;
 
 import static org.briarproject.bramble.test.TestUtils.getAuthor;
 import static org.briarproject.bramble.util.StringUtils.getRandomString;
-import static org.briarproject.briar.api.sharing.SharingConstants.MAX_INVITATION_MESSAGE_LENGTH;
+import static org.briarproject.briar.api.sharing.SharingConstants.MAX_INVITATION_TEXT_LENGTH;
 import static org.briarproject.briar.sharing.MessageType.INVITE;
 
 public class BlogSharingValidatorTest extends SharingValidatorTest {
@@ -20,8 +20,7 @@ public class BlogSharingValidatorTest extends SharingValidatorTest {
 	private final BdfList authorList = BdfList.of(author.getFormatVersion(),
 			author.getName(), author.getPublicKey());
 	private final BdfList descriptor = BdfList.of(authorList, false);
-	private final String content =
-			getRandomString(MAX_INVITATION_MESSAGE_LENGTH);
+	private final String text = getRandomString(MAX_INVITATION_TEXT_LENGTH);
 
 	@Override
 	SharingValidator getValidator() {
@@ -30,17 +29,16 @@ public class BlogSharingValidatorTest extends SharingValidatorTest {
 	}
 
 	@Test
-	public void testAcceptsInvitationWithContent() throws Exception {
+	public void testAcceptsInvitationWithText() throws Exception {
 		expectCreateBlog();
 		expectEncodeMetadata(INVITE);
 		BdfMessageContext context = validator.validateMessage(message, group,
-				BdfList.of(INVITE.getValue(), previousMsgId, descriptor,
-						content));
+				BdfList.of(INVITE.getValue(), previousMsgId, descriptor, text));
 		assertExpectedContext(context, previousMsgId);
 	}
 
 	@Test
-	public void testAcceptsInvitationWithNullContent() throws Exception {
+	public void testAcceptsInvitationWithNullText() throws Exception {
 		expectCreateBlog();
 		expectEncodeMetadata(INVITE);
 		BdfMessageContext context = validator.validateMessage(message, group,
@@ -53,7 +51,7 @@ public class BlogSharingValidatorTest extends SharingValidatorTest {
 		expectCreateBlog();
 		expectEncodeMetadata(INVITE);
 		BdfMessageContext context = validator.validateMessage(message, group,
-				BdfList.of(INVITE.getValue(), null, descriptor, content));
+				BdfList.of(INVITE.getValue(), null, descriptor, text));
 		assertExpectedContext(context, null);
 	}
 
@@ -64,7 +62,7 @@ public class BlogSharingValidatorTest extends SharingValidatorTest {
 		BdfList rssDescriptor = BdfList.of(authorList, true);
 		BdfMessageContext context = validator.validateMessage(message, group,
 				BdfList.of(INVITE.getValue(), previousMsgId, rssDescriptor,
-						content));
+						text));
 		assertExpectedContext(context, previousMsgId);
 	}
 
@@ -85,32 +83,30 @@ public class BlogSharingValidatorTest extends SharingValidatorTest {
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsNonStringContent() throws Exception {
+	public void testRejectsNonStringText() throws Exception {
 		expectCreateBlog();
 		validator.validateMessage(message, group,
-				BdfList.of(INVITE.getValue(), previousMsgId, descriptor,
-						123));
+				BdfList.of(INVITE.getValue(), previousMsgId, descriptor, 123));
 	}
 
 	@Test
-	public void testAcceptsMinLengthContent() throws Exception {
-		String shortContent = getRandomString(1);
+	public void testAcceptsMinLengthText() throws Exception {
+		String shortText = getRandomString(1);
 		expectCreateBlog();
 		expectEncodeMetadata(INVITE);
 		BdfMessageContext context = validator.validateMessage(message, group,
 				BdfList.of(INVITE.getValue(), previousMsgId, descriptor,
-						shortContent));
+						shortText));
 		assertExpectedContext(context, previousMsgId);
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsTooLongContent() throws Exception {
-		String invalidContent =
-				getRandomString(MAX_INVITATION_MESSAGE_LENGTH + 1);
+	public void testRejectsTooLongText() throws Exception {
+		String invalidText = getRandomString(MAX_INVITATION_TEXT_LENGTH + 1);
 		expectCreateBlog();
 		validator.validateMessage(message, group,
 				BdfList.of(INVITE.getValue(), previousMsgId, descriptor,
-						invalidContent));
+						invalidText));
 	}
 
 	private void expectCreateBlog() throws Exception {
diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java
index 3a6c3dc382..c4b20eceb9 100644
--- a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java
@@ -139,7 +139,7 @@ public class ForumSharingIntegrationTest
 				assertTrue(invitation.wasAnswered());
 				assertEquals(forum0.getName(), invitation.getName());
 				assertEquals(forum0, invitation.getNameable());
-				assertEquals("Hi!", invitation.getMessage());
+				assertEquals("Hi!", invitation.getText());
 				assertTrue(invitation.canBeOpened());
 			} else {
 				ForumInvitationResponse response = (ForumInvitationResponse) m;
@@ -195,7 +195,7 @@ public class ForumSharingIntegrationTest
 				assertEquals(forum0, invitation.getNameable());
 				assertTrue(invitation.wasAnswered());
 				assertEquals(forum0.getName(), invitation.getName());
-				assertNull(invitation.getMessage());
+				assertNull(invitation.getText());
 				assertFalse(invitation.canBeOpened());
 			} else {
 				ForumInvitationResponse response = (ForumInvitationResponse) m;
@@ -635,10 +635,9 @@ public class ForumSharingIntegrationTest
 
 		// sharer posts into the forum
 		long time = clock.currentTimeMillis();
-		String body = getRandomString(42);
+		String text = getRandomString(42);
 		ForumPost p = forumPostFactory
-				.createPost(forum0.getId(), time, null, author0,
-						body);
+				.createPost(forum0.getId(), time, null, author0, text);
 		forumManager0.addLocalPost(p);
 
 		// sync forum post
@@ -654,10 +653,9 @@ public class ForumSharingIntegrationTest
 
 		// now invitee creates a post
 		time = clock.currentTimeMillis();
-		body = getRandomString(42);
+		text = getRandomString(42);
 		p = forumPostFactory
-				.createPost(forum0.getId(), time, null, author1,
-						body);
+				.createPost(forum0.getId(), time, null, author1, text);
 		forumManager1.addLocalPost(p);
 
 		// sync forum post
@@ -697,10 +695,9 @@ public class ForumSharingIntegrationTest
 
 		// now invitee creates a post
 		time = clock.currentTimeMillis();
-		body = getRandomString(42);
+		text = getRandomString(42);
 		p = forumPostFactory
-				.createPost(forum0.getId(), time, null, author1,
-						body);
+				.createPost(forum0.getId(), time, null, author1, text);
 		forumManager1.addLocalPost(p);
 
 		// sync forum post
diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingValidatorTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingValidatorTest.java
index 6197287742..69e626d248 100644
--- a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingValidatorTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingValidatorTest.java
@@ -11,7 +11,7 @@ import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
 import static org.briarproject.bramble.util.StringUtils.getRandomString;
 import static org.briarproject.briar.api.forum.ForumConstants.FORUM_SALT_LENGTH;
 import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_NAME_LENGTH;
-import static org.briarproject.briar.api.sharing.SharingConstants.MAX_INVITATION_MESSAGE_LENGTH;
+import static org.briarproject.briar.api.sharing.SharingConstants.MAX_INVITATION_TEXT_LENGTH;
 import static org.briarproject.briar.sharing.MessageType.INVITE;
 
 public class ForumSharingValidatorTest extends SharingValidatorTest {
@@ -20,8 +20,7 @@ public class ForumSharingValidatorTest extends SharingValidatorTest {
 	private final byte[] salt = getRandomBytes(FORUM_SALT_LENGTH);
 	private final Forum forum = new Forum(group, forumName, salt);
 	private final BdfList descriptor = BdfList.of(forumName, salt);
-	private final String content =
-			getRandomString(MAX_INVITATION_MESSAGE_LENGTH);
+	private final String text = getRandomString(MAX_INVITATION_TEXT_LENGTH);
 
 	@Override
 	SharingValidator getValidator() {
@@ -30,17 +29,16 @@ public class ForumSharingValidatorTest extends SharingValidatorTest {
 	}
 
 	@Test
-	public void testAcceptsInvitationWithContent() throws Exception {
+	public void testAcceptsInvitationWithText() throws Exception {
 		expectCreateForum(forumName);
 		expectEncodeMetadata(INVITE);
 		BdfMessageContext context = validator.validateMessage(message, group,
-				BdfList.of(INVITE.getValue(), previousMsgId, descriptor,
-						content));
+				BdfList.of(INVITE.getValue(), previousMsgId, descriptor, text));
 		assertExpectedContext(context, previousMsgId);
 	}
 
 	@Test
-	public void testAcceptsInvitationWithNullContent() throws Exception {
+	public void testAcceptsInvitationWithNullText() throws Exception {
 		expectCreateForum(forumName);
 		expectEncodeMetadata(INVITE);
 		BdfMessageContext context = validator.validateMessage(message, group,
@@ -137,14 +135,14 @@ public class ForumSharingValidatorTest extends SharingValidatorTest {
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsNonStringContent() throws Exception {
+	public void testRejectsNonStringText() throws Exception {
 		expectCreateForum(forumName);
 		validator.validateMessage(message, group,
 				BdfList.of(INVITE.getValue(), previousMsgId, descriptor, 123));
 	}
 
 	@Test
-	public void testAcceptsMinLengthContent() throws Exception {
+	public void testAcceptsMinLengthText() throws Exception {
 		expectCreateForum(forumName);
 		expectEncodeMetadata(INVITE);
 		BdfMessageContext context = validator.validateMessage(message, group,
@@ -153,13 +151,12 @@ public class ForumSharingValidatorTest extends SharingValidatorTest {
 	}
 
 	@Test(expected = FormatException.class)
-	public void testRejectsTooLongContent() throws Exception {
-		String invalidContent =
-				getRandomString(MAX_INVITATION_MESSAGE_LENGTH + 1);
+	public void testRejectsTooLongText() throws Exception {
+		String invalidText = getRandomString(MAX_INVITATION_TEXT_LENGTH + 1);
 		expectCreateForum(forumName);
 		validator.validateMessage(message, group,
 				BdfList.of(INVITE.getValue(), previousMsgId, descriptor,
-						invalidContent));
+						invalidText));
 	}
 
 	private void expectCreateForum(String name) {
diff --git a/briar-headless/src/main/java/org/briarproject/briar/headless/blogs/BlogControllerImpl.kt b/briar-headless/src/main/java/org/briarproject/briar/headless/blogs/BlogControllerImpl.kt
index 5f1dc01420..87e4debc6d 100644
--- a/briar-headless/src/main/java/org/briarproject/briar/headless/blogs/BlogControllerImpl.kt
+++ b/briar-headless/src/main/java/org/briarproject/briar/headless/blogs/BlogControllerImpl.kt
@@ -4,8 +4,8 @@ import io.javalin.BadRequestResponse
 import io.javalin.Context
 import org.briarproject.bramble.api.identity.IdentityManager
 import org.briarproject.bramble.api.system.Clock
-import org.briarproject.bramble.util.StringUtils
-import org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_BODY_LENGTH
+import org.briarproject.bramble.util.StringUtils.utf8IsTooLong
+import org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_TEXT_LENGTH
 import org.briarproject.briar.api.blog.BlogManager
 import org.briarproject.briar.api.blog.BlogPostFactory
 import org.briarproject.briar.headless.getFromJson
@@ -29,15 +29,15 @@ constructor(
             .flatMap { blog -> blogManager.getPostHeaders(blog.id) }
             .asSequence()
             .sortedBy { it.timeReceived }
-            .map { header -> header.output(blogManager.getPostBody(header.id)) }
+            .map { header -> header.output(blogManager.getPostText(header.id)) }
             .toList()
         return ctx.json(posts)
     }
 
     override fun createPost(ctx: Context): Context {
         val text = ctx.getFromJson("text")
-        if (StringUtils.utf8IsTooLong(text, MAX_BLOG_POST_BODY_LENGTH))
-            throw BadRequestResponse("Too long blog post text")
+        if (utf8IsTooLong(text, MAX_BLOG_POST_TEXT_LENGTH))
+            throw BadRequestResponse("Blog post text is too long")
 
         val author = identityManager.localAuthor
         val blog = blogManager.getPersonalBlog(author)
diff --git a/briar-headless/src/main/java/org/briarproject/briar/headless/blogs/OutputBlogPost.kt b/briar-headless/src/main/java/org/briarproject/briar/headless/blogs/OutputBlogPost.kt
index 65d3f1296c..0a8b2ccc73 100644
--- a/briar-headless/src/main/java/org/briarproject/briar/headless/blogs/OutputBlogPost.kt
+++ b/briar-headless/src/main/java/org/briarproject/briar/headless/blogs/OutputBlogPost.kt
@@ -5,8 +5,8 @@ import org.briarproject.briar.api.blog.BlogPostHeader
 import org.briarproject.briar.api.blog.MessageType
 import org.briarproject.briar.headless.json.JsonDict
 
-internal fun BlogPostHeader.output(body: String) = JsonDict(
-        "text" to body,
+internal fun BlogPostHeader.output(text: String) = JsonDict(
+        "text" to text,
         "author" to author.output(),
         "authorStatus" to authorStatus.output(),
         "type" to type.output(),
diff --git a/briar-headless/src/main/java/org/briarproject/briar/headless/event/OutputEvent.kt b/briar-headless/src/main/java/org/briarproject/briar/headless/event/OutputEvent.kt
index dc68c5c934..cda92ebd1f 100644
--- a/briar-headless/src/main/java/org/briarproject/briar/headless/event/OutputEvent.kt
+++ b/briar-headless/src/main/java/org/briarproject/briar/headless/event/OutputEvent.kt
@@ -9,5 +9,5 @@ internal class OutputEvent(val name: String, val data: Any) {
     val type = "event"
 }
 
-internal fun PrivateMessageReceivedEvent<*>.output(body: String) =
-    messageHeader.output(contactId, body)
+internal fun PrivateMessageReceivedEvent<*>.output(text: String) =
+    messageHeader.output(contactId, text)
diff --git a/briar-headless/src/main/java/org/briarproject/briar/headless/forums/ForumControllerImpl.kt b/briar-headless/src/main/java/org/briarproject/briar/headless/forums/ForumControllerImpl.kt
index af1ab391ae..d57ed4f0c6 100644
--- a/briar-headless/src/main/java/org/briarproject/briar/headless/forums/ForumControllerImpl.kt
+++ b/briar-headless/src/main/java/org/briarproject/briar/headless/forums/ForumControllerImpl.kt
@@ -2,7 +2,7 @@ package org.briarproject.briar.headless.forums
 
 import io.javalin.BadRequestResponse
 import io.javalin.Context
-import org.briarproject.bramble.util.StringUtils
+import org.briarproject.bramble.util.StringUtils.utf8IsTooLong
 import org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_NAME_LENGTH
 import org.briarproject.briar.api.forum.ForumManager
 import org.briarproject.briar.headless.getFromJson
@@ -22,7 +22,7 @@ constructor(private val forumManager: ForumManager) : ForumController {
 
     override fun create(ctx: Context): Context {
         val name = ctx.getFromJson("name")
-        if (StringUtils.utf8IsTooLong(name, MAX_FORUM_NAME_LENGTH))
+        if (utf8IsTooLong(name, MAX_FORUM_NAME_LENGTH))
             throw BadRequestResponse("Forum name is too long")
         return ctx.json(forumManager.addForum(name).output())
     }
diff --git a/briar-headless/src/main/java/org/briarproject/briar/headless/messaging/MessagingControllerImpl.kt b/briar-headless/src/main/java/org/briarproject/briar/headless/messaging/MessagingControllerImpl.kt
index 6fb20b6825..cecd345d76 100644
--- a/briar-headless/src/main/java/org/briarproject/briar/headless/messaging/MessagingControllerImpl.kt
+++ b/briar-headless/src/main/java/org/briarproject/briar/headless/messaging/MessagingControllerImpl.kt
@@ -19,7 +19,7 @@ import org.briarproject.briar.api.forum.ForumInvitationResponse
 import org.briarproject.briar.api.introduction.IntroductionRequest
 import org.briarproject.briar.api.introduction.IntroductionResponse
 import org.briarproject.briar.api.messaging.*
-import org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_BODY_LENGTH
+import org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH
 import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest
 import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse
@@ -61,8 +61,8 @@ constructor(
         val contact = getContact(ctx)
 
         val message = ctx.getFromJson("text")
-        if (utf8IsTooLong(message, MAX_PRIVATE_MESSAGE_BODY_LENGTH))
-            throw BadRequestResponse("Message text too large")
+        if (utf8IsTooLong(message, MAX_PRIVATE_MESSAGE_TEXT_LENGTH))
+            throw BadRequestResponse("Message text is too long")
 
         val group = messagingManager.getContactGroup(contact)
         val now = clock.currentTimeMillis()
@@ -75,8 +75,8 @@ constructor(
     override fun eventOccurred(e: Event) {
         when (e) {
             is PrivateMessageReceivedEvent<*> -> dbExecutor.execute {
-                val body = messagingManager.getMessageBody(e.messageHeader.id)
-                webSocketController.sendEvent(EVENT_PRIVATE_MESSAGE, e.output(body))
+                val text = messagingManager.getMessageText(e.messageHeader.id)
+                webSocketController.sendEvent(EVENT_PRIVATE_MESSAGE, e.output(text))
             }
         }
     }
@@ -103,7 +103,7 @@ private class JsonVisitor(
 ) : PrivateMessageVisitor<JsonDict> {
 
     override fun visitPrivateMessageHeader(h: PrivateMessageHeader) =
-        h.output(contactId, messagingManager.getMessageBody(h.id))
+        h.output(contactId, messagingManager.getMessageText(h.id))
 
     override fun visitBlogInvitationRequest(r: BlogInvitationRequest) = r.output(contactId)
 
diff --git a/briar-headless/src/main/java/org/briarproject/briar/headless/messaging/OutputPrivateMessage.kt b/briar-headless/src/main/java/org/briarproject/briar/headless/messaging/OutputPrivateMessage.kt
index dcefdc13e4..65748015c4 100644
--- a/briar-headless/src/main/java/org/briarproject/briar/headless/messaging/OutputPrivateMessage.kt
+++ b/briar-headless/src/main/java/org/briarproject/briar/headless/messaging/OutputPrivateMessage.kt
@@ -17,16 +17,16 @@ internal fun PrivateMessageHeader.output(contactId: ContactId) = JsonDict(
     "groupId" to groupId.bytes
 )
 
-internal fun PrivateMessageHeader.output(contactId: ContactId, body: String?): JsonDict {
+internal fun PrivateMessageHeader.output(contactId: ContactId, text: String?): JsonDict {
     val dict = output(contactId)
-    dict["text"] = body
+    dict["text"] = text
     return dict
 }
 
 /**
  * Use only for outgoing messages that were just sent
  */
-internal fun PrivateMessage.output(contactId: ContactId, body: String) = JsonDict(
+internal fun PrivateMessage.output(contactId: ContactId, text: String) = JsonDict(
     "type" to "PrivateMessage",
     "contactId" to contactId.int,
     "timestamp" to message.timestamp,
@@ -36,5 +36,5 @@ internal fun PrivateMessage.output(contactId: ContactId, body: String) = JsonDic
     "local" to true,
     "id" to message.id.bytes,
     "groupId" to message.groupId.bytes,
-    "text" to body
+    "text" to text
 )
diff --git a/briar-headless/src/main/java/org/briarproject/briar/headless/messaging/OutputPrivateRequest.kt b/briar-headless/src/main/java/org/briarproject/briar/headless/messaging/OutputPrivateRequest.kt
index 2e956f6275..d7762d52c9 100644
--- a/briar-headless/src/main/java/org/briarproject/briar/headless/messaging/OutputPrivateRequest.kt
+++ b/briar-headless/src/main/java/org/briarproject/briar/headless/messaging/OutputPrivateRequest.kt
@@ -11,7 +11,7 @@ import org.briarproject.briar.api.sharing.InvitationRequest
 import org.briarproject.briar.headless.json.JsonDict
 
 internal fun PrivateRequest<*>.output(contactId: ContactId): JsonDict {
-    val dict = (this as PrivateMessageHeader).output(contactId, message)
+    val dict = (this as PrivateMessageHeader).output(contactId, text)
     dict.putAll(
         "sessionId" to sessionId.bytes,
         "name" to name,
diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/ControllerTest.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/ControllerTest.kt
index b0a27244e5..56d3fed27b 100644
--- a/briar-headless/src/test/java/org/briarproject/briar/headless/ControllerTest.kt
+++ b/briar-headless/src/test/java/org/briarproject/briar/headless/ControllerTest.kt
@@ -35,7 +35,7 @@ abstract class ControllerTest {
     protected val localAuthor: LocalAuthor = getLocalAuthor()
     protected val contact = Contact(ContactId(1), author, localAuthor.id, true, true)
     protected val message: Message = getMessage(group.id)
-    protected val body: String = getRandomString(5)
+    protected val text: String = getRandomString(5)
     protected val timestamp = 42L
 
     protected fun assertJsonEquals(json: String, obj: Any) {
diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/blogs/BlogControllerTest.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/blogs/BlogControllerTest.kt
index 48a07025d5..3390ee00cf 100644
--- a/briar-headless/src/test/java/org/briarproject/briar/headless/blogs/BlogControllerTest.kt
+++ b/briar-headless/src/test/java/org/briarproject/briar/headless/blogs/BlogControllerTest.kt
@@ -11,7 +11,7 @@ import org.briarproject.bramble.api.sync.MessageId
 import org.briarproject.bramble.identity.output
 import org.briarproject.bramble.util.StringUtils.getRandomString
 import org.briarproject.briar.api.blog.*
-import org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_BODY_LENGTH
+import org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_TEXT_LENGTH
 import org.briarproject.briar.api.blog.MessageType.POST
 import org.briarproject.briar.headless.ControllerTest
 import org.junit.jupiter.api.Assertions.assertThrows
@@ -38,7 +38,7 @@ internal class BlogControllerTest : ControllerTest() {
     fun testCreate() {
         val post = BlogPost(message, null, localAuthor)
 
-        every { ctx.body() } returns """{"text": "$body"}"""
+        every { ctx.body() } returns """{"text": "$text"}"""
         every { identityManager.localAuthor } returns localAuthor
         every { blogManager.getPersonalBlog(localAuthor) } returns blog
         every { clock.currentTimeMillis() } returns message.timestamp
@@ -48,12 +48,12 @@ internal class BlogControllerTest : ControllerTest() {
                 message.timestamp,
                 parentId,
                 localAuthor,
-                body
+                text
             )
         } returns post
         every { blogManager.addLocalPost(post) } just Runs
         every { blogManager.getPostHeader(post.message.groupId, post.message.id) } returns header
-        every { ctx.json(header.output(body)) } returns ctx
+        every { ctx.json(header.output(text)) } returns ctx
 
         controller.createPost(ctx)
     }
@@ -74,7 +74,7 @@ internal class BlogControllerTest : ControllerTest() {
 
     @Test
     fun testCreateTooLongText() {
-        every { ctx.body() } returns """{"text": "${getRandomString(MAX_BLOG_POST_BODY_LENGTH + 1)}"}"""
+        every { ctx.body() } returns """{"text": "${getRandomString(MAX_BLOG_POST_TEXT_LENGTH + 1)}"}"""
 
         assertThrows(BadRequestResponse::class.java) { controller.createPost(ctx) }
     }
@@ -83,8 +83,8 @@ internal class BlogControllerTest : ControllerTest() {
     fun testList() {
         every { blogManager.blogs } returns listOf(blog)
         every { blogManager.getPostHeaders(group.id) } returns listOf(header)
-        every { blogManager.getPostBody(message.id) } returns body
-        every { ctx.json(listOf(header.output(body))) } returns ctx
+        every { blogManager.getPostText(message.id) } returns text
+        every { ctx.json(listOf(header.output(text))) } returns ctx
 
         controller.listPosts(ctx)
     }
@@ -102,7 +102,7 @@ internal class BlogControllerTest : ControllerTest() {
     fun testOutputBlogPost() {
         val json = """
             {
-                "text": "$body",
+                "text": "$text",
                 "author": ${toJson(author.output())},
                 "authorStatus": "ourselves",
                 "type": "post",
@@ -114,7 +114,7 @@ internal class BlogControllerTest : ControllerTest() {
                 "timestampReceived": $timestamp
             }
         """
-        assertJsonEquals(json, header.output(body))
+        assertJsonEquals(json, header.output(text))
     }
 
 }
diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/event/WebSocketControllerTest.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/event/WebSocketControllerTest.kt
index 53f7e5eb9e..72c803bff3 100644
--- a/briar-headless/src/test/java/org/briarproject/briar/headless/event/WebSocketControllerTest.kt
+++ b/briar-headless/src/test/java/org/briarproject/briar/headless/event/WebSocketControllerTest.kt
@@ -23,7 +23,7 @@ internal class WebSocketControllerTest : ControllerTest() {
     private val header =
         PrivateMessageHeader(message.id, group.id, timestamp, true, true, true, true)
     private val event = PrivateMessageReceivedEvent(header, contact.id)
-    private val outputEvent = OutputEvent(EVENT_PRIVATE_MESSAGE, event.output(body))
+    private val outputEvent = OutputEvent(EVENT_PRIVATE_MESSAGE, event.output(text))
 
     @Test
     fun testSendEvent() {
@@ -32,7 +32,7 @@ internal class WebSocketControllerTest : ControllerTest() {
         every { session1.send(capture(slot)) } just Runs
 
         controller.sessions.add(session1)
-        controller.sendEvent(EVENT_PRIVATE_MESSAGE, event.output(body))
+        controller.sendEvent(EVENT_PRIVATE_MESSAGE, event.output(text))
 
         assertJsonEquals(slot.captured, outputEvent)
     }
@@ -55,7 +55,7 @@ internal class WebSocketControllerTest : ControllerTest() {
 
         controller.sessions.add(session1)
         controller.sessions.add(session2)
-        controller.sendEvent(EVENT_PRIVATE_MESSAGE, event.output(body))
+        controller.sendEvent(EVENT_PRIVATE_MESSAGE, event.output(text))
 
         verify { session2.send(slot.captured) }
     }
@@ -66,7 +66,7 @@ internal class WebSocketControllerTest : ControllerTest() {
         {
             "type": "event",
             "name": "PrivateMessageReceivedEvent",
-            "data": ${toJson(header.output(contact.id, body))}
+            "data": ${toJson(header.output(contact.id, text))}
         }
         """
         assertJsonEquals(json, outputEvent)
diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt
index 83e04523c9..99488b9a17 100644
--- a/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt
+++ b/briar-headless/src/test/java/org/briarproject/briar/headless/messaging/MessagingControllerImplTest.kt
@@ -13,7 +13,7 @@ import org.briarproject.bramble.util.StringUtils.getRandomString
 import org.briarproject.briar.api.client.SessionId
 import org.briarproject.briar.api.introduction.IntroductionRequest
 import org.briarproject.briar.api.messaging.*
-import org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_BODY_LENGTH
+import org.briarproject.briar.api.messaging.MessagingConstants.MAX_PRIVATE_MESSAGE_TEXT_LENGTH
 import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent
 import org.briarproject.briar.headless.ControllerTest
 import org.briarproject.briar.headless.event.WebSocketController
@@ -50,8 +50,8 @@ internal class MessagingControllerImplTest : ControllerTest() {
     fun list() {
         expectGetContact()
         every { conversationManager.getMessageHeaders(contact.id) } returns listOf(header)
-        every { messagingManager.getMessageBody(message.id) } returns body
-        every { ctx.json(listOf(header.output(contact.id, body))) } returns ctx
+        every { messagingManager.getMessageText(message.id) } returns text
+        every { ctx.json(listOf(header.output(contact.id, text))) } returns ctx
 
         controller.list(ctx)
     }
@@ -59,7 +59,7 @@ internal class MessagingControllerImplTest : ControllerTest() {
     @Test
     fun listIntroductionRequest() {
         val request = IntroductionRequest(
-            message.id, group.id, timestamp, true, true, false, true, sessionId, author, body,
+            message.id, group.id, timestamp, true, true, false, true, sessionId, author, text,
             false, false
         )
 
@@ -95,14 +95,14 @@ internal class MessagingControllerImplTest : ControllerTest() {
         val slot = CapturingSlot<JsonDict>()
 
         expectGetContact()
-        every { ctx.body() } returns """{"text": "$body"}"""
+        every { ctx.body() } returns """{"text": "$text"}"""
         every { messagingManager.getContactGroup(contact) } returns group
         every { clock.currentTimeMillis() } returns timestamp
         every {
             privateMessageFactory.createPrivateMessage(
                 group.id,
                 timestamp,
-                body
+                text
             )
         } returns privateMessage
         every { messagingManager.addLocalMessage(privateMessage) } just runs
@@ -110,7 +110,7 @@ internal class MessagingControllerImplTest : ControllerTest() {
 
         controller.write(ctx)
 
-        assertEquals(privateMessage.output(contact.id, body), slot.captured)
+        assertEquals(privateMessage.output(contact.id, text), slot.captured)
     }
 
     @Test
@@ -124,7 +124,7 @@ internal class MessagingControllerImplTest : ControllerTest() {
     }
 
     @Test
-    fun writeNonexistentBody() {
+    fun writeNonexistentText() {
         expectGetContact()
         every { ctx.body() } returns """{"foo": "bar"}"""
 
@@ -132,7 +132,7 @@ internal class MessagingControllerImplTest : ControllerTest() {
     }
 
     @Test
-    fun writeEmptyBody() {
+    fun writeEmptyText() {
         expectGetContact()
         every { ctx.body() } returns """{"text": ""}"""
 
@@ -140,9 +140,9 @@ internal class MessagingControllerImplTest : ControllerTest() {
     }
 
     @Test
-    fun writeTooLongBody() {
+    fun writeTooLongText() {
         expectGetContact()
-        every { ctx.body() } returns """{"text": "${getRandomString(MAX_PRIVATE_MESSAGE_BODY_LENGTH + 1)}"}"""
+        every { ctx.body() } returns """{"text": "${getRandomString(MAX_PRIVATE_MESSAGE_TEXT_LENGTH + 1)}"}"""
 
         assertThrows(BadRequestResponse::class.java) { controller.write(ctx) }
     }
@@ -151,8 +151,8 @@ internal class MessagingControllerImplTest : ControllerTest() {
     fun privateMessageEvent() {
         val event = PrivateMessageReceivedEvent(header, contact.id)
 
-        every { messagingManager.getMessageBody(message.id) } returns body
-        every { webSocketController.sendEvent(EVENT_PRIVATE_MESSAGE, event.output(body)) } just runs
+        every { messagingManager.getMessageText(message.id) } returns text
+        every { webSocketController.sendEvent(EVENT_PRIVATE_MESSAGE, event.output(text)) } just runs
 
         controller.eventOccurred(event)
     }
@@ -161,7 +161,7 @@ internal class MessagingControllerImplTest : ControllerTest() {
     fun testOutputPrivateMessageHeader() {
         val json = """
             {
-                "text": "$body",
+                "text": "$text",
                 "type": "PrivateMessage",
                 "timestamp": $timestamp,
                 "groupId": ${toJson(header.groupId.bytes)},
@@ -173,14 +173,14 @@ internal class MessagingControllerImplTest : ControllerTest() {
                 "id": ${toJson(header.id.bytes)}
             }
         """
-        assertJsonEquals(json, header.output(contact.id, body))
+        assertJsonEquals(json, header.output(contact.id, text))
     }
 
     @Test
     fun testOutputPrivateMessage() {
         val json = """
             {
-                "text": "$body",
+                "text": "$text",
                 "type": "PrivateMessage",
                 "timestamp": ${message.timestamp},
                 "groupId": ${toJson(message.groupId.bytes)},
@@ -192,11 +192,11 @@ internal class MessagingControllerImplTest : ControllerTest() {
                 "id": ${toJson(message.id.bytes)}
             }
         """
-        assertJsonEquals(json, privateMessage.output(contact.id, body))
+        assertJsonEquals(json, privateMessage.output(contact.id, text))
     }
 
     @Test
-    fun testIntroductionRequestWithEmptyBody() {
+    fun testIntroductionRequestWithNullText() {
         val request = IntroductionRequest(
             message.id, group.id, timestamp, true, true, false, true, sessionId, author, null,
             false, false
-- 
GitLab