diff --git a/app/src/main/java/io/v/todos/MainActivity.java b/app/src/main/java/io/v/todos/MainActivity.java
index 43c6324..520816c 100644
--- a/app/src/main/java/io/v/todos/MainActivity.java
+++ b/app/src/main/java/io/v/todos/MainActivity.java
@@ -42,7 +42,6 @@
     @Override
     protected void onCreate(final Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        getActionBar().setTitle(R.string.app_name);
         mEmptyView.setText(R.string.no_lists);
 
         // Set up the todo list adapter
@@ -54,6 +53,7 @@
                 Intent intent = new Intent(MainActivity.this, TodoListActivity.class);
                 intent.putExtra(INTENT_SNACKOO_KEY, fbKey);
                 startActivity(intent);
+                overridePendingTransition(R.anim.right_slide_in, R.anim.left_slide_out);
             }
         });
 
diff --git a/app/src/main/java/io/v/todos/TodoListActivity.java b/app/src/main/java/io/v/todos/TodoListActivity.java
index 7393fae..dbc0c76 100644
--- a/app/src/main/java/io/v/todos/TodoListActivity.java
+++ b/app/src/main/java/io/v/todos/TodoListActivity.java
@@ -42,6 +42,8 @@
 
     protected void onCreate(final Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        getActionBar().setDisplayHomeAsUpEnabled(true);
+
         mEmptyView.setText(R.string.no_tasks);
 
         Intent intent = getIntent();
@@ -220,8 +222,21 @@
             case R.id.action_debug:
                 sharePersistenceDebugDetails();
                 return true;
+            case android.R.id.home:
+                finishWithAnimation();
+                return true;
         }
 
         return super.onOptionsItemSelected(item);
     }
+
+    @Override
+    public void onBackPressed() {
+        finishWithAnimation();
+    }
+
+    private void finishWithAnimation() {
+        this.finish();
+        overridePendingTransition(R.anim.left_slide_in, R.anim.right_slide_out);
+    }
 }
diff --git a/app/src/main/res/anim/left_slide_in.xml b/app/src/main/res/anim/left_slide_in.xml
new file mode 100644
index 0000000..0fdb911
--- /dev/null
+++ b/app/src/main/res/anim/left_slide_in.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
+    <translate
+        android:fromXDelta="-100%p"
+        android:toXDelta="0"
+        android:duration="350"
+        />
+</set>
\ No newline at end of file
diff --git a/app/src/main/res/anim/left_slide_out.xml b/app/src/main/res/anim/left_slide_out.xml
new file mode 100644
index 0000000..c41e816
--- /dev/null
+++ b/app/src/main/res/anim/left_slide_out.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
+    <translate
+        android:fromXDelta="0"
+        android:toXDelta="-100%p"
+        android:duration="350"
+        />
+</set>
\ No newline at end of file
diff --git a/app/src/main/res/anim/right_slide_in.xml b/app/src/main/res/anim/right_slide_in.xml
new file mode 100644
index 0000000..90c667a
--- /dev/null
+++ b/app/src/main/res/anim/right_slide_in.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
+    <translate
+        android:fromXDelta="100%p"
+        android:toXDelta="0"
+        android:duration="350"
+        />
+</set>
\ No newline at end of file
diff --git a/app/src/main/res/anim/right_slide_out.xml b/app/src/main/res/anim/right_slide_out.xml
new file mode 100644
index 0000000..ead2aff
--- /dev/null
+++ b/app/src/main/res/anim/right_slide_out.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
+    <translate
+        android:fromXDelta="0"
+        android:toXDelta="100%p"
+        android:duration="350"
+        />
+</set>
\ No newline at end of file
