diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 8d8f6686a49d2b8ab802f0688ece582bb0079619..8a943cfe099d025c03643a051f15eaa3488d2e6a 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/app/build.gradle b/app/build.gradle
index d8973c9bba3fccac7e5d27e297004dc2f51997dc..87c3accf67628aad5f9194b351f1126065191cc5 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -83,4 +83,7 @@ dependencies {
     // Room
     implementation 'android.arch.persistence.room:runtime:1.0.0'
     annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'
+
+    // AndroidSwipeLayout
+    implementation 'com.daimajia.swipelayout:library:1.2.0@aar'
 }
diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/adapter/FavoriteListAdapter.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/adapter/FavoriteListAdapter.java
new file mode 100644
index 0000000000000000000000000000000000000000..8ba418703ccb23d0ecf94ca9022b741dfd0c43b9
--- /dev/null
+++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/adapter/FavoriteListAdapter.java
@@ -0,0 +1,96 @@
+package me.szaki.xkcd.xkcdbrowser.adapter;
+
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+
+import me.szaki.xkcd.xkcdbrowser.R;
+import me.szaki.xkcd.xkcdbrowser.model.ComicStrip;
+
+public class FavoriteListAdapter extends RecyclerView.Adapter<FavoriteListAdapter.ViewHolder> {
+    private List<ComicStrip> comicStrips;
+    private static ClickListener clickListener;
+
+    public FavoriteListAdapter() {
+        super();
+        this.comicStrips = new ArrayList<>();
+    }
+
+    static class ViewHolder extends RecyclerView.ViewHolder {
+        public TextView title;
+        public TextView date;
+
+
+        public ViewHolder(View itemView) {
+            super(itemView);
+
+            title = itemView.findViewById(R.id.title_text);
+            date = itemView.findViewById(R.id.date_text);
+
+            itemView.findViewById(R.id.delete_button).setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    if (FavoriteListAdapter.clickListener != null)
+                        FavoriteListAdapter.clickListener.onDeleteClick(getAdapterPosition(), view);
+                }
+            });
+
+
+            itemView.setOnLongClickListener(new View.OnLongClickListener() {
+                @Override
+                public boolean onLongClick(View view) {
+                    if (FavoriteListAdapter.clickListener != null)
+                        FavoriteListAdapter.clickListener.onClick(getAdapterPosition(), view);
+                    return false;
+                }
+            });
+        }
+    }
+
+    public interface ClickListener {
+        void onClick(int position, View v);
+
+        void onDeleteClick(int position, View v);
+    }
+
+    @Override
+    public FavoriteListAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+        View v = LayoutInflater.from(parent.getContext())
+                .inflate(R.layout.comic_strip, parent, false);
+
+        return new ViewHolder(v);
+    }
+
+    @Override
+    public void onBindViewHolder(FavoriteListAdapter.ViewHolder holder, int position) {
+        ComicStrip comicStrip = this.comicStrips.get(position);
+
+        holder.title.setText(comicStrip.getTitle());
+        holder.date.setText(String.format("%s.%s.%s.", comicStrip.getYear(), comicStrip.getMonth(), comicStrip.getDay()));
+    }
+
+    @Override
+    public int getItemCount() {
+        return this.comicStrips.size();
+    }
+
+    public void updateList(List<ComicStrip> cList) {
+        this.comicStrips = cList;
+        this.notifyDataSetChanged();
+    }
+
+    public void setListener(ClickListener clickListener) {
+        this.clickListener = clickListener;
+    }
+
+    public ComicStrip getComicStripByNum(int position) {
+        return this.comicStrips.get(position);
+    }
+}
diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesActivity.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesActivity.java
index 83bf35aa6e276b74a5700cb9a39e979720d76d7c..9c96cbd59e7eba6b42aac709106225236ff6f1bc 100644
--- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesActivity.java
+++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesActivity.java
@@ -1,8 +1,13 @@
 package me.szaki.xkcd.xkcdbrowser.ui.favorites;
 
+import android.content.Intent;
 import android.os.Bundle;
+import android.os.Handler;
 import android.support.design.widget.FloatingActionButton;
 import android.support.design.widget.Snackbar;
+import android.support.v7.widget.DividerItemDecoration;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
 import android.view.View;
 import android.support.design.widget.NavigationView;
 import android.support.v4.view.GravityCompat;
@@ -12,11 +17,31 @@ import android.support.v7.app.AppCompatActivity;
 import android.support.v7.widget.Toolbar;
 import android.view.Menu;
 import android.view.MenuItem;
+import android.widget.LinearLayout;
+import android.widget.Toast;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.inject.Inject;
 
 import me.szaki.xkcd.xkcdbrowser.R;
+import me.szaki.xkcd.xkcdbrowser.XKCDBrowserApplication;
+import me.szaki.xkcd.xkcdbrowser.adapter.FavoriteListAdapter;
+import me.szaki.xkcd.xkcdbrowser.model.ComicStrip;
+import me.szaki.xkcd.xkcdbrowser.ui.detail.DetailActivity;
+import me.szaki.xkcd.xkcdbrowser.ui.main.MainActivity;
 
 public class FavoritesActivity extends AppCompatActivity
-        implements NavigationView.OnNavigationItemSelectedListener {
+        implements NavigationView.OnNavigationItemSelectedListener, FavoritesScreen, FavoriteListAdapter.ClickListener {
+
+    @Inject
+    FavoritesPresenter favoritesPresenter;
+    private FavoriteListAdapter mAdapter;
+
+    public FavoritesActivity() {
+        XKCDBrowserApplication.injector.inject(this);
+    }
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -25,15 +50,6 @@ public class FavoritesActivity extends AppCompatActivity
         Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
         setSupportActionBar(toolbar);
 
-        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
-        fab.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
-                        .setAction("Action", null).show();
-            }
-        });
-
         DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
         ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                 this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
@@ -42,6 +58,24 @@ public class FavoritesActivity extends AppCompatActivity
 
         NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
         navigationView.setNavigationItemSelectedListener(this);
+
+
+        RecyclerView recyclerView = findViewById(R.id.strips);
+        // use this setting to improve performance if you know that changes
+        // in content do not change the layout size of the RecyclerView
+        recyclerView.setHasFixedSize(true);
+
+        // use a linear layout manager
+        LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);
+        recyclerView.setLayoutManager(mLayoutManager);
+        recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayout.VERTICAL));
+
+        // specify an adapter (see also next example)
+        mAdapter = new FavoriteListAdapter();
+        recyclerView.setAdapter(mAdapter);
+        mAdapter.setListener(this);
+
+
     }
 
     @Override
@@ -61,7 +95,9 @@ public class FavoritesActivity extends AppCompatActivity
         int id = item.getItemId();
 
         if (id == R.id.nav_main) {
-            // Handle the camera action
+            Intent i = new Intent(getApplicationContext(), MainActivity.class);
+            startActivity(i);
+            finish();
         } else if (id == R.id.nav_favorites) {
 
         }
@@ -70,4 +106,53 @@ public class FavoritesActivity extends AppCompatActivity
         drawer.closeDrawer(GravityCompat.START);
         return true;
     }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+
+        this.favoritesPresenter.attachScreen(this);
+        favoritesPresenter.getData();
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+
+        this.favoritesPresenter.detachScreen();
+    }
+
+    @Override
+    public void onClick(int position, View v) {
+        Intent i = new Intent(getApplicationContext(), DetailActivity.class);
+        startActivity(i);
+    }
+
+    @Override
+    public void onDeleteClick(int position, View v) {
+        favoritesPresenter.deleteData(mAdapter.getComicStripByNum(position));
+    }
+
+    @Override
+    public void dataReceived(final List<ComicStrip> strips) {
+        Handler mainHandler = new Handler(getApplicationContext().getMainLooper());
+
+        Runnable myRunnable = new Runnable() {
+            @Override
+            public void run() {
+                mAdapter.updateList(strips);
+            }
+        };
+        mainHandler.post(myRunnable);
+    }
+
+    @Override
+    public void deleteSucess() {
+        Snackbar.make(findViewById(android.R.id.content), "Deleted", Snackbar.LENGTH_SHORT)
+                .setAction("Action", null).show();
+
+        favoritesPresenter.getData();
+    }
+
+
 }
diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesPresenter.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesPresenter.java
index 33adfe57b14a069aaf6ddb326e5496df5b5603f1..8fbbd0ee9cf08303c41eab8924bc11914d314da4 100644
--- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesPresenter.java
+++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesPresenter.java
@@ -1,16 +1,17 @@
 package me.szaki.xkcd.xkcdbrowser.ui.favorites;
 
 
+import java.io.IOException;
+
 import javax.inject.Inject;
 
 import me.szaki.xkcd.xkcdbrowser.XKCDBrowserApplication;
 import me.szaki.xkcd.xkcdbrowser.interactor.comics.ComicsInteractor;
 import me.szaki.xkcd.xkcdbrowser.interactor.comics.DBInteractor;
+import me.szaki.xkcd.xkcdbrowser.model.ComicStrip;
 import me.szaki.xkcd.xkcdbrowser.ui.Presenter;
 
 public class FavoritesPresenter extends Presenter<FavoritesScreen> {
-    @Inject
-    ComicsInteractor comicsInteractor;
 
     @Inject
     DBInteractor db;
@@ -19,13 +20,23 @@ public class FavoritesPresenter extends Presenter<FavoritesScreen> {
         XKCDBrowserApplication.injector.inject(this);
     }
 
-    @Override
-    public void attachScreen(FavoritesScreen screen) {
-        super.attachScreen(screen);
+    public void getData () {
+        new Thread() {
+            @Override
+            public void run() {
+                screen.dataReceived(db.getComics());
+            }
+        }.start();
     }
 
-    @Override
-    public void detachScreen() {
-        super.detachScreen();
+    public void deleteData(final ComicStrip c) {
+        new Thread() {
+            @Override
+            public void run() {
+                db.deleteComic(c);
+                screen.deleteSucess();
+            }
+        }.start();
     }
+
 }
diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesScreen.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesScreen.java
index 691e7d763c80a741a754df0c94a572bfc915a4cb..6862dcbd73fc8e44090259fc93ffbfcaeeb2793b 100644
--- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesScreen.java
+++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/favorites/FavoritesScreen.java
@@ -1,5 +1,12 @@
 package me.szaki.xkcd.xkcdbrowser.ui.favorites;
 
 
+import java.util.List;
+
+import me.szaki.xkcd.xkcdbrowser.model.ComicStrip;
+
 public interface FavoritesScreen {
+    public void dataReceived(List<ComicStrip> strips);
+
+    public void deleteSucess();
 }
diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainActivity.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainActivity.java
index 98944f2249b5f9431e5ef761228db58426922d0c..5c3871290f4675c8f88ec0edf1a9d5598e9c68bc 100644
--- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainActivity.java
+++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainActivity.java
@@ -1,5 +1,6 @@
 package me.szaki.xkcd.xkcdbrowser.ui.main;
 
+import android.content.Intent;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.net.Uri;
@@ -30,6 +31,8 @@ import javax.inject.Inject;
 import me.szaki.xkcd.xkcdbrowser.R;
 import me.szaki.xkcd.xkcdbrowser.XKCDBrowserApplication;
 import me.szaki.xkcd.xkcdbrowser.network.model.Comic;
+import me.szaki.xkcd.xkcdbrowser.ui.favorites.FavoritesActivity;
+import me.szaki.xkcd.xkcdbrowser.ui.favorites.FavoritesPresenter;
 
 public class MainActivity extends AppCompatActivity
         implements NavigationView.OnNavigationItemSelectedListener, MainScreen {
@@ -114,7 +117,9 @@ public class MainActivity extends AppCompatActivity
         if (id == R.id.nav_main) {
             // Handle the camera action
         } else if (id == R.id.nav_favorites) {
-
+            Intent i = new Intent(getApplicationContext(), FavoritesActivity.class);
+            startActivity(i);
+            finish();
         }
 
         DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
diff --git a/app/src/main/res/drawable-hdpi/ic_delete.png b/app/src/main/res/drawable-hdpi/ic_delete.png
new file mode 100755
index 0000000000000000000000000000000000000000..decc2a54df03b3d60fa3b9722582b958bc26ed02
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_delete.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_delete.png b/app/src/main/res/drawable-mdpi/ic_delete.png
new file mode 100755
index 0000000000000000000000000000000000000000..d64b5ef82c5707418971f728f2c66ed50a159aff
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_delete.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_delete.png b/app/src/main/res/drawable-xhdpi/ic_delete.png
new file mode 100755
index 0000000000000000000000000000000000000000..8175fb04eef74713b8698dc42c82aefc96c5871d
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_delete.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_delete.png b/app/src/main/res/drawable-xxhdpi/ic_delete.png
new file mode 100755
index 0000000000000000000000000000000000000000..bac7eb9469a4c41e59ae23abe3e745e469848f8f
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_delete.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_delete.png b/app/src/main/res/drawable-xxxhdpi/ic_delete.png
new file mode 100755
index 0000000000000000000000000000000000000000..fad9e8d99311f9e5d3c388b035723a06ed0eb517
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_delete.png differ
diff --git a/app/src/main/res/layout/app_bar_favorites.xml b/app/src/main/res/layout/app_bar_favorites.xml
index fb118bec6ec2699132da838e645f969c642c816e..a587c0b3022ead7fb6482d023ccf9507dd8063a3 100644
--- a/app/src/main/res/layout/app_bar_favorites.xml
+++ b/app/src/main/res/layout/app_bar_favorites.xml
@@ -22,12 +22,5 @@
 
     <include layout="@layout/content_favorites" />
 
-    <android.support.design.widget.FloatingActionButton
-        android:id="@+id/fab"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="bottom|end"
-        android:layout_margin="@dimen/fab_margin"
-        app:srcCompat="@android:drawable/ic_dialog_email" />
 
 </android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/comic_strip.xml b/app/src/main/res/layout/comic_strip.xml
new file mode 100644
index 0000000000000000000000000000000000000000..bbea280e75ff6681fb17f7ef36d3a1380525a643
--- /dev/null
+++ b/app/src/main/res/layout/comic_strip.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<com.daimajia.swipe.SwipeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:swipe="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    swipe:drag_edge="right"
+    swipe:show_mode="pull_out">
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent">
+        <FrameLayout
+            android:layout_width="40dp"
+            android:layout_height="match_parent" >
+
+            <Button
+                android:id="@+id/delete_button"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:layout_gravity="center"
+                android:background="@null"
+                android:drawableStart="@drawable/ic_delete"
+                android:gravity="center"
+                android:maxHeight="60dp"
+                android:maxWidth="60dp"
+                android:textColor="@android:color/white" />
+        </FrameLayout>
+    </LinearLayout>
+    <android.support.constraint.ConstraintLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        xmlns:tools="http://schemas.android.com/tools"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="10dp">
+
+        <TextView
+            android:id="@+id/title_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="0dp"
+            android:layout_marginTop="0dp"
+            android:text="TextView"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/date_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginEnd="0dp"
+            android:layout_marginTop="0dp"
+            android:text="TextView"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+    </android.support.constraint.ConstraintLayout>
+</com.daimajia.swipe.SwipeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/content_favorites.xml b/app/src/main/res/layout/content_favorites.xml
index ed576e624d202c6e5e2fb5d63fa24bc7cfd359c3..0171548629eca35882af1016e56dcfa260bfd6d1 100644
--- a/app/src/main/res/layout/content_favorites.xml
+++ b/app/src/main/res/layout/content_favorites.xml
@@ -8,4 +8,13 @@
     tools:context=".ui.favorites.FavoritesActivity"
     tools:showIn="@layout/app_bar_favorites">
 
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/strips"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_margin="8dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
 </android.support.constraint.ConstraintLayout>
\ No newline at end of file