diff --git a/briar-android/res/layout/contact_avatar_status.xml b/briar-android/res/layout/contact_avatar_status.xml
index 2ceb5954726ca3654f09ba326b9ac8b1978fc0f9..5c3415c9119ca02556e97285d748f9d3293975ad 100644
--- a/briar-android/res/layout/contact_avatar_status.xml
+++ b/briar-android/res/layout/contact_avatar_status.xml
@@ -11,7 +11,6 @@
 		android:id="@+id/contactAvatar"
 		android:layout_width="30dp"
 		android:layout_height="30dp"
-		android:transitionName="avatar"
 		app:civ_border_color="@color/action_bar_text"
 		app:civ_border_width="@dimen/avatar_border_width"
 		tools:src="@drawable/ic_launcher"/>
@@ -22,7 +21,7 @@
 		android:layout_height="15dp"
 		android:layout_gravity="bottom|right"
 		android:scaleType="fitCenter"
-		tools:src="@drawable/contact_online"
-		tools:ignore="ContentDescription"/>
+		tools:ignore="ContentDescription"
+		tools:src="@drawable/contact_online"/>
 
 </FrameLayout>
\ No newline at end of file
diff --git a/briar-android/res/layout/list_item_contact.xml b/briar-android/res/layout/list_item_contact.xml
index 3a937d7848f834950a77b0a3aecca1f11c131df6..e50fc03a8d82564e61511be8d3b7707fa60e072d 100644
--- a/briar-android/res/layout/list_item_contact.xml
+++ b/briar-android/res/layout/list_item_contact.xml
@@ -10,9 +10,9 @@
 	<RelativeLayout
 		android:layout_width="match_parent"
 		android:layout_height="wrap_content"
-		android:paddingTop="@dimen/listitem_horizontal_margin"
-		android:paddingBottom="@dimen/listitem_horizontal_margin"
 		android:background="?attr/selectableItemBackground"
+		android:paddingBottom="@dimen/listitem_horizontal_margin"
+		android:paddingTop="@dimen/listitem_horizontal_margin"
 		>
 
 		<de.hdodenhof.circleimageview.CircleImageView
@@ -24,7 +24,6 @@
 			android:layout_centerVertical="true"
 			android:layout_marginLeft="@dimen/listitem_horizontal_margin"
 			android:layout_marginStart="@dimen/listitem_horizontal_margin"
-			android:transitionName="avatar"
 			app:civ_border_color="@color/briar_primary"
 			app:civ_border_width="@dimen/avatar_border_width"
 			tools:src="@drawable/ic_launcher"/>
@@ -33,13 +32,13 @@
 			android:id="@+id/textViews"
 			android:layout_width="wrap_content"
 			android:layout_height="wrap_content"
-			android:orientation="vertical"
 			android:layout_centerVertical="true"
 			android:layout_marginLeft="@dimen/listitem_horizontal_margin"
 			android:layout_marginStart="@dimen/listitem_horizontal_margin"
+			android:layout_toEndOf="@+id/avatarView"
 			android:layout_toLeftOf="@+id/bulbView"
 			android:layout_toRightOf="@+id/avatarView"
-			android:layout_toEndOf="@+id/avatarView">
+			android:orientation="vertical">
 
 			<TextView
 				android:id="@+id/nameView"
diff --git a/briar-android/src/org/briarproject/android/contact/BaseContactListAdapter.java b/briar-android/src/org/briarproject/android/contact/BaseContactListAdapter.java
index f4481726a253a1ebb4e3969a39da5bc1b71a729a..dc1628088dee0ae382ed089fa9b8c09b9671be11 100644
--- a/briar-android/src/org/briarproject/android/contact/BaseContactListAdapter.java
+++ b/briar-android/src/org/briarproject/android/contact/BaseContactListAdapter.java
@@ -1,6 +1,7 @@
 package org.briarproject.android.contact;
 
 import android.content.Context;
+import android.support.v4.view.ViewCompat;
 import android.support.v7.util.SortedList;
 import android.support.v7.widget.RecyclerView;
 import android.view.View;
@@ -11,6 +12,7 @@ import android.widget.TextView;
 import org.briarproject.R;
 import org.briarproject.api.contact.ContactId;
 import org.briarproject.api.identity.Author;
+import org.briarproject.util.StringUtils;
 
 import java.util.List;
 
@@ -48,6 +50,9 @@ public abstract class BaseContactListAdapter<VH extends BaseContactListAdapter.B
 				if (listener != null) listener.onItemClick(ui.avatar, item);
 			}
 		});
+
+		ViewCompat.setTransitionName(ui.avatar, "avatar" +
+				StringUtils.toHexString(item.getGroupId().getBytes()));
 	}
 
 	@Override
diff --git a/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java b/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java
index b47d5b7a0a13f7e22c0b85fa168dcb57e60cf93f..374d85d2189017429b6412a9c9b1fe338c38fca3 100644
--- a/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java
+++ b/briar-android/src/org/briarproject/android/contact/ContactListAdapter.java
@@ -2,6 +2,7 @@ package org.briarproject.android.contact;
 
 import android.content.Context;
 import android.support.v4.content.ContextCompat;
+import android.support.v4.view.ViewCompat;
 import android.text.format.DateUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -10,6 +11,7 @@ import android.widget.ImageView;
 import android.widget.TextView;
 
 import org.briarproject.R;
+import org.briarproject.util.StringUtils;
 
 public class ContactListAdapter
 		extends BaseContactListAdapter<ContactListAdapter.ContactHolder> {
@@ -62,6 +64,9 @@ public class ContactListAdapter
 		} else {
 			ui.bulb.setImageResource(R.drawable.contact_disconnected);
 		}
+
+		ViewCompat.setTransitionName(ui.bulb,
+				"bulb" + StringUtils.toHexString(item.getGroupId().getBytes()));
 	}
 
 	protected static class ContactHolder
diff --git a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java
index d01e6571dfb74052cea5ebb8e797bc10515ea8a3..d70f7d439cc2dd2facbcd91f45daeb8d71605c3d 100644
--- a/briar-android/src/org/briarproject/android/contact/ContactListFragment.java
+++ b/briar-android/src/org/briarproject/android/contact/ContactListFragment.java
@@ -1,11 +1,13 @@
 package org.briarproject.android.contact;
 
 import android.content.Intent;
-import android.os.Build;
 import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.design.widget.FloatingActionButton;
+import android.support.v4.app.ActivityCompat;
 import android.support.v4.app.ActivityOptionsCompat;
+import android.support.v4.util.Pair;
+import android.support.v4.view.ViewCompat;
 import android.support.v7.widget.LinearLayoutManager;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -48,6 +50,7 @@ import java.util.logging.Logger;
 
 import javax.inject.Inject;
 
+import static android.support.v4.app.ActivityOptionsCompat.makeSceneTransitionAnimation;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static org.briarproject.android.BriarActivity.GROUP_ID;
@@ -107,16 +110,22 @@ public class ContactListFragment extends BaseFragment implements EventListener {
 								ConversationActivity.class);
 						i.putExtra(GROUP_ID, groupId.getBytes());
 
-						if (Build.VERSION.SDK_INT >= 16) {
-							ActivityOptionsCompat options =
-									ActivityOptionsCompat.
-											makeSceneTransitionAnimation(
-													getActivity(),
-													view, "avatar");
-							getActivity().startActivity(i, options.toBundle());
-						} else {
-							startActivity(i);
-						}
+						ContactListAdapter.ContactHolder holder =
+								(ContactListAdapter.ContactHolder) list
+										.getRecyclerView()
+										.findViewHolderForAdapterPosition(
+												adapter.findItemPosition(item));
+						Pair<View, String> avatar =
+								Pair.create((View) holder.avatar, ViewCompat
+										.getTransitionName(holder.avatar));
+						Pair<View, String> bulb =
+								Pair.create((View) holder.bulb, ViewCompat
+										.getTransitionName(holder.bulb));
+						ActivityOptionsCompat options =
+								makeSceneTransitionAnimation(getActivity(),
+										avatar, bulb);
+						ActivityCompat.startActivity(getActivity(), i,
+								options.toBundle());
 					}
 				};
 
diff --git a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
index 676273700d43043aba098a8ecb0d8075281075c3..2c8e3b5df4eda5a4c2d4d453f7da53b8904ae3be 100644
--- a/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
+++ b/briar-android/src/org/briarproject/android/contact/ConversationActivity.java
@@ -6,6 +6,7 @@ import android.os.Bundle;
 import android.support.v4.app.ActivityCompat;
 import android.support.v4.app.ActivityOptionsCompat;
 import android.support.v4.content.ContextCompat;
+import android.support.v4.view.ViewCompat;
 import android.support.v7.app.ActionBar;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.LinearLayoutManager;
@@ -156,6 +157,10 @@ public class ConversationActivity extends BriarActivity
 			ab.setDisplayShowTitleEnabled(false);
 		}
 
+		String hexGroupId = StringUtils.toHexString(b);
+		ViewCompat.setTransitionName(toolbarAvatar, "avatar" + hexGroupId);
+		ViewCompat.setTransitionName(toolbarStatus, "bulb" + hexGroupId);
+
 		adapter = new ConversationAdapter(this, this);
 		list = (BriarRecyclerView) findViewById(R.id.conversationView);
 		list.setLayoutManager(new LinearLayoutManager(this));
@@ -207,7 +212,7 @@ public class ConversationActivity extends BriarActivity
 		// Handle presses on the action bar items
 		switch (item.getItemId()) {
 			case android.R.id.home:
-				supportFinishAfterTransition();
+				onBackPressed();
 				return true;
 			case R.id.action_introduction:
 				if (contactId == null) return false;
@@ -227,6 +232,13 @@ public class ConversationActivity extends BriarActivity
 		}
 	}
 
+	@Override
+	public void onBackPressed() {
+		// FIXME disabled exit transition, because it doesn't work for some reason
+		//supportFinishAfterTransition();
+		finish();
+	}
+
 	private void loadData() {
 		runOnDbThread(new Runnable() {
 			@Override
diff --git a/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java b/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java
index 2c61d475d0316e11bb8791ea5cb59b3c8d7e524d..dfc3c4c4f1d8f809abb2d835afb63868447a589e 100644
--- a/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java
+++ b/briar-android/src/org/briarproject/android/util/BriarRecyclerView.java
@@ -131,4 +131,9 @@ public class BriarRecyclerView extends FrameLayout {
 		if (recyclerView == null) initViews();
 		recyclerView.scrollToPosition(position);
 	}
+
+	public RecyclerView getRecyclerView() {
+		return this.recyclerView;
+	}
+
 }