diff --git a/briar-android/res/drawable-hdpi/rating_unrated.png b/briar-android/res/drawable-hdpi/rating_unrated.png
new file mode 100644
index 0000000000000000000000000000000000000000..6b289165b9ee64f59cfc93f336fb61c648ffc171
Binary files /dev/null and b/briar-android/res/drawable-hdpi/rating_unrated.png differ
diff --git a/briar-android/res/drawable-mdpi/rating_unrated.png b/briar-android/res/drawable-mdpi/rating_unrated.png
new file mode 100644
index 0000000000000000000000000000000000000000..19521e83c158602004663dc8030d8b31788d5ee0
Binary files /dev/null and b/briar-android/res/drawable-mdpi/rating_unrated.png differ
diff --git a/briar-android/res/drawable-xhdpi/rating_unrated.png b/briar-android/res/drawable-xhdpi/rating_unrated.png
new file mode 100644
index 0000000000000000000000000000000000000000..992827ce7f8095cc7fca8c638126832a043f74c3
Binary files /dev/null and b/briar-android/res/drawable-xhdpi/rating_unrated.png differ
diff --git a/briar-android/res/values/color.xml b/briar-android/res/values/color.xml
index 7dfd4ee1f567365d2584b9c5478ad275d3912233..d9fb00b4c6b69686240b485522c1e72aaf55e8e0 100644
--- a/briar-android/res/values/color.xml
+++ b/briar-android/res/values/color.xml
@@ -4,7 +4,7 @@
     <color name="content_background">#FFFFFF</color>
     <color name="unread_background">#FFFFFF</color>
 	<color name="horizontal_border">#CCCCCC</color>
-	<color name="anonymous_author">#999999</color>
-	<color name="no_posts">#999999</color>
-	<color name="no_messages">#999999</color>
+	<color name="anonymous_author">#AAAAAA</color>
+	<color name="no_posts">#AAAAAA</color>
+	<color name="no_messages">#AAAAAA</color>
 </resources>
\ No newline at end of file
diff --git a/briar-android/res/values/strings.xml b/briar-android/res/values/strings.xml
index 4ad9695b87b164d4f499eed0d2137d0d52db24af..09fe11793709aa09d9d369b6192a1375568e10fc 100644
--- a/briar-android/res/values/strings.xml
+++ b/briar-android/res/values/strings.xml
@@ -46,7 +46,7 @@
 	<string name="compose_message_title">New Message</string>
 	<string name="from">From:</string>
 	<string name="to">To:</string>
-	<string name="anonymous">(Anonymous)</string>
+	<string name="anonymous">Anonymous</string>
 	<string name="new_contact_item">New contact\u2026</string>
 	<string name="groups_title">Groups</string>
 	<string name="no_posts">(No posts)</string>
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 969b520e3687b2fba546a6563878e807ed27c4ec..0a9529a624c9c02dbe98e109cc0c900a7ce04651 100644
--- a/briar-android/src/net/sf/briar/android/blogs/BlogAdapter.java
+++ b/briar-android/src/net/sf/briar/android/blogs/BlogAdapter.java
@@ -2,13 +2,12 @@ package net.sf.briar.android.blogs;
 
 import static android.graphics.Typeface.BOLD;
 import static android.view.Gravity.CENTER_VERTICAL;
-import static android.view.View.INVISIBLE;
 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.api.messaging.Rating.BAD;
 import static net.sf.briar.api.messaging.Rating.GOOD;
-import static net.sf.briar.api.messaging.Rating.UNRATED;
 
 import java.util.ArrayList;
 
@@ -38,14 +37,12 @@ class BlogAdapter extends ArrayAdapter<GroupMessageHeader> {
 	public View getView(int position, View convertView, ViewGroup parent) {
 		GroupMessageHeader item = getItem(position);
 		Context ctx = getContext();
+		Resources res = ctx.getResources();
 
-		// FIXME: Use a RelativeLayout
 		LinearLayout layout = new LinearLayout(ctx);
 		layout.setOrientation(HORIZONTAL);
-		if(!item.isRead()) {
-			Resources res = ctx.getResources();
+		if(!item.isRead())
 			layout.setBackgroundColor(res.getColor(R.color.unread_background));
-		}
 
 		LinearLayout innerLayout = new LinearLayout(ctx);
 		// Give me all the unused width
@@ -60,8 +57,8 @@ class BlogAdapter extends ArrayAdapter<GroupMessageHeader> {
 		thumb.setPadding(10, 10, 10, 10);
 		Rating rating = item.getRating();
 		if(rating == GOOD) thumb.setImageResource(R.drawable.rating_good);
-		else thumb.setImageResource(R.drawable.rating_bad);
-		if(rating == UNRATED) thumb.setVisibility(INVISIBLE);
+		else if(rating == BAD) thumb.setImageResource(R.drawable.rating_bad);
+		else thumb.setImageResource(R.drawable.rating_unrated);
 		authorLayout.addView(thumb);
 
 		TextView name = new TextView(ctx);
@@ -71,7 +68,6 @@ class BlogAdapter extends ArrayAdapter<GroupMessageHeader> {
 		name.setMaxLines(1);
 		name.setPadding(0, 10, 10, 10);
 		Author author = item.getAuthor();
-		Resources res = ctx.getResources();
 		if(author == null) {
 			name.setTextColor(res.getColor(R.color.anonymous_author));
 			name.setText(R.string.anonymous);
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 134c4f2fab45131d69a08bd361acc299b48c819e..5f35cc3e9157f5638b5858104c521e4806c1d475 100644
--- a/briar-android/src/net/sf/briar/android/blogs/BlogListActivity.java
+++ b/briar-android/src/net/sf/briar/android/blogs/BlogListActivity.java
@@ -215,7 +215,7 @@ implements OnClickListener, DatabaseListener, NoBlogsDialog.Listener {
 			if(countPostableGroups() == 0) {
 				NoBlogsDialog dialog = new NoBlogsDialog();
 				dialog.setListener(this);
-				dialog.show(getSupportFragmentManager(), "NoGroupsDialog");
+				dialog.show(getSupportFragmentManager(), "NoBlogsDialog");
 			} else {
 				startActivity(new Intent(this, WriteBlogPostActivity.class));
 			}
@@ -283,6 +283,7 @@ implements OnClickListener, DatabaseListener, NoBlogsDialog.Listener {
 				BlogListItem item = findGroup(g);
 				if(item != null) {
 					adapter.remove(item);
+					adapter.notifyDataSetChanged();
 					selectFirstUnread();
 				}
 			}
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 33b672e1b42b4848fa2df11d808243ea1b23aba1..a09c74f8d07f5af389a3292e7f97b3ed485a403a 100644
--- a/briar-android/src/net/sf/briar/android/blogs/ReadBlogPostActivity.java
+++ b/briar-android/src/net/sf/briar/android/blogs/ReadBlogPostActivity.java
@@ -2,8 +2,6 @@ package net.sf.briar.android.blogs;
 
 import static android.view.Gravity.CENTER;
 import static android.view.Gravity.CENTER_VERTICAL;
-import static android.view.View.INVISIBLE;
-import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
@@ -136,8 +134,8 @@ implements OnClickListener {
 		thumb = new ImageView(this);
 		thumb.setPadding(0, 10, 10, 10);
 		if(rating == GOOD) thumb.setImageResource(R.drawable.rating_good);
-		else thumb.setImageResource(R.drawable.rating_bad);
-		if(rating == UNRATED) thumb.setVisibility(INVISIBLE);
+		else if(rating == BAD) thumb.setImageResource(R.drawable.rating_bad);
+		else thumb.setImageResource(R.drawable.rating_unrated);
 		header.addView(thumb);
 
 		TextView author = new TextView(this);
@@ -367,15 +365,9 @@ implements OnClickListener {
 		runOnUiThread(new Runnable() {
 			public void run() {
 				rating = r;
-				if(r == GOOD) {
-					thumb.setImageResource(R.drawable.rating_good);
-					thumb.setVisibility(VISIBLE);
-				} else if(r == BAD) {
-					thumb.setImageResource(R.drawable.rating_bad);
-					thumb.setVisibility(VISIBLE);
-				} else {
-					thumb.setVisibility(INVISIBLE);
-				}
+				if(r == GOOD) thumb.setImageResource(R.drawable.rating_good);
+				else if(r == BAD) thumb.setImageResource(R.drawable.rating_bad);
+				else thumb.setImageResource(R.drawable.rating_unrated);
 			}
 		});
 	}
diff --git a/briar-android/src/net/sf/briar/android/contact/ContactNameComparator.java b/briar-android/src/net/sf/briar/android/contact/ContactItemComparator.java
similarity index 73%
rename from briar-android/src/net/sf/briar/android/contact/ContactNameComparator.java
rename to briar-android/src/net/sf/briar/android/contact/ContactItemComparator.java
index bb8bb09a62b2b6fd602c51564c07bfa88783862d..b4617d10848e7aec736fce54df08a33db7352bcc 100644
--- a/briar-android/src/net/sf/briar/android/contact/ContactNameComparator.java
+++ b/briar-android/src/net/sf/briar/android/contact/ContactItemComparator.java
@@ -2,10 +2,10 @@ package net.sf.briar.android.contact;
 
 import java.util.Comparator;
 
-public class ContactNameComparator implements Comparator<ContactItem> {
+public class ContactItemComparator implements Comparator<ContactItem> {
 
-	public static final ContactNameComparator INSTANCE =
-			new ContactNameComparator();
+	public static final ContactItemComparator INSTANCE =
+			new ContactItemComparator();
 
 	public int compare(ContactItem a, ContactItem b) {
 		if(a == b) return 0;
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 121fd503962fcda21cd7a1c638870761b635b005..8e13a48d67a51e62a1671707699f874cfbd9baea 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupAdapter.java
+++ b/briar-android/src/net/sf/briar/android/groups/GroupAdapter.java
@@ -2,13 +2,12 @@ package net.sf.briar.android.groups;
 
 import static android.graphics.Typeface.BOLD;
 import static android.view.Gravity.CENTER_VERTICAL;
-import static android.view.View.INVISIBLE;
 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.api.messaging.Rating.BAD;
 import static net.sf.briar.api.messaging.Rating.GOOD;
-import static net.sf.briar.api.messaging.Rating.UNRATED;
 
 import java.util.ArrayList;
 
@@ -38,14 +37,12 @@ class GroupAdapter extends ArrayAdapter<GroupMessageHeader> {
 	public View getView(int position, View convertView, ViewGroup parent) {
 		GroupMessageHeader item = getItem(position);
 		Context ctx = getContext();
+		Resources res = ctx.getResources();
 
-		// FIXME: Use a RelativeLayout
 		LinearLayout layout = new LinearLayout(ctx);
 		layout.setOrientation(HORIZONTAL);
-		if(!item.isRead()) {
-			Resources res = ctx.getResources();
+		if(!item.isRead())
 			layout.setBackgroundColor(res.getColor(R.color.unread_background));
-		}
 
 		LinearLayout innerLayout = new LinearLayout(ctx);
 		// Give me all the unused width
@@ -60,8 +57,8 @@ class GroupAdapter extends ArrayAdapter<GroupMessageHeader> {
 		thumb.setPadding(10, 10, 10, 10);
 		Rating rating = item.getRating();
 		if(rating == GOOD) thumb.setImageResource(R.drawable.rating_good);
-		else thumb.setImageResource(R.drawable.rating_bad);
-		if(rating == UNRATED) thumb.setVisibility(INVISIBLE);
+		else if(rating == BAD) thumb.setImageResource(R.drawable.rating_bad);
+		else thumb.setImageResource(R.drawable.rating_unrated);
 		authorLayout.addView(thumb);
 
 		TextView name = new TextView(ctx);
@@ -71,7 +68,6 @@ class GroupAdapter extends ArrayAdapter<GroupMessageHeader> {
 		name.setMaxLines(1);
 		name.setPadding(0, 10, 10, 10);
 		Author author = item.getAuthor();
-		Resources res = ctx.getResources();
 		if(author == null) {
 			name.setTextColor(res.getColor(R.color.anonymous_author));
 			name.setText(R.string.anonymous);
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 570198436c65b8a48a4e2079cfc64cefe0a0d660..83f3c3edd56c81e9203a18a922fea25daaaa77ec 100644
--- a/briar-android/src/net/sf/briar/android/groups/GroupListActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/GroupListActivity.java
@@ -270,6 +270,7 @@ implements OnClickListener, DatabaseListener, NoGroupsDialog.Listener {
 				GroupListItem item = findGroup(g);
 				if(item != null) {
 					adapter.remove(item);
+					adapter.notifyDataSetChanged();
 					selectFirstUnread();
 				}
 			}
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 e815281d0d3a2ff25ac5dce45864f065a51e3577..1e40082e9bb6d4f0bb1214ff48752af96dd0608e 100644
--- a/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java
+++ b/briar-android/src/net/sf/briar/android/groups/ReadGroupPostActivity.java
@@ -2,8 +2,6 @@ package net.sf.briar.android.groups;
 
 import static android.view.Gravity.CENTER;
 import static android.view.Gravity.CENTER_VERTICAL;
-import static android.view.View.INVISIBLE;
-import static android.view.View.VISIBLE;
 import static android.widget.LinearLayout.HORIZONTAL;
 import static android.widget.LinearLayout.VERTICAL;
 import static java.text.DateFormat.SHORT;
@@ -134,8 +132,8 @@ implements OnClickListener {
 		thumb = new ImageView(this);
 		thumb.setPadding(0, 10, 10, 10);
 		if(rating == GOOD) thumb.setImageResource(R.drawable.rating_good);
-		else thumb.setImageResource(R.drawable.rating_bad);
-		if(rating == UNRATED) thumb.setVisibility(INVISIBLE);
+		else if(rating == BAD) thumb.setImageResource(R.drawable.rating_bad);
+		else thumb.setImageResource(R.drawable.rating_unrated);
 		header.addView(thumb);
 
 		TextView author = new TextView(this);
@@ -360,15 +358,9 @@ implements OnClickListener {
 		runOnUiThread(new Runnable() {
 			public void run() {
 				rating = r;
-				if(r == GOOD) {
-					thumb.setImageResource(R.drawable.rating_good);
-					thumb.setVisibility(VISIBLE);
-				} else if(r == BAD) {
-					thumb.setImageResource(R.drawable.rating_bad);
-					thumb.setVisibility(VISIBLE);
-				} else {
-					thumb.setVisibility(INVISIBLE);
-				}
+				if(r == GOOD) thumb.setImageResource(R.drawable.rating_good);
+				else if(r == BAD) thumb.setImageResource(R.drawable.rating_bad);
+				else thumb.setImageResource(R.drawable.rating_unrated);
 			}
 		});
 	}
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 09a5a263dc5b8882fba0b257a1d846141c92e742..728a28e5f431de89aa11391b5eebb7113f6e49ba 100644
--- a/briar-android/src/net/sf/briar/android/messages/WritePrivateMessageActivity.java
+++ b/briar-android/src/net/sf/briar/android/messages/WritePrivateMessageActivity.java
@@ -21,7 +21,7 @@ import net.sf.briar.android.BriarActivity;
 import net.sf.briar.android.BriarService;
 import net.sf.briar.android.BriarService.BriarServiceConnection;
 import net.sf.briar.android.contact.ContactItem;
-import net.sf.briar.android.contact.ContactNameComparator;
+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;
@@ -180,7 +180,7 @@ implements OnItemSelectedListener, OnClickListener {
 				if(contacts.isEmpty()) finish();
 				adapter.clear();
 				for(Contact c : contacts) adapter.add(new ContactItem(c));
-				adapter.sort(ContactNameComparator.INSTANCE);
+				adapter.sort(ContactItemComparator.INSTANCE);
 				adapter.notifyDataSetChanged();
 				int count = adapter.getCount();
 				for(int i = 0; i < count; i++) {