diff --git a/briar-android/src/net/sf/briar/android/HomeScreenActivity.java b/briar-android/src/net/sf/briar/android/HomeScreenActivity.java
index 354d2d1b2371624b8cc662cd12b72e14302526fe..7c6c33da4b28eac62c1c45aa1363e130e09a56dc 100644
--- a/briar-android/src/net/sf/briar/android/HomeScreenActivity.java
+++ b/briar-android/src/net/sf/briar/android/HomeScreenActivity.java
@@ -11,8 +11,8 @@ import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
 import static net.sf.briar.api.messaging.Rating.GOOD;
 
 import java.util.ArrayList;
diff --git a/briar-android/src/net/sf/briar/android/SetupActivity.java b/briar-android/src/net/sf/briar/android/SetupActivity.java
index e272774b7b54a666780a077c8f90f5068af5a524..73dd6b6261917c928951596648684f9c04ff319c 100644
--- a/briar-android/src/net/sf/briar/android/SetupActivity.java
+++ b/briar-android/src/net/sf/briar/android/SetupActivity.java
@@ -9,8 +9,8 @@ import static android.view.Gravity.CENTER_HORIZONTAL;
 import static android.view.View.GONE;
 import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.VERTICAL;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
 
 import java.io.IOException;
 import java.security.KeyPair;
diff --git a/briar-android/src/net/sf/briar/android/SplashScreenActivity.java b/briar-android/src/net/sf/briar/android/SplashScreenActivity.java
index a0683b5467c8d8bf68ac6bc8d92ce290aa69a1c5..1d905f1cb552db2e9c129d9a4115ebedbaed4110 100644
--- a/briar-android/src/net/sf/briar/android/SplashScreenActivity.java
+++ b/briar-android/src/net/sf/briar/android/SplashScreenActivity.java
@@ -2,7 +2,7 @@ package net.sf.briar.android;
 
 import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
 import net.sf.briar.api.db.DatabaseConfig;
 import roboguice.RoboGuice;
 import roboguice.activity.RoboSplashActivity;
diff --git a/briar-android/src/net/sf/briar/android/blogs/BlogActivity.java b/briar-android/src/net/sf/briar/android/blogs/BlogActivity.java
index f603373968b315cfe3bf1821f50ceababfcfa9b2..b3fa2cd92fc441e7f1478654fe78cfdc8d2c9812 100644
--- a/briar-android/src/net/sf/briar/android/blogs/BlogActivity.java
+++ b/briar-android/src/net/sf/briar/android/blogs/BlogActivity.java
@@ -8,8 +8,8 @@ import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static net.sf.briar.android.blogs.ReadBlogPostActivity.RESULT_NEXT;
 import static net.sf.briar.android.blogs.ReadBlogPostActivity.RESULT_PREV;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
 
 import java.util.Collection;
 import java.util.concurrent.Executor;
@@ -17,8 +17,8 @@ import java.util.logging.Logger;
 
 import net.sf.briar.R;
 import net.sf.briar.android.AscendingHeaderComparator;
-import net.sf.briar.android.widgets.HorizontalBorder;
-import net.sf.briar.android.widgets.ListLoadingProgressBar;
+import net.sf.briar.android.util.HorizontalBorder;
+import net.sf.briar.android.util.ListLoadingProgressBar;
 import net.sf.briar.api.Author;
 import net.sf.briar.api.android.DatabaseUiExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
diff --git a/briar-android/src/net/sf/briar/android/blogs/BlogAdapter.java b/briar-android/src/net/sf/briar/android/blogs/BlogAdapter.java
index 046b10650b9836f4e557cf0e3ce7bfbacb87bbcf..bd181bdedf0188429257a57655b9b9c350211624 100644
--- a/briar-android/src/net/sf/briar/android/blogs/BlogAdapter.java
+++ b/briar-android/src/net/sf/briar/android/blogs/BlogAdapter.java
@@ -5,14 +5,14 @@ import static android.view.Gravity.CENTER_VERTICAL;
 import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
 import static net.sf.briar.api.messaging.Rating.BAD;
 import static net.sf.briar.api.messaging.Rating.GOOD;
 
 import java.util.ArrayList;
 
 import net.sf.briar.R;
-import net.sf.briar.android.widgets.HorizontalSpace;
+import net.sf.briar.android.util.HorizontalSpace;
 import net.sf.briar.api.Author;
 import net.sf.briar.api.db.GroupMessageHeader;
 import net.sf.briar.api.messaging.Rating;
diff --git a/briar-android/src/net/sf/briar/android/blogs/BlogListActivity.java b/briar-android/src/net/sf/briar/android/blogs/BlogListActivity.java
index 5680ad9303e9f0bc944649ca4c6b7134314b3278..0b16ce3423102b33c10c070283780ede0def27ca 100644
--- a/briar-android/src/net/sf/briar/android/blogs/BlogListActivity.java
+++ b/briar-android/src/net/sf/briar/android/blogs/BlogListActivity.java
@@ -9,9 +9,9 @@ import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static net.sf.briar.android.blogs.BlogListItem.MANAGE;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
 
 import java.util.Collection;
 import java.util.Comparator;
@@ -21,9 +21,9 @@ import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
 import net.sf.briar.R;
-import net.sf.briar.android.widgets.HorizontalBorder;
-import net.sf.briar.android.widgets.HorizontalSpace;
-import net.sf.briar.android.widgets.ListLoadingProgressBar;
+import net.sf.briar.android.util.HorizontalBorder;
+import net.sf.briar.android.util.HorizontalSpace;
+import net.sf.briar.android.util.ListLoadingProgressBar;
 import net.sf.briar.api.android.DatabaseUiExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
 import net.sf.briar.api.db.DbException;
diff --git a/briar-android/src/net/sf/briar/android/blogs/BlogListAdapter.java b/briar-android/src/net/sf/briar/android/blogs/BlogListAdapter.java
index 470ee405c874e902ae2b6d4be9efd062e0a3e17c..f99eb1a8a4088216c2bd92c436ab185014906043 100644
--- a/briar-android/src/net/sf/briar/android/blogs/BlogListAdapter.java
+++ b/briar-android/src/net/sf/briar/android/blogs/BlogListAdapter.java
@@ -6,7 +6,7 @@ import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
 import static net.sf.briar.android.blogs.BlogListItem.MANAGE;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -14,7 +14,7 @@ import java.util.Comparator;
 import java.util.List;
 
 import net.sf.briar.R;
-import net.sf.briar.android.widgets.HorizontalSpace;
+import net.sf.briar.android.util.HorizontalSpace;
 import android.content.Context;
 import android.content.res.Resources;
 import android.text.format.DateUtils;
diff --git a/briar-android/src/net/sf/briar/android/blogs/ConfigureBlogActivity.java b/briar-android/src/net/sf/briar/android/blogs/ConfigureBlogActivity.java
index 0d7ca47c2c0e6ec299f26e68a328b0c9ca19fe14..1fe42adc6b69607d006fa7129fe4365915ed751b 100644
--- a/briar-android/src/net/sf/briar/android/blogs/ConfigureBlogActivity.java
+++ b/briar-android/src/net/sf/briar/android/blogs/ConfigureBlogActivity.java
@@ -6,8 +6,8 @@ import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
 
 import java.util.Collection;
 import java.util.Collections;
diff --git a/briar-android/src/net/sf/briar/android/blogs/CreateBlogActivity.java b/briar-android/src/net/sf/briar/android/blogs/CreateBlogActivity.java
index a92b19ea54b02b2eee151d7e28fb88710af9615d..f699007d287519d9e98ec6f7b3f6987ff823c495 100644
--- a/briar-android/src/net/sf/briar/android/blogs/CreateBlogActivity.java
+++ b/briar-android/src/net/sf/briar/android/blogs/CreateBlogActivity.java
@@ -10,8 +10,8 @@ import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
 
 import java.io.IOException;
 import java.security.KeyPair;
diff --git a/briar-android/src/net/sf/briar/android/blogs/ManageBlogsActivity.java b/briar-android/src/net/sf/briar/android/blogs/ManageBlogsActivity.java
index 1055024983845b7585776a30e988a00f174ee992..430e40e7d182680d89118befd2778156366e3f2a 100644
--- a/briar-android/src/net/sf/briar/android/blogs/ManageBlogsActivity.java
+++ b/briar-android/src/net/sf/briar/android/blogs/ManageBlogsActivity.java
@@ -3,7 +3,7 @@ package net.sf.briar.android.blogs;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static net.sf.briar.android.blogs.ManageBlogsItem.NONE;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -13,7 +13,7 @@ import java.util.List;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
-import net.sf.briar.android.widgets.ListLoadingProgressBar;
+import net.sf.briar.android.util.ListLoadingProgressBar;
 import net.sf.briar.api.android.DatabaseUiExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
 import net.sf.briar.api.db.DbException;
diff --git a/briar-android/src/net/sf/briar/android/blogs/ReadBlogPostActivity.java b/briar-android/src/net/sf/briar/android/blogs/ReadBlogPostActivity.java
index 7188674f240189b5fe8944bbfb7d758532abb2f5..f243acb1f9aeff4553aa0c52789bfa97f472c979 100644
--- a/briar-android/src/net/sf/briar/android/blogs/ReadBlogPostActivity.java
+++ b/briar-android/src/net/sf/briar/android/blogs/ReadBlogPostActivity.java
@@ -7,9 +7,9 @@ import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP_1;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
 import static net.sf.briar.api.messaging.Rating.BAD;
 import static net.sf.briar.api.messaging.Rating.GOOD;
 import static net.sf.briar.api.messaging.Rating.UNRATED;
@@ -19,8 +19,8 @@ import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
 import net.sf.briar.R;
-import net.sf.briar.android.widgets.HorizontalBorder;
-import net.sf.briar.android.widgets.HorizontalSpace;
+import net.sf.briar.android.util.HorizontalBorder;
+import net.sf.briar.android.util.HorizontalSpace;
 import net.sf.briar.api.android.DatabaseUiExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
 import net.sf.briar.api.db.DbException;
diff --git a/briar-android/src/net/sf/briar/android/blogs/WriteBlogPostActivity.java b/briar-android/src/net/sf/briar/android/blogs/WriteBlogPostActivity.java
index e3d60e2a9675b0b2bbdf6d0a1058a99670901067..d8885ffe34461406c063d6292e42a138c7790e2f 100644
--- a/briar-android/src/net/sf/briar/android/blogs/WriteBlogPostActivity.java
+++ b/briar-android/src/net/sf/briar/android/blogs/WriteBlogPostActivity.java
@@ -7,7 +7,7 @@ import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
 
 import java.io.IOException;
 import java.security.GeneralSecurityException;
@@ -21,7 +21,7 @@ import net.sf.briar.android.identity.CreateIdentityActivity;
 import net.sf.briar.android.identity.LocalAuthorItem;
 import net.sf.briar.android.identity.LocalAuthorItemComparator;
 import net.sf.briar.android.identity.LocalAuthorSpinnerAdapter;
-import net.sf.briar.android.widgets.HorizontalSpace;
+import net.sf.briar.android.util.HorizontalSpace;
 import net.sf.briar.api.AuthorId;
 import net.sf.briar.api.LocalAuthor;
 import net.sf.briar.api.android.DatabaseUiExecutor;
diff --git a/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java b/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java
index 061d52a10b6f3fc795e03fc20b61fabeaf9a2c3c..e525239cc8639dbd0d62b06b14beedd59fd31ecd 100644
--- a/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java
+++ b/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java
@@ -10,9 +10,9 @@ import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
 
 import java.io.File;
 import java.util.Collection;
@@ -23,9 +23,9 @@ import java.util.logging.Logger;
 
 import net.sf.briar.R;
 import net.sf.briar.android.invitation.AddContactActivity;
-import net.sf.briar.android.widgets.HorizontalBorder;
-import net.sf.briar.android.widgets.HorizontalSpace;
-import net.sf.briar.android.widgets.ListLoadingProgressBar;
+import net.sf.briar.android.util.HorizontalBorder;
+import net.sf.briar.android.util.HorizontalSpace;
+import net.sf.briar.android.util.ListLoadingProgressBar;
 import net.sf.briar.api.Contact;
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.android.DatabaseUiExecutor;
diff --git a/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java b/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java
index d20412f307744df57d97383fdcea8dd8d8edda44..3ff0f06dad794ebdd11a6baf4b43d359656fbe10 100644
--- a/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java
+++ b/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java
@@ -2,7 +2,7 @@ package net.sf.briar.android.contact;
 
 import static android.view.Gravity.CENTER_VERTICAL;
 import static android.widget.LinearLayout.HORIZONTAL;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
 
 import java.util.ArrayList;
 
diff --git a/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java b/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java
index cedcdc3ffdeab6c4631ec626f5e1847404fabd13..f0f0f9fdc2a6df20783ac9f860dfe7a132ae3754 100644
--- a/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/ConfigureGroupActivity.java
@@ -6,8 +6,8 @@ import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
 
 import java.util.Collection;
 import java.util.Collections;
diff --git a/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java b/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java
index 56b5187e02d237f5496368f6af951aa9d8cc9520..7ebd8b59330917b46fcae87cbb3a86aef9c97e21 100644
--- a/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/CreateGroupActivity.java
@@ -10,8 +10,8 @@ import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
 
 import java.io.IOException;
 import java.util.Collection;
diff --git a/briar-android/src/net/sf/briar/android/groups/GroupActivity.java b/briar-android/src/net/sf/briar/android/groups/GroupActivity.java
index c7de96f65c64a13bcf497ef7a0d1175f14a91c9a..49c125ef43585a57b17e70c9655707142e207588 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/GroupActivity.java
@@ -8,8 +8,8 @@ import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static net.sf.briar.android.groups.ReadGroupPostActivity.RESULT_NEXT;
 import static net.sf.briar.android.groups.ReadGroupPostActivity.RESULT_PREV;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
 
 import java.util.Collection;
 import java.util.concurrent.Executor;
@@ -17,8 +17,8 @@ import java.util.logging.Logger;
 
 import net.sf.briar.R;
 import net.sf.briar.android.AscendingHeaderComparator;
-import net.sf.briar.android.widgets.HorizontalBorder;
-import net.sf.briar.android.widgets.ListLoadingProgressBar;
+import net.sf.briar.android.util.HorizontalBorder;
+import net.sf.briar.android.util.ListLoadingProgressBar;
 import net.sf.briar.api.Author;
 import net.sf.briar.api.android.DatabaseUiExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
diff --git a/briar-android/src/net/sf/briar/android/groups/GroupAdapter.java b/briar-android/src/net/sf/briar/android/groups/GroupAdapter.java
index d47cc864c339dc1bec6938ca4c95e13f41116dfd..7f2cd71ab171db1c81b0e4294e034273270eb069 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupAdapter.java
+++ b/briar-android/src/net/sf/briar/android/groups/GroupAdapter.java
@@ -5,14 +5,14 @@ import static android.view.Gravity.CENTER_VERTICAL;
 import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
 import static net.sf.briar.api.messaging.Rating.BAD;
 import static net.sf.briar.api.messaging.Rating.GOOD;
 
 import java.util.ArrayList;
 
 import net.sf.briar.R;
-import net.sf.briar.android.widgets.HorizontalSpace;
+import net.sf.briar.android.util.HorizontalSpace;
 import net.sf.briar.api.Author;
 import net.sf.briar.api.db.GroupMessageHeader;
 import net.sf.briar.api.messaging.Rating;
diff --git a/briar-android/src/net/sf/briar/android/groups/GroupListActivity.java b/briar-android/src/net/sf/briar/android/groups/GroupListActivity.java
index bd4d274656e010d3a6fb84d718fbd09b928feed7..9f6741d6b28e804a4c0e9b336cb96b4972a493c6 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupListActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/GroupListActivity.java
@@ -9,9 +9,9 @@ import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static net.sf.briar.android.groups.GroupListItem.MANAGE;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
 
 import java.util.Collection;
 import java.util.Comparator;
@@ -19,9 +19,9 @@ import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
 import net.sf.briar.R;
-import net.sf.briar.android.widgets.HorizontalBorder;
-import net.sf.briar.android.widgets.HorizontalSpace;
-import net.sf.briar.android.widgets.ListLoadingProgressBar;
+import net.sf.briar.android.util.HorizontalBorder;
+import net.sf.briar.android.util.HorizontalSpace;
+import net.sf.briar.android.util.ListLoadingProgressBar;
 import net.sf.briar.api.android.DatabaseUiExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
 import net.sf.briar.api.db.DbException;
diff --git a/briar-android/src/net/sf/briar/android/groups/GroupListAdapter.java b/briar-android/src/net/sf/briar/android/groups/GroupListAdapter.java
index 0c34a0e6ba6a554bb7e61c57128d9936b6347c75..d1c1a542dd4c8d6610461ac7b8864c2202673d55 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupListAdapter.java
+++ b/briar-android/src/net/sf/briar/android/groups/GroupListAdapter.java
@@ -6,7 +6,7 @@ import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
 import static net.sf.briar.android.groups.GroupListItem.MANAGE;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -14,7 +14,7 @@ import java.util.Comparator;
 import java.util.List;
 
 import net.sf.briar.R;
-import net.sf.briar.android.widgets.HorizontalSpace;
+import net.sf.briar.android.util.HorizontalSpace;
 import android.content.Context;
 import android.content.res.Resources;
 import android.text.format.DateUtils;
diff --git a/briar-android/src/net/sf/briar/android/groups/ManageGroupsActivity.java b/briar-android/src/net/sf/briar/android/groups/ManageGroupsActivity.java
index 390de0e280b0e34d80b922b1c9154e9923a4448c..bba527fe7166477a79e960496739640ec06aef29 100644
--- a/briar-android/src/net/sf/briar/android/groups/ManageGroupsActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/ManageGroupsActivity.java
@@ -3,7 +3,7 @@ package net.sf.briar.android.groups;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static net.sf.briar.android.groups.ManageGroupsItem.NONE;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -13,7 +13,7 @@ import java.util.List;
 import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
-import net.sf.briar.android.widgets.ListLoadingProgressBar;
+import net.sf.briar.android.util.ListLoadingProgressBar;
 import net.sf.briar.api.android.DatabaseUiExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
 import net.sf.briar.api.db.DbException;
diff --git a/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java b/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java
index 097ce6024af32311721b58ea336bb13525d45b70..8ce4f8a4c4d3f06d90c7dc86e84fa853874b2fbd 100644
--- a/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java
@@ -7,9 +7,9 @@ import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP_1;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
 import static net.sf.briar.api.messaging.Rating.BAD;
 import static net.sf.briar.api.messaging.Rating.GOOD;
 import static net.sf.briar.api.messaging.Rating.UNRATED;
@@ -19,8 +19,8 @@ import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
 import net.sf.briar.R;
-import net.sf.briar.android.widgets.HorizontalBorder;
-import net.sf.briar.android.widgets.HorizontalSpace;
+import net.sf.briar.android.util.HorizontalBorder;
+import net.sf.briar.android.util.HorizontalSpace;
 import net.sf.briar.api.AuthorId;
 import net.sf.briar.api.android.DatabaseUiExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
diff --git a/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java b/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java
index f3168ad89c7eca0b6200561a8dad6a953c6a9509..d2bba879249ff600168aec3635715a9ffa755473 100644
--- a/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/WriteGroupPostActivity.java
@@ -7,7 +7,7 @@ import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
 
 import java.io.IOException;
 import java.security.GeneralSecurityException;
@@ -24,7 +24,7 @@ import net.sf.briar.android.identity.CreateIdentityActivity;
 import net.sf.briar.android.identity.LocalAuthorItem;
 import net.sf.briar.android.identity.LocalAuthorItemComparator;
 import net.sf.briar.android.identity.LocalAuthorSpinnerAdapter;
-import net.sf.briar.android.widgets.HorizontalSpace;
+import net.sf.briar.android.util.HorizontalSpace;
 import net.sf.briar.api.AuthorId;
 import net.sf.briar.api.LocalAuthor;
 import net.sf.briar.api.android.DatabaseUiExecutor;
diff --git a/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java b/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java
index 71e82cfbdde91193c24342c261ffa982b96a7221..f89fff502b3ce5a6e99d9b12e406f0457e2b24a0 100644
--- a/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java
+++ b/briar-android/src/net/sf/briar/android/identity/CreateIdentityActivity.java
@@ -10,8 +10,8 @@ import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
 import static net.sf.briar.api.messaging.Rating.GOOD;
 
 import java.io.IOException;
diff --git a/briar-android/src/net/sf/briar/android/invitation/AddContactView.java b/briar-android/src/net/sf/briar/android/invitation/AddContactView.java
index cd3602b30156d5b3007df0ed99f44c7fe7c2f432..a6ee0afc56669862a15d0ca691b07492680a7df4 100644
--- a/briar-android/src/net/sf/briar/android/invitation/AddContactView.java
+++ b/briar-android/src/net/sf/briar/android/invitation/AddContactView.java
@@ -1,7 +1,7 @@
 package net.sf.briar.android.invitation;
 
 import static android.view.Gravity.CENTER_HORIZONTAL;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
 import android.content.Context;
 import android.widget.LinearLayout;
 
diff --git a/briar-android/src/net/sf/briar/android/invitation/BluetoothWidget.java b/briar-android/src/net/sf/briar/android/invitation/BluetoothStatusView.java
similarity index 93%
rename from briar-android/src/net/sf/briar/android/invitation/BluetoothWidget.java
rename to briar-android/src/net/sf/briar/android/invitation/BluetoothStatusView.java
index 073c5923af16a37c3a105835cb14aedd17bf5c67..1cec858cbcb2f67c7997a757736b321f14845c16 100644
--- a/briar-android/src/net/sf/briar/android/invitation/BluetoothWidget.java
+++ b/briar-android/src/net/sf/briar/android/invitation/BluetoothStatusView.java
@@ -3,7 +3,7 @@ package net.sf.briar.android.invitation;
 import static android.bluetooth.BluetoothAdapter.SCAN_MODE_CONNECTABLE_DISCOVERABLE;
 import static android.provider.Settings.ACTION_BLUETOOTH_SETTINGS;
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
 import net.sf.briar.R;
 import android.bluetooth.BluetoothAdapter;
 import android.content.Context;
@@ -15,9 +15,10 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
-public class BluetoothWidget extends LinearLayout implements OnClickListener {
+public class BluetoothStatusView extends LinearLayout
+implements OnClickListener {
 
-	public BluetoothWidget(Context ctx) {
+	public BluetoothStatusView(Context ctx) {
 		super(ctx);
 	}
 
diff --git a/briar-android/src/net/sf/briar/android/invitation/CodeEntryWidget.java b/briar-android/src/net/sf/briar/android/invitation/CodeEntryView.java
similarity index 94%
rename from briar-android/src/net/sf/briar/android/invitation/CodeEntryWidget.java
rename to briar-android/src/net/sf/briar/android/invitation/CodeEntryView.java
index 6685abc36f2d98f39af64023fc1d7ee8538ebc45..bafcba55d70744e42e2adbcbca94a62eeb8a3813 100644
--- a/briar-android/src/net/sf/briar/android/invitation/CodeEntryWidget.java
+++ b/briar-android/src/net/sf/briar/android/invitation/CodeEntryView.java
@@ -5,7 +5,7 @@ import static android.text.InputType.TYPE_CLASS_NUMBER;
 import static android.view.Gravity.CENTER;
 import static android.view.Gravity.CENTER_HORIZONTAL;
 import static android.view.inputmethod.InputMethodManager.HIDE_IMPLICIT_ONLY;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
 import net.sf.briar.R;
 import android.content.Context;
 import android.view.KeyEvent;
@@ -18,14 +18,14 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 import android.widget.TextView.OnEditorActionListener;
 
-public class CodeEntryWidget extends LinearLayout
+public class CodeEntryView extends LinearLayout
 implements OnEditorActionListener, OnClickListener {
 
 	private CodeEntryListener listener = null;
 	private EditText codeEntry = null;
 	private Button continueButton = null;
 
-	public CodeEntryWidget(Context ctx) {
+	public CodeEntryView(Context ctx) {
 		super(ctx);
 	}
 
diff --git a/briar-android/src/net/sf/briar/android/invitation/CodesDoNotMatchView.java b/briar-android/src/net/sf/briar/android/invitation/CodesDoNotMatchView.java
index c3e1ffb4a0d7f2dcedd882a044f4fd068bceacbf..ca8d119e8d67601846384e2a7d47582d9233bc3f 100644
--- a/briar-android/src/net/sf/briar/android/invitation/CodesDoNotMatchView.java
+++ b/briar-android/src/net/sf/briar/android/invitation/CodesDoNotMatchView.java
@@ -1,7 +1,7 @@
 package net.sf.briar.android.invitation;
 
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
 import net.sf.briar.R;
 import android.content.Context;
 import android.view.View;
diff --git a/briar-android/src/net/sf/briar/android/invitation/ConfirmationCodeView.java b/briar-android/src/net/sf/briar/android/invitation/ConfirmationCodeView.java
index 6d000b32f338edfdf647d3a96726e9eb134d71a1..0e5caf53f23d98dbef9265c6a559b8b4f1413350 100644
--- a/briar-android/src/net/sf/briar/android/invitation/ConfirmationCodeView.java
+++ b/briar-android/src/net/sf/briar/android/invitation/ConfirmationCodeView.java
@@ -49,7 +49,7 @@ implements CodeEntryListener {
 		code.setText(String.format("%06d", localCode));
 		addView(code);
 
-		CodeEntryWidget codeEntry = new CodeEntryWidget(ctx);
+		CodeEntryView codeEntry = new CodeEntryView(ctx);
 		Resources res = getResources();
 		codeEntry.init(this, res.getString(R.string.enter_confirmation_code));
 		addView(codeEntry);
diff --git a/briar-android/src/net/sf/briar/android/invitation/ConnectionFailedView.java b/briar-android/src/net/sf/briar/android/invitation/ConnectionFailedView.java
index 658153b87e228849b3bc5ac8fe17b0da5760213f..f3c5bf42f6daf75c9e5f5cbaf32dde4745265d66 100644
--- a/briar-android/src/net/sf/briar/android/invitation/ConnectionFailedView.java
+++ b/briar-android/src/net/sf/briar/android/invitation/ConnectionFailedView.java
@@ -1,7 +1,7 @@
 package net.sf.briar.android.invitation;
 
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
 import net.sf.briar.R;
 import android.content.Context;
 import android.view.View;
@@ -14,8 +14,8 @@ import android.widget.TextView;
 public class ConnectionFailedView extends AddContactView
 implements OnClickListener {
 
-	private WifiWidget wifi = null;
-	private BluetoothWidget bluetooth = null;
+	private WifiStatusView wifi = null;
+	private BluetoothStatusView bluetooth = null;
 	private Button tryAgainButton = null;
 
 	ConnectionFailedView(Context ctx) {
@@ -46,11 +46,11 @@ implements OnClickListener {
 		checkNetwork.setText(R.string.check_same_network);
 		addView(checkNetwork);
 
-		wifi = new WifiWidget(ctx);
+		wifi = new WifiStatusView(ctx);
 		wifi.init();
 		addView(wifi);
 
-		bluetooth = new BluetoothWidget(ctx);
+		bluetooth = new BluetoothStatusView(ctx);
 		bluetooth.init();
 		addView(bluetooth);
 
diff --git a/briar-android/src/net/sf/briar/android/invitation/ContactAddedView.java b/briar-android/src/net/sf/briar/android/invitation/ContactAddedView.java
index 09a74dabe5ae23bfab1ffad28560ee7aac309cab..dfb2d0103475c9366f7f9b170d674ffa153a1bb6 100644
--- a/briar-android/src/net/sf/briar/android/invitation/ContactAddedView.java
+++ b/briar-android/src/net/sf/briar/android/invitation/ContactAddedView.java
@@ -1,7 +1,7 @@
 package net.sf.briar.android.invitation;
 
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
 import net.sf.briar.R;
 import android.content.Context;
 import android.view.View;
diff --git a/briar-android/src/net/sf/briar/android/invitation/InvitationCodeView.java b/briar-android/src/net/sf/briar/android/invitation/InvitationCodeView.java
index c55f1bfb48dec199b44470552119a9d2e547a1e2..262b0ae94c9bac9629f21e671ce2c2d57c8e34a4 100644
--- a/briar-android/src/net/sf/briar/android/invitation/InvitationCodeView.java
+++ b/briar-android/src/net/sf/briar/android/invitation/InvitationCodeView.java
@@ -31,7 +31,7 @@ implements CodeEntryListener {
 		code.setText(String.format("%06d", localCode));
 		addView(code);
 
-		CodeEntryWidget codeEntry = new CodeEntryWidget(ctx);
+		CodeEntryView codeEntry = new CodeEntryView(ctx);
 		Resources res = getResources();
 		codeEntry.init(this, res.getString(R.string.enter_invitation_code));
 		addView(codeEntry);
diff --git a/briar-android/src/net/sf/briar/android/invitation/NetworkSetupView.java b/briar-android/src/net/sf/briar/android/invitation/NetworkSetupView.java
index 5c1487cd71168b985a51e21db15072efbc62339e..5756fb30b376c9bb7500de649217eada989c3898 100644
--- a/briar-android/src/net/sf/briar/android/invitation/NetworkSetupView.java
+++ b/briar-android/src/net/sf/briar/android/invitation/NetworkSetupView.java
@@ -2,8 +2,8 @@ package net.sf.briar.android.invitation;
 
 import static android.view.Gravity.CENTER;
 import static net.sf.briar.android.identity.LocalAuthorItem.NEW;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
 import net.sf.briar.R;
 import net.sf.briar.android.identity.CreateIdentityActivity;
 import net.sf.briar.android.identity.LocalAuthorItem;
@@ -25,8 +25,8 @@ implements OnItemSelectedListener, OnClickListener {
 
 	private LocalAuthorSpinnerAdapter adapter = null;
 	private Spinner spinner = null;
-	private WifiWidget wifi = null;
-	private BluetoothWidget bluetooth = null;
+	private WifiStatusView wifi = null;
+	private BluetoothStatusView bluetooth = null;
 	private Button continueButton = null;
 
 	NetworkSetupView(Context ctx) {
@@ -56,11 +56,11 @@ implements OnItemSelectedListener, OnClickListener {
 		innerLayout.addView(spinner);
 		addView(innerLayout);
 
-		wifi = new WifiWidget(ctx);
+		wifi = new WifiStatusView(ctx);
 		wifi.init();
 		addView(wifi);
 
-		bluetooth = new BluetoothWidget(ctx);
+		bluetooth = new BluetoothStatusView(ctx);
 		bluetooth.init();
 		addView(bluetooth);
 
diff --git a/briar-android/src/net/sf/briar/android/invitation/WifiWidget.java b/briar-android/src/net/sf/briar/android/invitation/WifiStatusView.java
similarity index 93%
rename from briar-android/src/net/sf/briar/android/invitation/WifiWidget.java
rename to briar-android/src/net/sf/briar/android/invitation/WifiStatusView.java
index 22d49df3990bff59a02aab1bb22b70199cb50c2c..2f88acffc0b94fd3520f992ccfe8cff8d4b58476 100644
--- a/briar-android/src/net/sf/briar/android/invitation/WifiWidget.java
+++ b/briar-android/src/net/sf/briar/android/invitation/WifiStatusView.java
@@ -3,7 +3,7 @@ package net.sf.briar.android.invitation;
 import static android.content.Context.WIFI_SERVICE;
 import static android.provider.Settings.ACTION_WIFI_SETTINGS;
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
 import net.sf.briar.R;
 import android.content.Context;
 import android.content.Intent;
@@ -16,9 +16,9 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
-public class WifiWidget extends LinearLayout implements OnClickListener {
+public class WifiStatusView extends LinearLayout implements OnClickListener {
 
-	public WifiWidget(Context ctx) {
+	public WifiStatusView(Context ctx) {
 		super(ctx);
 	}
 
diff --git a/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java b/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java
index 3c6fc5cce9e05369b8a700e6282588b46df65c81..2f3ffeaeb71792b40e75ebaeab4e394f0f5dd513 100644
--- a/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java
+++ b/briar-android/src/net/sf/briar/android/messages/ConversationActivity.java
@@ -6,8 +6,8 @@ import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
 
 import java.util.Collection;
 import java.util.concurrent.Executor;
@@ -15,8 +15,8 @@ import java.util.logging.Logger;
 
 import net.sf.briar.R;
 import net.sf.briar.android.AscendingHeaderComparator;
-import net.sf.briar.android.widgets.HorizontalBorder;
-import net.sf.briar.android.widgets.ListLoadingProgressBar;
+import net.sf.briar.android.util.HorizontalBorder;
+import net.sf.briar.android.util.ListLoadingProgressBar;
 import net.sf.briar.api.AuthorId;
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.android.DatabaseUiExecutor;
diff --git a/briar-android/src/net/sf/briar/android/messages/ConversationAdapter.java b/briar-android/src/net/sf/briar/android/messages/ConversationAdapter.java
index fadd7f8dc1f24a04f66fc815f46c9d7797da8d72..17207065defff58c335474689ad82ee9312607f4 100644
--- a/briar-android/src/net/sf/briar/android/messages/ConversationAdapter.java
+++ b/briar-android/src/net/sf/briar/android/messages/ConversationAdapter.java
@@ -5,14 +5,14 @@ import static android.view.Gravity.CENTER_VERTICAL;
 import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
 import static net.sf.briar.api.messaging.Rating.BAD;
 import static net.sf.briar.api.messaging.Rating.GOOD;
 
 import java.util.ArrayList;
 
 import net.sf.briar.R;
-import net.sf.briar.android.widgets.HorizontalSpace;
+import net.sf.briar.android.util.HorizontalSpace;
 import net.sf.briar.api.db.PrivateMessageHeader;
 import net.sf.briar.api.messaging.Rating;
 import android.content.Context;
diff --git a/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java b/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java
index 2ffb72ba6d7a23e630627b161b5ad0652a0076d3..d42e30ac46d7b7f2530d9c4f155923315110ce16 100644
--- a/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java
+++ b/briar-android/src/net/sf/briar/android/messages/ConversationListActivity.java
@@ -6,8 +6,8 @@ import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_MATCH;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_MATCH;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
 
 import java.util.Collection;
 import java.util.Comparator;
@@ -16,8 +16,8 @@ import java.util.logging.Logger;
 
 import net.sf.briar.R;
 import net.sf.briar.android.invitation.AddContactActivity;
-import net.sf.briar.android.widgets.HorizontalBorder;
-import net.sf.briar.android.widgets.ListLoadingProgressBar;
+import net.sf.briar.android.util.HorizontalBorder;
+import net.sf.briar.android.util.ListLoadingProgressBar;
 import net.sf.briar.api.Contact;
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.android.DatabaseUiExecutor;
diff --git a/briar-android/src/net/sf/briar/android/messages/ConversationListAdapter.java b/briar-android/src/net/sf/briar/android/messages/ConversationListAdapter.java
index 80431fa552385e05dcc3ff06b5212efed5747e81..a6ba168adf831fc334fd9a4b14888ee5eb058b22 100644
--- a/briar-android/src/net/sf/briar/android/messages/ConversationListAdapter.java
+++ b/briar-android/src/net/sf/briar/android/messages/ConversationListAdapter.java
@@ -5,7 +5,7 @@ import static android.view.Gravity.LEFT;
 import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
 
 import java.util.ArrayList;
 
diff --git a/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java b/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java
index 5a66b32039897d452719ebc70de3c3ece2dc8120..c86cbc7267dc2ac2b2e0ca92fcf6f9872abb7b17 100644
--- a/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java
+++ b/briar-android/src/net/sf/briar/android/messages/ReadPrivateMessageActivity.java
@@ -7,9 +7,9 @@ import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP_1;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP_1;
 import static net.sf.briar.api.messaging.Rating.BAD;
 import static net.sf.briar.api.messaging.Rating.GOOD;
 import static net.sf.briar.api.messaging.Rating.UNRATED;
@@ -19,8 +19,8 @@ import java.util.concurrent.Executor;
 import java.util.logging.Logger;
 
 import net.sf.briar.R;
-import net.sf.briar.android.widgets.HorizontalBorder;
-import net.sf.briar.android.widgets.HorizontalSpace;
+import net.sf.briar.android.util.HorizontalBorder;
+import net.sf.briar.android.util.HorizontalSpace;
 import net.sf.briar.api.ContactId;
 import net.sf.briar.api.android.DatabaseUiExecutor;
 import net.sf.briar.api.db.DatabaseComponent;
diff --git a/briar-android/src/net/sf/briar/android/messages/WritePrivateMessageActivity.java b/briar-android/src/net/sf/briar/android/messages/WritePrivateMessageActivity.java
index 78c46c01718c74d6712ae0ce6e4b75cd5a85da77..e67058b8356ad4bee569bb03b5d397b66cc582db 100644
--- a/briar-android/src/net/sf/briar/android/messages/WritePrivateMessageActivity.java
+++ b/briar-android/src/net/sf/briar/android/messages/WritePrivateMessageActivity.java
@@ -7,7 +7,7 @@ import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP;
 
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
@@ -21,7 +21,7 @@ import net.sf.briar.android.contact.ContactItem;
 import net.sf.briar.android.contact.ContactItemComparator;
 import net.sf.briar.android.contact.ContactSpinnerAdapter;
 import net.sf.briar.android.invitation.AddContactActivity;
-import net.sf.briar.android.widgets.HorizontalSpace;
+import net.sf.briar.android.util.HorizontalSpace;
 import net.sf.briar.api.AuthorId;
 import net.sf.briar.api.Contact;
 import net.sf.briar.api.ContactId;
diff --git a/briar-android/src/net/sf/briar/android/widgets/CommonLayoutParams.java b/briar-android/src/net/sf/briar/android/util/CommonLayoutParams.java
similarity index 95%
rename from briar-android/src/net/sf/briar/android/widgets/CommonLayoutParams.java
rename to briar-android/src/net/sf/briar/android/util/CommonLayoutParams.java
index 465b98fad85710a608e671cf05c1f3c13b84e49f..4026390835e361b71ea2940da9d003a68e189cee 100644
--- a/briar-android/src/net/sf/briar/android/widgets/CommonLayoutParams.java
+++ b/briar-android/src/net/sf/briar/android/util/CommonLayoutParams.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.widgets;
+package net.sf.briar.android.util;
 
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
 import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
diff --git a/briar-android/src/net/sf/briar/android/widgets/HorizontalBorder.java b/briar-android/src/net/sf/briar/android/util/HorizontalBorder.java
similarity index 93%
rename from briar-android/src/net/sf/briar/android/widgets/HorizontalBorder.java
rename to briar-android/src/net/sf/briar/android/util/HorizontalBorder.java
index 9b462f0fcd68f672899b0655b2b5af172e8164f6..b75f4741548d926c12ecee5c69e353a48f647cee 100644
--- a/briar-android/src/net/sf/briar/android/widgets/HorizontalBorder.java
+++ b/briar-android/src/net/sf/briar/android/util/HorizontalBorder.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.widgets;
+package net.sf.briar.android.util;
 
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
 import net.sf.briar.R;
diff --git a/briar-android/src/net/sf/briar/android/widgets/HorizontalSpace.java b/briar-android/src/net/sf/briar/android/util/HorizontalSpace.java
similarity index 89%
rename from briar-android/src/net/sf/briar/android/widgets/HorizontalSpace.java
rename to briar-android/src/net/sf/briar/android/util/HorizontalSpace.java
index 215003f6ca94db2c531b68127b43bcaae2ae7402..f173caf03b8fa77d323f9d419a6e1926ef3f326e 100644
--- a/briar-android/src/net/sf/briar/android/widgets/HorizontalSpace.java
+++ b/briar-android/src/net/sf/briar/android/util/HorizontalSpace.java
@@ -1,4 +1,4 @@
-package net.sf.briar.android.widgets;
+package net.sf.briar.android.util;
 
 import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
 import android.content.Context;
diff --git a/briar-android/src/net/sf/briar/android/widgets/ListLoadingProgressBar.java b/briar-android/src/net/sf/briar/android/util/ListLoadingProgressBar.java
similarity index 71%
rename from briar-android/src/net/sf/briar/android/widgets/ListLoadingProgressBar.java
rename to briar-android/src/net/sf/briar/android/util/ListLoadingProgressBar.java
index b66fb8025e6c7b29da608312c9b431798328d208..fbc0bf287322bab576c4dff6d06865ed21f6017d 100644
--- a/briar-android/src/net/sf/briar/android/widgets/ListLoadingProgressBar.java
+++ b/briar-android/src/net/sf/briar/android/util/ListLoadingProgressBar.java
@@ -1,8 +1,8 @@
-package net.sf.briar.android.widgets;
+package net.sf.briar.android.util;
 
 import static android.view.Gravity.CENTER;
-import static net.sf.briar.android.widgets.CommonLayoutParams.MATCH_WRAP_1;
-import static net.sf.briar.android.widgets.CommonLayoutParams.WRAP_WRAP;
+import static net.sf.briar.android.util.CommonLayoutParams.MATCH_WRAP_1;
+import static net.sf.briar.android.util.CommonLayoutParams.WRAP_WRAP;
 import android.content.Context;
 import android.widget.LinearLayout;
 import android.widget.ProgressBar;