diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 35eb1ddf..56883e31 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -2,5 +2,6 @@
 <project version="4">
   <component name="VcsDirectoryMappings">
     <mapping directory="" vcs="Git" />
+    <mapping directory="$PROJECT_DIR$/gh-pages" vcs="Git" />
   </component>
 </project>
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 9313ded0..864ea64b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -21,7 +21,7 @@ android {
         minSdkVersion 16
         targetSdkVersion 30
         versionCode 58
-        versionName "5.0-hotfix1"
+        versionName "5.0-hotfix2"
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         vectorDrawables.useSupportLibrary = true
     }
diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json
index f18261ab..b79b3840 100644
--- a/app/release/output-metadata.json
+++ b/app/release/output-metadata.json
@@ -12,7 +12,7 @@
       "filters": [],
       "properties": [],
       "versionCode": 58,
-      "versionName": "5.0-hotfix1",
+      "versionName": "5.0-hotfix2",
       "enabled": true,
       "outputFile": "app-release.apk"
     }
diff --git a/app/src/main/java/xyz/quaver/pupil/Pupil.kt b/app/src/main/java/xyz/quaver/pupil/Pupil.kt
index c953fede..32517aa6 100644
--- a/app/src/main/java/xyz/quaver/pupil/Pupil.kt
+++ b/app/src/main/java/xyz/quaver/pupil/Pupil.kt
@@ -108,13 +108,13 @@ class Pupil : Application() {
 
                 if (!FileX(this, it).canWrite())
                     throw Exception()
+
+                DownloadManager.getInstance(this).migrate()
             }
         } catch (e: Exception) {
             Preferences.remove("download_folder")
         }
 
-        DownloadManager.getInstance(this).migrate()
-
         histories = SavedSet(File(ContextCompat.getDataDir(this), "histories.json"), 0)
         favorites = SavedSet(File(ContextCompat.getDataDir(this), "favorites.json"), 0)
         favoriteTags = SavedSet(File(ContextCompat.getDataDir(this), "favorites_tags.json"), Tag.parse(""))
diff --git a/app/src/main/java/xyz/quaver/pupil/services/DownloadService.kt b/app/src/main/java/xyz/quaver/pupil/services/DownloadService.kt
index 04ecf9f1..8123dcaa 100644
--- a/app/src/main/java/xyz/quaver/pupil/services/DownloadService.kt
+++ b/app/src/main/java/xyz/quaver/pupil/services/DownloadService.kt
@@ -381,6 +381,8 @@ class DownloadService : Service() {
     }
 
     override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+        startForeground(R.id.downloader_notification_id, serviceNotification.build())
+
         when (intent?.getStringExtra(KEY_COMMAND)) {
             COMMAND_DOWNLOAD -> intent.getIntExtra(KEY_ID, -1).let { if (it > 0)
                 download(it, intent.getBooleanExtra(KEY_PRIORITY, false), startId)
diff --git a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt
index 90dc56b5..c235eac3 100644
--- a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt
+++ b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt
@@ -123,7 +123,7 @@ class DownloadLocationDialogFragment : DialogFragment() {
             .setView(build())
             .setPositiveButton(requireContext().getText(android.R.string.ok)) { _, _ ->
                 if (Preferences["download_folder", ""].isEmpty())
-                    Preferences["download_folder"] = context?.getExternalFilesDir(null)?.canonicalPath ?: ""
+                    Preferences["download_folder"] = context?.getExternalFilesDir(null)?.toUri()?.toString() ?: ""
 
                 DownloadManager.getInstance(requireContext()).migrate()
             }
diff --git a/app/src/main/java/xyz/quaver/pupil/util/downloader/DownloadManager.kt b/app/src/main/java/xyz/quaver/pupil/util/downloader/DownloadManager.kt
index 20997615..2d8e6c76 100644
--- a/app/src/main/java/xyz/quaver/pupil/util/downloader/DownloadManager.kt
+++ b/app/src/main/java/xyz/quaver/pupil/util/downloader/DownloadManager.kt
@@ -75,7 +75,6 @@ class DownloadManager private constructor(context: Context) : ContextWrapper(con
 
                     data ?: {
                         file.createNewFile()
-                        file.writeText("{}")
                         mutableMapOf<Int, String>()
                     }.invoke()
                 }.invoke()
@@ -99,9 +98,6 @@ class DownloadManager private constructor(context: Context) : ContextWrapper(con
 
     @Synchronized
     fun addDownloadFolder(galleryID: Int) {
-        if (downloadFolderMap.containsKey(galleryID))
-            return
-
         val name = runBlocking {
             Cache.getInstance(this@DownloadManager, galleryID).getGalleryBlock()
         }?.formatDownloadFolder() ?: return
@@ -119,9 +115,6 @@ class DownloadManager private constructor(context: Context) : ContextWrapper(con
 
     @Synchronized
     fun deleteDownloadFolder(galleryID: Int) {
-        if (!downloadFolderMap.containsKey(galleryID))
-            return
-
         downloadFolderMap[galleryID]?.let {
             kotlin.runCatching {
                 downloadFolder.getChild(it).deleteRecursively()
diff --git a/app/src/main/java/xyz/quaver/pupil/util/misc.kt b/app/src/main/java/xyz/quaver/pupil/util/misc.kt
index 4fbfe412..9f9a6613 100644
--- a/app/src/main/java/xyz/quaver/pupil/util/misc.kt
+++ b/app/src/main/java/xyz/quaver/pupil/util/misc.kt
@@ -93,14 +93,14 @@ fun GalleryBlock.formatDownloadFolder(): String =
         formatMap.entries.fold(it) { str, (k, v) ->
             str.replace(k, v.invoke(this), true)
         }
-    }
+    }.replace("/", "")
 
 fun GalleryBlock.formatDownloadFolderTest(format: String): String =
     format.let {
         formatMap.entries.fold(it) { str, (k, v) ->
             str.replace(k, v.invoke(this), true)
         }
-    }
+    }.replace("/", "")
 
 val Reader.requestBuilders: List<Request.Builder>
     get() {