diff --git a/src/en/mangadistrict/build.gradle b/src/en/mangadistrict/build.gradle
index f25b90449..6d5eefdcb 100644
--- a/src/en/mangadistrict/build.gradle
+++ b/src/en/mangadistrict/build.gradle
@@ -3,7 +3,7 @@ ext {
     extClass = '.MangaDistrict'
     themePkg = 'madara'
     baseUrl = 'https://mangadistrict.com'
-    overrideVersionCode = 9
+    overrideVersionCode = 10
     isNsfw = true
 }
 
diff --git a/src/en/mangadistrict/src/eu/kanade/tachiyomi/extension/en/mangadistrict/MangaDistrict.kt b/src/en/mangadistrict/src/eu/kanade/tachiyomi/extension/en/mangadistrict/MangaDistrict.kt
index f2c0cdbed..ee4e8db2c 100644
--- a/src/en/mangadistrict/src/eu/kanade/tachiyomi/extension/en/mangadistrict/MangaDistrict.kt
+++ b/src/en/mangadistrict/src/eu/kanade/tachiyomi/extension/en/mangadistrict/MangaDistrict.kt
@@ -37,7 +37,15 @@ class MangaDistrict :
 
     override val mangaSubString = "read-scan"
 
-    private val preferences: SharedPreferences by getPreferencesLazy()
+    private val preferences: SharedPreferences by getPreferencesLazy {
+        try {
+            val oldTagSet = getStringSet(TAG_LIST_PREF, emptySet())!!
+            edit()
+                .remove(TAG_LIST_PREF)
+                .putString(TAG_LIST_PREF, oldTagSet.joinToString("%"))
+                .apply()
+        } catch (_: Exception) {}
+    }
 
     override fun popularMangaNextPageSelector() = "div[role=navigation] span.current + a.page"
 
@@ -112,16 +120,14 @@ class MangaDistrict :
     }
 
     private fun loadTagListFromPreferences(): Set<Pair<String, String>> =
-        preferences.getStringSet(TAG_LIST_PREF, emptySet())
-            ?.mapNotNull {
-                it.split('|')
-                    .let { splits ->
-                        if (splits.size == 2) {
-                            splits[0] to splits[1]
-                        } else {
-                            null
+        preferences.getString(TAG_LIST_PREF, "")
+            ?.let {
+                it.split('%').mapNotNull { tag ->
+                    tag.split('|')
+                        .let { splits ->
+                            if (splits.size == 2) splits[0] to splits[1] else null
                         }
-                    }
+                }
             }
             ?.toSet()
             // Create at least 1 tag to avoid excessively reading preferences
@@ -129,9 +135,9 @@ class MangaDistrict :
 
     private var tagList: Set<Pair<String, String>> = loadTagListFromPreferences()
         set(value) {
-            preferences.edit().putStringSet(
+            preferences.edit().putString(
                 TAG_LIST_PREF,
-                value.map { "${it.first}|${it.second}" }.toSet(),
+                value.joinToString("%") { "${it.first}|${it.second}" },
             ).apply()
             field = value
         }
@@ -155,6 +161,106 @@ class MangaDistrict :
         }
     }
 
+    // console.log([...document.querySelectorAll("div.checkbox-group .checkbox")].map((el) => `Genre("${el.querySelector("label").innerText.trim()}", "${el.querySelector("input").getAttribute('value')}"),`).join('\n'))
+    override var genresList = listOf(
+        Genre("3D", "3d"),
+        Genre("Action", "action"),
+        Genre("Adapted to Anime", "adapted-to-anime"),
+        Genre("Adventure", "adventure"),
+        Genre("Aliens", "aliens"),
+        Genre("Animal Characteristics", "animal-characteristics"),
+        Genre("Based on Another Work", "based-on-another-work"),
+        Genre("BL", "bl"),
+        Genre("BL Uncensored", "bl-uncensored"),
+        Genre("Borderline H", "borderline-h"),
+        Genre("Cohabitation", "cohabitation"),
+        Genre("Collection of Stories", "collection-of-stories"),
+        Genre("Comedy", "comedy"),
+        Genre("Comics", "comics"),
+        Genre("Cooking", "cooking"),
+        Genre("Coworkers", "coworkers"),
+        Genre("Crime", "crime"),
+        Genre("Crossdressing", "crossdressing"),
+        Genre("Delinquents", "delinquents"),
+        Genre("Demons", "demons"),
+        Genre("Detectives", "detectives"),
+        Genre("Doujinshi", "doujinshi"),
+        Genre("Drama", "drama"),
+        Genre("Ecchi", "ecchi"),
+        Genre("Explicit Sex", "explicit-sex"),
+        Genre("Fantasy", "fantasy"),
+        Genre("Fetish", "fetish"),
+        Genre("Full Color", "full-color"),
+        Genre("Gender Bender", "gender-bender"),
+        Genre("Ghosts", "ghosts"),
+        Genre("GL", "gl"),
+        Genre("Gyaru", "gyaru"),
+        Genre("Harem", "harem"),
+        Genre("Historical", "historical"),
+        Genre("Horror", "horror"),
+        Genre("Incest", "incest"),
+        Genre("Isekai", "isekai"),
+        Genre("Japanese Webtoons", "japanese-webtoons"),
+        Genre("Josei", "josei"),
+        Genre("Light Novels", "light-novels"),
+        Genre("Mafia", "mafia"),
+        Genre("Magic", "magic"),
+        Genre("Magical Girl", "magical-girl"),
+        Genre("Manhua", "manhua"),
+        Genre("Manhwa", "manhwa"),
+        Genre("Martial Arts", "martial-arts"),
+        Genre("Mature Romance", "mature-romance"),
+        Genre("Mecha", "mecha"),
+        Genre("Medical", "medical"),
+        Genre("Military", "military"),
+        Genre("Monster Girls", "monster-girls"),
+        Genre("Monsters", "monsters"),
+        Genre("Music", "music"),
+        Genre("Mystery", "mystery"),
+        Genre("Ninja", "ninja"),
+        Genre("Nudity", "nudity"),
+        Genre("One Shot", "one-shot"),
+        Genre("Person in a Strange World", "person-in-a-strange-world"),
+        Genre("Police", "police"),
+        Genre("Psychological", "psychological"),
+        Genre("Reincarnation", "reincarnation"),
+        Genre("Reverse Harem", "reverse-harem"),
+        Genre("Romance", "romance"),
+        Genre("Salaryman", "salaryman"),
+        Genre("Samurai", "samurai"),
+        Genre("School Life", "school-life"),
+        Genre("Sci Fi", "sci-fi"),
+        Genre("Seinen", "seinen"),
+        Genre("Sexual Abuse", "sexual-abuse"),
+        Genre("Sexual Content", "sexual-content"),
+        Genre("Shoujo", "shoujo"),
+        Genre("Shoujo-ai", "shoujo-ai"),
+        Genre("Shounen", "shounen"),
+        Genre("Shounen-ai", "shounen-ai"),
+        Genre("Siblings", "siblings"),
+        Genre("Slice of Life", "slice-of-life"),
+        Genre("Smut", "smut"),
+        Genre("Sports", "sports"),
+        Genre("Summoned Into Another World", "summoned-into-another-world"),
+        Genre("Superheroes", "superheroes"),
+        Genre("Supernatural", "supernatural"),
+        Genre("Survival", "survival"),
+        Genre("Thriller", "thriller"),
+        Genre("Time Travel", "time-travel"),
+        Genre("Transfer Students", "transfer-students"),
+        Genre("Uncensored", "uncensored"),
+        Genre("Vampires", "vampires"),
+        Genre("Violence", "violence"),
+        Genre("Virtual Reality", "virtual-reality"),
+        Genre("Web Novels", "web-novels"),
+        Genre("Webtoons", "webtoons"),
+        Genre("Western", "western"),
+        Genre("Work Life", "work-life"),
+        Genre("Yaoi", "yaoi"),
+        Genre("Yuri", "yuri"),
+        Genre("Zombies", "zombies"),
+    )
+
     private fun isRemoveTitleVersion() = preferences.getBoolean(REMOVE_TITLE_VERSION_PREF, false)
     private fun getImgRes() = preferences.getString(IMG_RES_PREF, IMG_RES_DEFAULT)!!