diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index 21bb70b1e77c7ab28abeba1ad2a1199d6b6992b1..8f14f62236928bf8e2632f06b29a268fffd1e151 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 25a302d938d29dd052fdaa17e9f10ef6c2a87716..8c0c4cd1a7f095c0dbda101a487cf45821af03d1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -45,5 +45,9 @@ dependencies {
     annotationProcessor 'com.google.dagger:dagger-android-processor:2.11'
     implementation 'com.google.dagger:dagger-android:2.11'
     compileOnly 'javax.annotation:jsr250-api:1.0'
+
+    // Room
+    implementation 'android.arch.persistence.room:runtime:1.0.0'
+    annotationProcessor 'android.arch.persistence.room:compiler:1.0.0'
 }
 
diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/XKCDBrowserApplication.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/XKCDBrowserApplication.java
index dc11a728393dfb9e6272e6f4362fe9e510c65552..02232510e2d10fea1e2ed573f559876f5fcf1f3e 100644
--- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/XKCDBrowserApplication.java
+++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/XKCDBrowserApplication.java
@@ -2,6 +2,7 @@ package me.szaki.xkcd.xkcdbrowser;
 
 import android.app.Application;
 
+import me.szaki.xkcd.xkcdbrowser.database.DBModule;
 import me.szaki.xkcd.xkcdbrowser.ui.UIModule;
 
 public class XKCDBrowserApplication extends Application {
@@ -10,6 +11,6 @@ public class XKCDBrowserApplication extends Application {
     @Override
     public void onCreate() {
         super.onCreate();
-        injector = DaggerXKCDBrowserApplicationComponent.builder().uIModule(new UIModule(this)).build();
+        injector = DaggerXKCDBrowserApplicationComponent.builder().uIModule(new UIModule(this)).dBModule(new DBModule(this)).build();
     }
 }
diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/XKCDBrowserApplicationComponent.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/XKCDBrowserApplicationComponent.java
index baf10132a8f6c4734546f382637543a31353f623..a90d0783dd69df9370dcf918e12744b4bc742c1a 100644
--- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/XKCDBrowserApplicationComponent.java
+++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/XKCDBrowserApplicationComponent.java
@@ -4,6 +4,7 @@ package me.szaki.xkcd.xkcdbrowser;
 import javax.inject.Singleton;
 
 import dagger.Component;
+import me.szaki.xkcd.xkcdbrowser.database.DBModule;
 import me.szaki.xkcd.xkcdbrowser.interactor.InteractorModule;
 import me.szaki.xkcd.xkcdbrowser.interactor.comics.ComicsInteractor;
 import me.szaki.xkcd.xkcdbrowser.ui.UIModule;
@@ -12,7 +13,7 @@ import me.szaki.xkcd.xkcdbrowser.ui.favorites.FavoritesActivity;
 import me.szaki.xkcd.xkcdbrowser.ui.main.MainActivity;
 
 @Singleton
-@Component(modules = {UIModule.class, InteractorModule.class})
+@Component(modules = {UIModule.class, InteractorModule.class, DBModule.class})
 public interface XKCDBrowserApplicationComponent {
 
     void inject(MainActivity mainActivity);
diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/database/ComicsDAO.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/database/ComicsDAO.java
new file mode 100644
index 0000000000000000000000000000000000000000..dae5aa329d509c06f169a1e0f9b649b99afc0157
--- /dev/null
+++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/database/ComicsDAO.java
@@ -0,0 +1,29 @@
+package me.szaki.xkcd.xkcdbrowser.database;
+
+import android.arch.persistence.room.Dao;
+import android.arch.persistence.room.Delete;
+import android.arch.persistence.room.Insert;
+import android.arch.persistence.room.Query;
+import android.arch.persistence.room.Update;
+
+import java.util.List;
+
+import me.szaki.xkcd.xkcdbrowser.model.ComicStrip;
+
+@Dao
+public interface ComicsDAO {
+    @Query("SELECT * FROM ComicStrip")
+    public List<ComicStrip> getAllComics();
+
+    @Query("SELECT * FROM ComicStrip WHERE id = :id")
+    public ComicStrip getComic(Long id);
+
+    @Insert
+    public void insertAll(ComicStrip... comic);
+
+    @Update
+    public void update(ComicStrip comic);
+
+    @Delete
+    public void delete(ComicStrip comic);
+}
diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/database/ComicsDatabase.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/database/ComicsDatabase.java
new file mode 100644
index 0000000000000000000000000000000000000000..92a078f4aaa05d8d9bfe4901f1a1b36ff567564c
--- /dev/null
+++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/database/ComicsDatabase.java
@@ -0,0 +1,11 @@
+package me.szaki.xkcd.xkcdbrowser.database;
+
+import android.arch.persistence.room.Database;
+import android.arch.persistence.room.RoomDatabase;
+
+import me.szaki.xkcd.xkcdbrowser.model.ComicStrip;
+
+@Database(entities = {ComicStrip.class}, version = 1)
+public abstract class ComicsDatabase extends RoomDatabase {
+    public abstract ComicsDAO getDAO();
+}
\ No newline at end of file
diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/database/DBModule.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/database/DBModule.java
new file mode 100644
index 0000000000000000000000000000000000000000..9be5101955f36cfc0fead4524390ceb54e8074cf
--- /dev/null
+++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/database/DBModule.java
@@ -0,0 +1,24 @@
+package me.szaki.xkcd.xkcdbrowser.database;
+
+import android.arch.persistence.room.Room;
+import android.content.Context;
+
+import javax.inject.Singleton;
+
+import dagger.Module;
+import dagger.Provides;
+
+@Module
+public class DBModule {
+    private  Context context;
+
+    public DBModule(Context context) {
+        this.context = context;
+    }
+
+    @Provides
+    @Singleton
+    public ComicsDatabase provideComicsDatabase() {
+        return Room.databaseBuilder(this.context, ComicsDatabase.class, "ComicStrip").build();
+    }
+}
diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/model/ComicStrip.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/model/ComicStrip.java
new file mode 100644
index 0000000000000000000000000000000000000000..bc4b3dc0ca192b9b8dcff4a69089366af400f978
--- /dev/null
+++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/model/ComicStrip.java
@@ -0,0 +1,117 @@
+package me.szaki.xkcd.xkcdbrowser.model;
+
+import android.arch.persistence.room.Entity;
+import android.arch.persistence.room.PrimaryKey;
+
+@Entity
+public class ComicStrip {
+    @PrimaryKey(autoGenerate = true)
+    int id;
+    String month;
+    Long num;
+    String link;
+    String year;
+    String news;
+    String safe_title;
+    String transcript;
+    String alt;
+    String img;
+    String title;
+    String day;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getMonth() {
+        return month;
+    }
+
+    public void setMonth(String month) {
+        this.month = month;
+    }
+
+    public Long getNum() {
+        return num;
+    }
+
+    public void setNum(Long num) {
+        this.num = num;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    public String getYear() {
+        return year;
+    }
+
+    public void setYear(String year) {
+        this.year = year;
+    }
+
+    public String getNews() {
+        return news;
+    }
+
+    public void setNews(String news) {
+        this.news = news;
+    }
+
+    public String getSafe_title() {
+        return safe_title;
+    }
+
+    public void setSafe_title(String safe_title) {
+        this.safe_title = safe_title;
+    }
+
+    public String getTranscript() {
+        return transcript;
+    }
+
+    public void setTranscript(String transcript) {
+        this.transcript = transcript;
+    }
+
+    public String getAlt() {
+        return alt;
+    }
+
+    public void setAlt(String alt) {
+        this.alt = alt;
+    }
+
+    public String getImg() {
+        return img;
+    }
+
+    public void setImg(String img) {
+        this.img = img;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getDay() {
+        return day;
+    }
+
+    public void setDay(String day) {
+        this.day = day;
+    }
+}
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 87d4db82d3a4d0a2d2c866d9cf1a83f6636b3779..3aeda6ae2d58aff3d034d945a1646e73840b6351 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
@@ -3,6 +3,7 @@ package me.szaki.xkcd.xkcdbrowser.ui.favorites;
 
 import javax.inject.Inject;
 
+import me.szaki.xkcd.xkcdbrowser.database.ComicsDatabase;
 import me.szaki.xkcd.xkcdbrowser.interactor.comics.ComicsInteractor;
 import me.szaki.xkcd.xkcdbrowser.ui.Presenter;
 
@@ -10,6 +11,9 @@ public class FavoritesPresenter extends Presenter<FavoritesScreen> {
     @Inject
     ComicsInteractor comicsInteractor;
 
+    @Inject
+    ComicsDatabase db;
+
     @Override
     public void attachScreen(FavoritesScreen screen) {
         super.attachScreen(screen);
diff --git a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainPresenter.java b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainPresenter.java
index 1dcf930fc6d42073aa1250efd01a66f314f5c6eb..b18988394bd36d314ec890f7a6acb6945db08cde 100644
--- a/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainPresenter.java
+++ b/app/src/main/java/me/szaki/xkcd/xkcdbrowser/ui/main/MainPresenter.java
@@ -3,6 +3,7 @@ package me.szaki.xkcd.xkcdbrowser.ui.main;
 
 import javax.inject.Inject;
 
+import me.szaki.xkcd.xkcdbrowser.database.ComicsDatabase;
 import me.szaki.xkcd.xkcdbrowser.interactor.comics.ComicsInteractor;
 import me.szaki.xkcd.xkcdbrowser.ui.Presenter;
 
@@ -10,6 +11,9 @@ public class MainPresenter extends Presenter<MainScreen> {
     @Inject
     ComicsInteractor comicsInteractor;
 
+    @Inject
+    ComicsDatabase db;
+
     @Override
     public void attachScreen(MainScreen screen) {
         super.attachScreen(screen);