diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/HistoryTypeMapping.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/HistoryTypeMapping.kt
index 6d34d3eff..fdd96f69a 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/HistoryTypeMapping.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/mappers/HistoryTypeMapping.kt
@@ -10,6 +10,7 @@ import com.pushtorefresh.storio.sqlite.queries.DeleteQuery
 import com.pushtorefresh.storio.sqlite.queries.InsertQuery
 import com.pushtorefresh.storio.sqlite.queries.UpdateQuery
 import eu.kanade.tachiyomi.data.database.models.History
+import eu.kanade.tachiyomi.data.database.models.HistoryImpl
 import eu.kanade.tachiyomi.data.database.tables.HistoryTable.COL_CHAPTER_ID
 import eu.kanade.tachiyomi.data.database.tables.HistoryTable.COL_ID
 import eu.kanade.tachiyomi.data.database.tables.HistoryTable.COL_LAST_READ
@@ -44,7 +45,7 @@ open class HistoryPutResolver : DefaultPutResolver<History>() {
 
 class HistoryGetResolver : DefaultGetResolver<History>() {
 
-    override fun mapFromCursor(cursor: Cursor): History = History().apply {
+    override fun mapFromCursor(cursor: Cursor): History = HistoryImpl().apply {
         id = cursor.getLong(cursor.getColumnIndex(COL_ID))
         chapter_id = cursor.getLong(cursor.getColumnIndex(COL_CHAPTER_ID))
         last_read = cursor.getLong(cursor.getColumnIndex(COL_LAST_READ))
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/History.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/History.kt
index 5d5c89c35..30f50972c 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/History.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/History.kt
@@ -5,27 +5,27 @@ import java.io.Serializable
 /**
  * Object containing the history statistics of a chapter
  */
-class History : Serializable {
+interface History : Serializable {
 
     /**
      * Id of history object.
      */
-    var id: Long? = null
+    var id: Long?
 
     /**
      * Chapter id of history object.
      */
-    var chapter_id: Long = 0
+    var chapter_id: Long
 
     /**
      * Last time chapter was read in time long format
      */
-    var last_read: Long = 0
+    var last_read: Long
 
     /**
      * Total time chapter was read - todo not yet implemented
      */
-    var time_read: Long = 0
+    var time_read: Long
 
     companion object {
 
@@ -35,10 +35,8 @@ class History : Serializable {
          * @param chapter chapter object
          * @return history object
          */
-        fun create(chapter: Chapter): History {
-            val history = History()
-            history.chapter_id = chapter.id!!
-            return history
+        fun create(chapter: Chapter): History =  HistoryImpl().apply {
+            this.chapter_id = chapter.id!!
         }
     }
 }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/HistoryImpl.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/HistoryImpl.kt
new file mode 100644
index 000000000..94efcf266
--- /dev/null
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/HistoryImpl.kt
@@ -0,0 +1,27 @@
+package eu.kanade.tachiyomi.data.database.models
+
+/**
+ * Object containing the history statistics of a chapter
+ */
+class HistoryImpl : History {
+
+    /**
+     * Id of history object.
+     */
+    override var id: Long? = null
+
+    /**
+     * Chapter id of history object.
+     */
+    override var chapter_id: Long = 0
+
+    /**
+     * Last time chapter was read in time long format
+     */
+    override var last_read: Long = 0
+
+    /**
+     * Total time chapter was read - todo not yet implemented
+     */
+    override var time_read: Long = 0
+}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt
index 1d263d882..7cc999088 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt
@@ -42,6 +42,16 @@ interface ChapterQueries : DbProvider {
                     .build())
             .prepare()
 
+    fun getChapter(url: String) = db.get()
+            .`object`(Chapter::class.java)
+            .withQuery(Query.builder()
+                    .table(ChapterTable.TABLE)
+                    .where("${ChapterTable.COL_URL} = ?")
+                    .whereArgs(url)
+                    .build())
+            .prepare()
+
+
     fun insertChapter(chapter: Chapter) = db.put().`object`(chapter).prepare()
 
     fun insertChapters(chapters: List<Chapter>) = db.put().objects(chapters).prepare()
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt
index 627c3b236..340e14adb 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt
@@ -40,6 +40,15 @@ interface HistoryQueries : DbProvider {
                     .build())
             .prepare()
 
+    fun getHistoryByChapterUrl(chapterUrl: String) = db.get()
+            .`object`(History::class.java)
+            .withQuery(RawQuery.builder()
+                    .query(getHistoryByChapterUrl())
+                    .args(chapterUrl)
+                    .observesTables(HistoryTable.TABLE)
+                    .build())
+            .prepare()
+
     /**
      * Updates the history last read.
      * Inserts history object if not yet in database
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt
index b22a2fa33..1c51f8092 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt
@@ -84,6 +84,12 @@ interface MangaQueries : DbProvider {
                     .build())
             .prepare()
 
+    fun deleteMangas() = db.delete()
+            .byQuery(DeleteQuery.builder()
+                    .table(MangaTable.TABLE)
+                    .build())
+            .prepare()
+
     fun getLastReadManga() = db.get()
             .listOfObjects(Manga::class.java)
             .withQuery(RawQuery.builder()
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt
index d7736919d..cac21db3f 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt
@@ -73,6 +73,14 @@ fun getHistoryByMangaId() = """
     WHERE ${Chapter.TABLE}.${Chapter.COL_MANGA_ID} = ? AND ${History.TABLE}.${History.COL_CHAPTER_ID} = ${Chapter.TABLE}.${Chapter.COL_ID}
 """
 
+fun getHistoryByChapterUrl() = """
+    SELECT ${History.TABLE}.*
+    FROM ${History.TABLE}
+    JOIN ${Chapter.TABLE}
+    ON ${History.TABLE}.${History.COL_CHAPTER_ID} = ${Chapter.TABLE}.${Chapter.COL_ID}
+    WHERE ${Chapter.TABLE}.${Chapter.COL_URL} = ? AND ${History.TABLE}.${History.COL_CHAPTER_ID} = ${Chapter.TABLE}.${Chapter.COL_ID}
+"""
+
 fun getLastReadMangaQuery() = """
     SELECT ${Manga.TABLE}.*, MAX(${History.TABLE}.${History.COL_LAST_READ}) AS max
     FROM ${Manga.TABLE}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationHandler.kt b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationHandler.kt
index ae160492e..506734160 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationHandler.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationHandler.kt
@@ -3,8 +3,6 @@ package eu.kanade.tachiyomi.data.notification
 import android.app.PendingIntent
 import android.content.Context
 import android.content.Intent
-import android.support.v4.content.FileProvider
-import eu.kanade.tachiyomi.BuildConfig
 import eu.kanade.tachiyomi.ui.download.DownloadActivity
 import eu.kanade.tachiyomi.util.getUriCompat
 import java.io.File
@@ -33,7 +31,7 @@ object NotificationHandler {
      */
     internal fun openImagePendingActivity(context: Context, file: File): PendingIntent {
         val intent = Intent(Intent.ACTION_VIEW).apply {
-            val uri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".provider", file)
+            val uri = file.getUriCompat(context)
             setDataAndType(uri, "image/*")
             flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_GRANT_READ_URI_PERMISSION
         }
diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt
index 18007bd85..17767d322 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/data/notification/NotificationReceiver.kt
@@ -14,7 +14,10 @@ import eu.kanade.tachiyomi.data.download.DownloadManager
 import eu.kanade.tachiyomi.data.download.DownloadService
 import eu.kanade.tachiyomi.data.library.LibraryUpdateService
 import eu.kanade.tachiyomi.ui.reader.ReaderActivity
-import eu.kanade.tachiyomi.util.*
+import eu.kanade.tachiyomi.util.DiskUtil
+import eu.kanade.tachiyomi.util.getUriCompat
+import eu.kanade.tachiyomi.util.notificationManager
+import eu.kanade.tachiyomi.util.toast
 import uy.kohesive.injekt.injectLazy
 import java.io.File
 import eu.kanade.tachiyomi.BuildConfig.APPLICATION_ID as ID
@@ -118,7 +121,7 @@ class NotificationReceiver : BroadcastReceiver() {
 
         // Delete file
         val file = File(path)
-        file.deleteIfExists()
+        file.delete()
 
         DiskUtil.scanMedia(context, file)
     }
@@ -274,4 +277,4 @@ class NotificationReceiver : BroadcastReceiver() {
             return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
         }
     }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/ContextExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/ContextExtensions.kt
index 7fd84a3d8..b0daa653b 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/util/ContextExtensions.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/util/ContextExtensions.kt
@@ -122,7 +122,7 @@ fun Context.sendLocalBroadcastSync(intent: Intent) {
  *
  * @param receiver receiver that gets registered.
  */
-fun Context.registerLocalReceiver(receiver: BroadcastReceiver, filter: IntentFilter ){
+fun Context.registerLocalReceiver(receiver: BroadcastReceiver, filter: IntentFilter) {
     LocalBroadcastManager.getInstance(this).registerReceiver(receiver, filter)
 }
 
@@ -131,7 +131,7 @@ fun Context.registerLocalReceiver(receiver: BroadcastReceiver, filter: IntentFil
  *
  * @param receiver receiver that gets unregistered.
  */
-fun Context.unregisterLocalReceiver(receiver: BroadcastReceiver){
+fun Context.unregisterLocalReceiver(receiver: BroadcastReceiver) {
     LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver)
 }
 
diff --git a/app/src/main/res/xml/provider_paths.xml b/app/src/main/res/xml/provider_paths.xml
index 62e0d1893..2d828b7ed 100644
--- a/app/src/main/res/xml/provider_paths.xml
+++ b/app/src/main/res/xml/provider_paths.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <paths>
+    <cache-path name="cache_files" path="."/>
     <external-path name="ext_files" path="." />
-    <external-cache-path
-        name="ext_cache_files"
-        path="."/>
+    <external-cache-path name="ext_cache_files" path="."/>
 </paths>
\ No newline at end of file