diff --git a/projects/todos/app/src/main/java/io/v/todos/MainActivity.java b/projects/todos/app/src/main/java/io/v/todos/MainActivity.java
index a92793e..e2229b8 100644
--- a/projects/todos/app/src/main/java/io/v/todos/MainActivity.java
+++ b/projects/todos/app/src/main/java/io/v/todos/MainActivity.java
@@ -7,10 +7,6 @@
 import android.app.Activity;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
-import android.graphics.Paint;
 import android.os.Bundle;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.RecyclerView;
@@ -89,68 +85,7 @@
         recyclerView.setAdapter(adapter);
 
         // TODO(alexfandrianto): Very much copy-pasted between MainActivity and TodoListActivity.
-        new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(
-                ItemTouchHelper.UP | ItemTouchHelper.DOWN,
-                ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
-            private Paint paint = new Paint();
-            private Bitmap deleteIcon = BitmapFactory.decodeResource(
-                    getResources(), android.R.drawable.ic_input_delete);
-            private Bitmap doneIcon = BitmapFactory.decodeResource(
-                    getResources(), android.R.drawable.checkbox_on_background);
-
-            @Override
-            public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
-                // TODO(alexfandrianto): Refactor further. Is there another way to do this?
-                if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
-                    // Get RecyclerView item from the ViewHolder
-                    View itemView = viewHolder.itemView;
-
-                    if (dX > 0) {
-                        /* Set your color for positive displacement */
-                        paint.setColor(0xFF00FF00);
-
-                        // Draw Rect with varying right side, equal to displacement dX
-                        c.drawRect((float) itemView.getLeft(), (float) itemView.getTop(), dX,
-                                (float) itemView.getBottom(), paint);
-
-                        c.drawBitmap(doneIcon,
-                                (float) itemView.getLeft() + 32,
-                                (float) itemView.getTop() + ((float) itemView.getBottom() - (float) itemView.getTop() - doneIcon.getHeight())/2,
-                                paint);
-                    } else {
-                        /* Set your color for negative displacement */
-                        paint.setColor(0xFFFF0000);
-
-                        // Draw Rect with varying left side, equal to the item's right side plus negative displacement dX
-                        c.drawRect((float) itemView.getRight() + dX, (float) itemView.getTop(),
-                                (float) itemView.getRight(), (float) itemView.getBottom(), paint);
-
-
-                        //Set the image icon for Left swipe
-                        c.drawBitmap(deleteIcon,
-                                (float) itemView.getRight() - 32 - deleteIcon.getWidth(),
-                                (float) itemView.getTop() + ((float) itemView.getBottom() - (float) itemView.getTop() - deleteIcon.getHeight())/2,
-                                paint);
-                    }
-
-                    super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
-                }
-            }
-
-            @Override
-            public boolean onMove(final RecyclerView recyclerView,
-                                  final RecyclerView.ViewHolder viewHolder,
-                                  final RecyclerView.ViewHolder target) {
-
-
-                /*editListStructure(l -> l.add(target.getAdapterPosition(),
-                        l.remove(viewHolder.getAdapterPosition())));*/
-
-                // TODO(alexfandrianto): Actually, I really doubt that we want to do this. It's super complex..
-                Log.d(SNACKOOS, "Moving is hard.");
-                return false;
-            }
-
+        new ItemTouchHelper(new SwipeableTouchHelperCallback() {
             @Override
             public void onSwiped(final RecyclerView.ViewHolder viewHolder, final int direction) {
                 if (direction == ItemTouchHelper.RIGHT) {
diff --git a/projects/todos/app/src/main/java/io/v/todos/SwipeableCardViewHolder.java b/projects/todos/app/src/main/java/io/v/todos/SwipeableCardViewHolder.java
new file mode 100644
index 0000000..a600579
--- /dev/null
+++ b/projects/todos/app/src/main/java/io/v/todos/SwipeableCardViewHolder.java
@@ -0,0 +1,32 @@
+// Copyright 2016 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package io.v.todos;
+
+import android.support.v7.widget.CardView;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+public abstract class SwipeableCardViewHolder extends RecyclerView.ViewHolder {
+    private CardView cardView;
+    private View swipeLeftView;
+    private View swipeRightView;
+
+    public SwipeableCardViewHolder(View itemView) {
+        super(itemView);
+
+        cardView = (CardView)itemView.findViewById(R.id.card);
+        swipeLeftView = itemView.findViewById(R.id.swipe_left);
+        swipeRightView = itemView.findViewById(R.id.swipe_right);
+    }
+
+    public CardView getCardView() {
+        return cardView;
+    }
+
+    public void decideBackground(float dX) {
+        swipeLeftView.setVisibility(dX < 0 ? View.VISIBLE : View.GONE);
+        swipeRightView.setVisibility(dX > 0 ? View.VISIBLE : View.GONE);
+    }
+}
diff --git a/projects/todos/app/src/main/java/io/v/todos/SwipeableTouchHelperCallback.java b/projects/todos/app/src/main/java/io/v/todos/SwipeableTouchHelperCallback.java
new file mode 100644
index 0000000..58856c3
--- /dev/null
+++ b/projects/todos/app/src/main/java/io/v/todos/SwipeableTouchHelperCallback.java
@@ -0,0 +1,62 @@
+// Copyright 2016 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package io.v.todos;
+
+import android.graphics.Canvas;
+import android.support.v7.widget.RecyclerView;
+import android.support.v7.widget.helper.ItemTouchHelper;
+
+/**
+ * SwipeableTouchHelperCallback wraps the SimpleCallback for SwipeableCardViewHolders.
+ * Subclasses should only override the onSwiped method since onMove is disabled.
+ */
+public abstract class SwipeableTouchHelperCallback extends ItemTouchHelper.SimpleCallback {
+    SwipeableTouchHelperCallback() {
+        super(ItemTouchHelper.UP | ItemTouchHelper.DOWN,
+              ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT);
+    }
+
+    @Override
+    public boolean onMove(final RecyclerView recyclerView,
+                          final RecyclerView.ViewHolder viewHolder,
+                          final RecyclerView.ViewHolder target) {
+        return false;
+    }
+
+    @Override
+    public boolean isLongPressDragEnabled() {
+        return false;
+    }
+
+    @Override
+    public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
+        SwipeableCardViewHolder holder = (SwipeableCardViewHolder)viewHolder;
+        holder.decideBackground(0);
+        getDefaultUIUtil().clearView(holder.getCardView());
+    }
+
+    @Override
+    public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) {
+        if (viewHolder != null) {
+            getDefaultUIUtil().onSelected(((SwipeableCardViewHolder) viewHolder).getCardView());
+        }
+    }
+
+    public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
+                            float dX, float dY, int actionState, boolean isCurrentlyActive) {
+        SwipeableCardViewHolder holder = (SwipeableCardViewHolder)viewHolder;
+        holder.decideBackground(dX);
+        getDefaultUIUtil().onDraw(c, recyclerView, holder.getCardView(), dX, dY, actionState,
+                isCurrentlyActive);
+    }
+
+    public void onChildDrawOver(Canvas c, RecyclerView recyclerView,
+                                RecyclerView.ViewHolder viewHolder, float dX, float dY,
+                                int actionState, boolean isCurrentlyActive) {
+        SwipeableCardViewHolder holder = (SwipeableCardViewHolder)viewHolder;
+        getDefaultUIUtil().onDrawOver(c, recyclerView, holder.getCardView(), dX, dY, actionState,
+                isCurrentlyActive);
+    }
+}
diff --git a/projects/todos/app/src/main/java/io/v/todos/TaskViewHolder.java b/projects/todos/app/src/main/java/io/v/todos/TaskViewHolder.java
index 632441f..b4f4ace 100644
--- a/projects/todos/app/src/main/java/io/v/todos/TaskViewHolder.java
+++ b/projects/todos/app/src/main/java/io/v/todos/TaskViewHolder.java
@@ -4,8 +4,6 @@
 
 package io.v.todos;
 
-import android.support.v7.widget.CardView;
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
@@ -13,34 +11,29 @@
 /**
  * @author alexfandrianto
  */
-public class TaskViewHolder extends RecyclerView.ViewHolder{
-    private CardView myView;
+public class TaskViewHolder extends SwipeableCardViewHolder {
     private boolean showDone = true;
 
     public TaskViewHolder(View itemView) {
         super(itemView);
-
-        myView = (CardView)itemView;
     }
 
     public void bindTask(Task task, View.OnClickListener listener) {
-        // TODO(alexfandrianto): Now might be a good time to set data in myView.
-
-        final ImageView doneMark = (ImageView)myView.findViewById(R.id.task_done);
+        final ImageView doneMark = (ImageView) itemView.findViewById(R.id.task_done);
         doneMark.setVisibility(task.getDone() ? View.VISIBLE : View.GONE);
 
-        final TextView name=(TextView)myView.findViewById(R.id.task_text);
+        final TextView name=(TextView) itemView.findViewById(R.id.task_text);
         name.setText(task.getText());
 
-        final TextView created=(TextView)myView.findViewById(R.id.task_time);
+        final TextView created=(TextView) itemView.findViewById(R.id.task_time);
         created.setText(computeCreated(task));
 
-        myView.setCardBackgroundColor(task.getDone() ? 0xFFCCCCCC : 0xFFFFFFFF);
+        getCardView().setCardBackgroundColor(task.getDone() ? 0xFFCCCCCC : 0xFFFFFFFF);
 
-        myView.setTag(task.getKey());
-        myView.setOnClickListener(listener);
+        itemView.setTag(task.getKey());
+        itemView.setOnClickListener(listener);
 
-        myView.setVisibility(!showDone && task.getDone() ? View.GONE : View.VISIBLE);
+        itemView.setVisibility(!showDone && task.getDone() ? View.GONE : View.VISIBLE);
     }
 
     private String computeCreated(Task task) {
diff --git a/projects/todos/app/src/main/java/io/v/todos/TodoListActivity.java b/projects/todos/app/src/main/java/io/v/todos/TodoListActivity.java
index 2fc7086..d049da2 100644
--- a/projects/todos/app/src/main/java/io/v/todos/TodoListActivity.java
+++ b/projects/todos/app/src/main/java/io/v/todos/TodoListActivity.java
@@ -7,10 +7,6 @@
 import android.app.Activity;
 import android.content.DialogInterface;
 import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
-import android.graphics.Paint;
 import android.os.Bundle;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.RecyclerView;
@@ -89,69 +85,7 @@
         RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recycler);
         recyclerView.setAdapter(adapter);
 
-        new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(
-                ItemTouchHelper.UP | ItemTouchHelper.DOWN,
-                ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
-
-            private Paint paint = new Paint();
-            private Bitmap deleteIcon = BitmapFactory.decodeResource(
-                    getResources(), android.R.drawable.ic_input_delete);
-            private Bitmap doneIcon = BitmapFactory.decodeResource(
-                    getResources(), android.R.drawable.checkbox_on_background);
-
-            @Override
-            public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
-                // TODO(alexfandrianto): Refactor further. Is there another way to do this?
-                if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
-                    // Get RecyclerView item from the ViewHolder
-                    View itemView = viewHolder.itemView;
-
-                    if (dX > 0) {
-                        /* Set your color for positive displacement */
-                        paint.setColor(0xFF00FF00);
-
-                        // Draw Rect with varying right side, equal to displacement dX
-                        c.drawRect((float) itemView.getLeft(), (float) itemView.getTop(), dX,
-                                (float) itemView.getBottom(), paint);
-
-                        c.drawBitmap(doneIcon,
-                                (float) itemView.getLeft() + 32,
-                                (float) itemView.getTop() + ((float) itemView.getBottom() - (float) itemView.getTop() - doneIcon.getHeight())/2,
-                                paint);
-                    } else {
-                        /* Set your color for negative displacement */
-                        paint.setColor(0xFFFF0000);
-
-                        // Draw Rect with varying left side, equal to the item's right side plus negative displacement dX
-                        c.drawRect((float) itemView.getRight() + dX, (float) itemView.getTop(),
-                                (float) itemView.getRight(), (float) itemView.getBottom(), paint);
-
-
-                        //Set the image icon for Left swipe
-                        c.drawBitmap(deleteIcon,
-                                (float) itemView.getRight() - 32 - deleteIcon.getWidth(),
-                                (float) itemView.getTop() + ((float) itemView.getBottom() - (float) itemView.getTop() - deleteIcon.getHeight())/2,
-                                paint);
-                    }
-
-                    super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
-                }
-            }
-
-            @Override
-            public boolean onMove(final RecyclerView recyclerView,
-                                  final RecyclerView.ViewHolder viewHolder,
-                                  final RecyclerView.ViewHolder target) {
-
-
-                /*editListStructure(l -> l.add(target.getAdapterPosition(),
-                        l.remove(viewHolder.getAdapterPosition())));*/
-
-                // TODO(alexfandrianto): Actually, I really doubt that we want to do this. It's super complex..
-                Log.d(SNACKOO_LISTS, "Moving is hard.");
-                return false;
-            }
-
+        new ItemTouchHelper(new SwipeableTouchHelperCallback() {
             @Override
             public void onSwiped(final RecyclerView.ViewHolder viewHolder, final int direction) {
                 if (direction == ItemTouchHelper.RIGHT) {
diff --git a/projects/todos/app/src/main/java/io/v/todos/TodoListViewHolder.java b/projects/todos/app/src/main/java/io/v/todos/TodoListViewHolder.java
index f0d36c4..f99beb2 100644
--- a/projects/todos/app/src/main/java/io/v/todos/TodoListViewHolder.java
+++ b/projects/todos/app/src/main/java/io/v/todos/TodoListViewHolder.java
@@ -4,39 +4,31 @@
 
 package io.v.todos;
 
-import android.support.v7.widget.CardView;
-import android.support.v7.widget.RecyclerView;
 import android.view.View;
 import android.widget.TextView;
 
 /**
  * @author alexfandrianto
  */
-public class TodoListViewHolder extends RecyclerView.ViewHolder {
-    private CardView myView;
-
+public class TodoListViewHolder extends SwipeableCardViewHolder {
     public TodoListViewHolder(View itemView) {
         super(itemView);
-
-        myView = (CardView)itemView;
     }
 
     public void bindTodoList(TodoList todoList, View.OnClickListener listener) {
-        // TODO(alexfandrianto): Now might be a good time to set data in myView.
-
-        final TextView name=(TextView)myView.findViewById(R.id.todo_list_name);
+        final TextView name=(TextView) itemView.findViewById(R.id.todo_list_name);
         name.setText(todoList.getName());
 
-        final TextView completedStatus=(TextView)myView.findViewById(R.id.todo_list_completed);
+        final TextView completedStatus=(TextView) itemView.findViewById(R.id.todo_list_completed);
         completedStatus.setText(computeCompleted(todoList));
 
-        final TextView timeAgo=(TextView)myView.findViewById(R.id.todo_list_time);
+        final TextView timeAgo=(TextView) itemView.findViewById(R.id.todo_list_time);
         timeAgo.setText(computeTimeAgo(todoList));
 
-        myView.setCardBackgroundColor(todoList.getDone() ? 0xFFCCCCCC : 0xFFFFFFFF);
+        getCardView().setCardBackgroundColor(todoList.getDone() ? 0xFFCCCCCC : 0xFFFFFFFF);
 
-        myView.setTag(todoList.getKey());
-        myView.setOnClickListener(listener);
+        itemView.setTag(todoList.getKey());
+        itemView.setOnClickListener(listener);
     }
 
     private String computeTimeAgo(TodoList todoList) {
diff --git a/projects/todos/app/src/main/res/layout/task_row.xml b/projects/todos/app/src/main/res/layout/task_row.xml
index 8fedb85..8d95a3a 100644
--- a/projects/todos/app/src/main/res/layout/task_row.xml
+++ b/projects/todos/app/src/main/res/layout/task_row.xml
@@ -1,51 +1,81 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    xmlns:card_view="http://schemas.android.com/apk/res-auto"
-    android:layout_marginBottom="1dp"
-    card_view:cardElevation="1dp"
-    card_view:cardBackgroundColor="#DDDDFF"
-    card_view:cardCornerRadius="5dp">
-
-    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:orientation="horizontal"
+    android:layout_height="match_parent">
+    <LinearLayout
+        android:id="@+id/swipe_right"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <ImageView android:id="@+id/task_done"
+        android:layout_height="match_parent"
+        android:background="#00FF00"
+        android:visibility="gone">
+        <ImageView
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_weight = "0"
             android:src="@android:drawable/checkbox_on_background"
             android:layout_gravity="center_vertical"
-            android:layout_margin="@dimen/fab_margin"
-            android:visibility="gone"/>
+            android:layout_margin="@dimen/fab_margin"/>
+    </LinearLayout>
+    <LinearLayout
+        android:id="@+id/swipe_left"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="#FF0000"
+        android:gravity="right"
+        android:visibility="gone">
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@android:drawable/ic_input_delete"
+            android:layout_gravity="center_vertical"
+            android:layout_margin="@dimen/fab_margin"/>
+    </LinearLayout>
+    <android.support.v7.widget.CardView android:id="@+id/card"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        xmlns:card_view="http://schemas.android.com/apk/res-auto"
+        android:layout_marginBottom="1dp"
+        card_view:cardElevation="1dp"
+        card_view:cardBackgroundColor="#DDDDFF">
 
-        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-            android:orientation="vertical"
-            android:layout_width="fill_parent"
-            android:layout_weight = "1"
+        <LinearLayout
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content">
 
-            <TextView android:id="@+id/task_text"
-                android:layout_width="fill_parent"
+            <ImageView android:id="@+id/task_done"
+                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:layout_weight = "1"
-                android:gravity="center_vertical"
-                android:textStyle="bold"
-                android:textSize="22sp"
-                android:textColor="#000000"
-                android:layout_margin="5dp"  />
+                android:layout_weight = "0"
+                android:src="@android:drawable/checkbox_on_background"
+                android:layout_gravity="center_vertical"
+                android:layout_margin="@dimen/fab_margin"
+                android:visibility="gone"/>
 
-            <TextView android:id="@+id/task_time"
+            <LinearLayout
+                android:orientation="vertical"
                 android:layout_width="fill_parent"
-                android:layout_height="wrap_content"
                 android:layout_weight = "1"
-                android:gravity="center_vertical"
-                android:textSize="12sp"
-                android:textColor="#333333"
-                android:layout_margin="5dp" />
+                android:layout_height="wrap_content">
+
+                <TextView android:id="@+id/task_text"
+                    android:layout_width="fill_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_weight = "1"
+                    android:gravity="center_vertical"
+                    android:textStyle="bold"
+                    android:textSize="22sp"
+                    android:textColor="#000000"
+                    android:layout_margin="5dp"  />
+
+                <TextView android:id="@+id/task_time"
+                    android:layout_width="fill_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_weight = "1"
+                    android:gravity="center_vertical"
+                    android:textSize="12sp"
+                    android:textColor="#333333"
+                    android:layout_margin="5dp" />
+            </LinearLayout>
         </LinearLayout>
-    </LinearLayout>
-</android.support.v7.widget.CardView>
\ No newline at end of file
+    </android.support.v7.widget.CardView>
+</FrameLayout>
\ No newline at end of file
diff --git a/projects/todos/app/src/main/res/layout/todo_list_row.xml b/projects/todos/app/src/main/res/layout/todo_list_row.xml
index f69ddfb..9006102 100644
--- a/projects/todos/app/src/main/res/layout/todo_list_row.xml
+++ b/projects/todos/app/src/main/res/layout/todo_list_row.xml
@@ -1,51 +1,83 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    xmlns:card_view="http://schemas.android.com/apk/res-auto"
-    android:layout_marginBottom="1dp"
-    card_view:cardElevation="1dp"
-    card_view:cardBackgroundColor="#DDDDFF"
-    card_view:cardCornerRadius="5dp">
-
-    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:orientation="vertical"
+    android:layout_height="match_parent">
+    <LinearLayout
+        android:id="@+id/swipe_right"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <TextView android:id="@+id/todo_list_name"
-            android:layout_width="fill_parent"
-            android:layout_weight = "1"
+        android:layout_height="match_parent"
+        android:background="#00FF00"
+        android:visibility="gone">
+        <ImageView
+            android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:gravity="center_vertical"
-            android:textStyle="bold"
-            android:textSize="22sp"
-            android:textColor="#000000"
-            android:layout_margin="5dp" />
+            android:src="@android:drawable/checkbox_on_background"
+            android:layout_gravity="center_vertical"
+            android:layout_margin="@dimen/fab_margin"/>
+    </LinearLayout>
+    <LinearLayout
+        android:id="@+id/swipe_left"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="#FF0000"
+        android:gravity="right"
+        android:visibility="gone">
+        <ImageView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@android:drawable/ic_input_delete"
+            android:layout_gravity="center_vertical"
+            android:layout_margin="@dimen/fab_margin"/>
+    </LinearLayout>
+
+    <android.support.v7.widget.CardView android:id="@+id/card"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        xmlns:card_view="http://schemas.android.com/apk/res-auto"
+        android:layout_marginBottom="1dp"
+        card_view:cardElevation="1dp"
+        card_view:cardBackgroundColor="#DDDDFF"
+        card_view:cardCornerRadius="5dp">
 
         <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-            android:orientation="horizontal"
+            android:orientation="vertical"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_weight = "1">
+            android:layout_height="wrap_content">
 
-            <TextView android:id="@+id/todo_list_completed"
-                android:layout_width="wrap_content"
+            <TextView android:id="@+id/todo_list_name"
+                android:layout_width="fill_parent"
                 android:layout_weight = "1"
-                android:layout_height="fill_parent"
+                android:layout_height="wrap_content"
                 android:gravity="center_vertical"
-                android:textSize="12sp"
-                android:textColor="#333333"
+                android:textStyle="bold"
+                android:textSize="22sp"
+                android:textColor="#000000"
                 android:layout_margin="5dp" />
 
-            <TextView android:id="@+id/todo_list_time"
-                android:layout_width="wrap_content"
-                android:layout_weight = "1"
-                android:layout_height="fill_parent"
-                android:gravity="center_vertical"
-                android:textSize="12sp"
-                android:textColor="#333333"
-                android:layout_margin="5dp" />
+            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:orientation="horizontal"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_weight = "1">
+
+                <TextView android:id="@+id/todo_list_completed"
+                    android:layout_width="wrap_content"
+                    android:layout_weight = "1"
+                    android:layout_height="fill_parent"
+                    android:gravity="center_vertical"
+                    android:textSize="12sp"
+                    android:textColor="#333333"
+                    android:layout_margin="5dp" />
+
+                <TextView android:id="@+id/todo_list_time"
+                    android:layout_width="wrap_content"
+                    android:layout_weight = "1"
+                    android:layout_height="fill_parent"
+                    android:gravity="center_vertical"
+                    android:textSize="12sp"
+                    android:textColor="#333333"
+                    android:layout_margin="5dp" />
+            </LinearLayout>
         </LinearLayout>
-    </LinearLayout>
-</android.support.v7.widget.CardView>
\ No newline at end of file
+    </android.support.v7.widget.CardView>
+</FrameLayout>
\ No newline at end of file
