diff --git a/lib/preference-stub/src/main/java/android/support/v7/preference/DialogPreference.java b/lib/preference-stub/src/main/java/android/support/v7/preference/DialogPreference.java
index d74c0c71d..a4cc7ccf8 100644
--- a/lib/preference-stub/src/main/java/android/support/v7/preference/DialogPreference.java
+++ b/lib/preference-stub/src/main/java/android/support/v7/preference/DialogPreference.java
@@ -1,10 +1,7 @@
 package android.support.v7.preference;
 
-/**
- * Created by Carlos on 5/9/2018.
- */
-
 public abstract class DialogPreference extends Preference {
+
     public CharSequence getDialogTitle() {
         throw new RuntimeException("Stub!");
     }
@@ -20,4 +17,5 @@ public abstract class DialogPreference extends Preference {
     public void setDialogMessage(CharSequence dialogMessage) {
         throw new RuntimeException("Stub!");
     }
+
 }
diff --git a/lib/preference-stub/src/main/java/android/support/v7/preference/EditTextPreference.java b/lib/preference-stub/src/main/java/android/support/v7/preference/EditTextPreference.java
index 2071573df..f5eb9d6ad 100644
--- a/lib/preference-stub/src/main/java/android/support/v7/preference/EditTextPreference.java
+++ b/lib/preference-stub/src/main/java/android/support/v7/preference/EditTextPreference.java
@@ -3,6 +3,7 @@ package android.support.v7.preference;
 import android.content.Context;
 
 public class EditTextPreference extends DialogPreference {
+
     public EditTextPreference(Context context) {
         throw new RuntimeException("Stub!");
     }
@@ -14,4 +15,5 @@ public class EditTextPreference extends DialogPreference {
     public void setText(String text) {
         throw new RuntimeException("Stub!");
     }
-}
\ No newline at end of file
+
+}
diff --git a/lib/preference-stub/src/main/java/android/support/v7/preference/ListPreference.java b/lib/preference-stub/src/main/java/android/support/v7/preference/ListPreference.java
index 6099c5b86..3ca948d6e 100644
--- a/lib/preference-stub/src/main/java/android/support/v7/preference/ListPreference.java
+++ b/lib/preference-stub/src/main/java/android/support/v7/preference/ListPreference.java
@@ -2,21 +2,17 @@ package android.support.v7.preference;
 
 import android.content.Context;
 
-/**
- * Created by Carlos on 5/9/2018.
- */
-
 public class ListPreference extends Preference {
 
     public ListPreference(Context context) {
         throw new RuntimeException("Stub!");
     }
 
-    public void setEntries(CharSequence[] entries) {
+    public CharSequence[] getEntries() {
         throw new RuntimeException("Stub!");
     }
 
-    public CharSequence[] getEntries() {
+    public void setEntries(CharSequence[] entries) {
         throw new RuntimeException("Stub!");
     }
 
@@ -24,11 +20,11 @@ public class ListPreference extends Preference {
         throw new RuntimeException("Stub!");
     }
 
-    public void setEntryValues(CharSequence[] entryValues) {
+    public CharSequence[] getEntryValues() {
         throw new RuntimeException("Stub!");
     }
 
-    public CharSequence[] getEntryValues() {
+    public void setEntryValues(CharSequence[] entryValues) {
         throw new RuntimeException("Stub!");
     }
 
@@ -43,4 +39,5 @@ public class ListPreference extends Preference {
     public void setValue(String value) {
         throw new RuntimeException("Stub!");
     }
+
 }
diff --git a/lib/preference-stub/src/main/java/android/support/v7/preference/Preference.java b/lib/preference-stub/src/main/java/android/support/v7/preference/Preference.java
index a6c27095d..beda8ba9d 100644
--- a/lib/preference-stub/src/main/java/android/support/v7/preference/Preference.java
+++ b/lib/preference-stub/src/main/java/android/support/v7/preference/Preference.java
@@ -1,13 +1,6 @@
 package android.support.v7.preference;
 
-/**
- * Created by Carlos on 5/9/2018.
- */
-
 public class Preference {
-    public interface OnPreferenceChangeListener {
-        boolean onPreferenceChange(Preference preference, Object newValue);
-    }
 
     public void setOnPreferenceChangeListener(OnPreferenceChangeListener onPreferenceChangeListener) {
         throw new RuntimeException("Stub!");
@@ -29,7 +22,7 @@ public class Preference {
         throw new RuntimeException("Stub!");
     }
 
-    public void setKey(String key) {
+    public void setSummary(CharSequence summary) {
         throw new RuntimeException("Stub!");
     }
 
@@ -37,7 +30,7 @@ public class Preference {
         throw new RuntimeException("Stub!");
     }
 
-    public void setSummary(CharSequence summary) {
+    public void setKey(String key) {
         throw new RuntimeException("Stub!");
     }
 
@@ -45,7 +38,12 @@ public class Preference {
         throw new RuntimeException("Stub!");
     }
 
+    public interface OnPreferenceChangeListener {
+        boolean onPreferenceChange(Preference preference, Object newValue);
+    }
+
     public interface OnPreferenceClickListener {
         boolean onPreferenceClick(Preference preference);
     }
+
 }
diff --git a/lib/preference-stub/src/main/java/android/support/v7/preference/PreferenceScreen.java b/lib/preference-stub/src/main/java/android/support/v7/preference/PreferenceScreen.java
index 26badb6c8..cfb9da457 100644
--- a/lib/preference-stub/src/main/java/android/support/v7/preference/PreferenceScreen.java
+++ b/lib/preference-stub/src/main/java/android/support/v7/preference/PreferenceScreen.java
@@ -2,11 +2,7 @@ package android.support.v7.preference;
 
 import android.content.Context;
 
-/**
- * Created by Carlos on 5/7/2018.
- */
-
-public class PreferenceScreen{
+public class PreferenceScreen {
 
     public boolean addPreference(Preference preference) {
         throw new RuntimeException("Stub!");
@@ -15,4 +11,5 @@ public class PreferenceScreen{
     public Context getContext() {
         throw new RuntimeException("Stub!");
     }
+
 }
diff --git a/lib/preference-stub/src/main/java/androidx/preference/DialogPreference.java b/lib/preference-stub/src/main/java/androidx/preference/DialogPreference.java
new file mode 100644
index 000000000..5a884efe8
--- /dev/null
+++ b/lib/preference-stub/src/main/java/androidx/preference/DialogPreference.java
@@ -0,0 +1,21 @@
+package androidx.preference;
+
+public abstract class DialogPreference extends Preference {
+
+    public CharSequence getDialogTitle() {
+        throw new RuntimeException("Stub!");
+    }
+
+    public void setDialogTitle(CharSequence dialogTitle) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public CharSequence getDialogMessage() {
+        throw new RuntimeException("Stub!");
+    }
+
+    public void setDialogMessage(CharSequence dialogMessage) {
+        throw new RuntimeException("Stub!");
+    }
+
+}
diff --git a/lib/preference-stub/src/main/java/androidx/preference/EditTextPreference.java b/lib/preference-stub/src/main/java/androidx/preference/EditTextPreference.java
new file mode 100644
index 000000000..2d9814e57
--- /dev/null
+++ b/lib/preference-stub/src/main/java/androidx/preference/EditTextPreference.java
@@ -0,0 +1,19 @@
+package androidx.preference;
+
+import android.content.Context;
+
+public class EditTextPreference extends DialogPreference {
+
+    public EditTextPreference(Context context) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public String getText() {
+        throw new RuntimeException("Stub!");
+    }
+
+    public void setText(String text) {
+        throw new RuntimeException("Stub!");
+    }
+
+}
diff --git a/lib/preference-stub/src/main/java/androidx/preference/ListPreference.java b/lib/preference-stub/src/main/java/androidx/preference/ListPreference.java
new file mode 100644
index 000000000..51ba95fc8
--- /dev/null
+++ b/lib/preference-stub/src/main/java/androidx/preference/ListPreference.java
@@ -0,0 +1,43 @@
+package androidx.preference;
+
+import android.content.Context;
+
+public class ListPreference extends Preference {
+
+    public ListPreference(Context context) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public CharSequence[] getEntries() {
+        throw new RuntimeException("Stub!");
+    }
+
+    public void setEntries(CharSequence[] entries) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public int findIndexOfValue(String value) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public CharSequence[] getEntryValues() {
+        throw new RuntimeException("Stub!");
+    }
+
+    public void setEntryValues(CharSequence[] entryValues) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public void setValueIndex(int index) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public String getValue() {
+        throw new RuntimeException("Stub!");
+    }
+
+    public void setValue(String value) {
+        throw new RuntimeException("Stub!");
+    }
+
+}
diff --git a/lib/preference-stub/src/main/java/androidx/preference/Preference.java b/lib/preference-stub/src/main/java/androidx/preference/Preference.java
new file mode 100644
index 000000000..e0b94c403
--- /dev/null
+++ b/lib/preference-stub/src/main/java/androidx/preference/Preference.java
@@ -0,0 +1,49 @@
+package androidx.preference;
+
+public class Preference {
+
+    public void setOnPreferenceChangeListener(OnPreferenceChangeListener onPreferenceChangeListener) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public void setOnPreferenceClickListener(OnPreferenceClickListener onPreferenceClickListener) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public CharSequence getTitle() {
+        throw new RuntimeException("Stub!");
+    }
+
+    public void setTitle(CharSequence title) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public CharSequence getSummary() {
+        throw new RuntimeException("Stub!");
+    }
+
+    public void setSummary(CharSequence summary) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public String getKey() {
+        throw new RuntimeException("Stub!");
+    }
+
+    public void setKey(String key) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public void setDefaultValue(Object defaultValue) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public interface OnPreferenceChangeListener {
+        boolean onPreferenceChange(Preference preference, Object newValue);
+    }
+
+    public interface OnPreferenceClickListener {
+        boolean onPreferenceClick(Preference preference);
+    }
+
+}
diff --git a/lib/preference-stub/src/main/java/androidx/preference/PreferenceScreen.java b/lib/preference-stub/src/main/java/androidx/preference/PreferenceScreen.java
new file mode 100644
index 000000000..38e31e644
--- /dev/null
+++ b/lib/preference-stub/src/main/java/androidx/preference/PreferenceScreen.java
@@ -0,0 +1,15 @@
+package androidx.preference;
+
+import android.content.Context;
+
+public class PreferenceScreen {
+
+    public boolean addPreference(Preference preference) {
+        throw new RuntimeException("Stub!");
+    }
+
+    public Context getContext() {
+        throw new RuntimeException("Stub!");
+    }
+
+}
diff --git a/lib/preference-stub/src/main/java/eu/kanade/tachiyomi/source/ConfigurableSource.java b/lib/preference-stub/src/main/java/eu/kanade/tachiyomi/source/ConfigurableSource.java
index 727b53763..1df0d528c 100644
--- a/lib/preference-stub/src/main/java/eu/kanade/tachiyomi/source/ConfigurableSource.java
+++ b/lib/preference-stub/src/main/java/eu/kanade/tachiyomi/source/ConfigurableSource.java
@@ -1,13 +1,9 @@
 package eu.kanade.tachiyomi.source;
 
-import android.support.v7.preference.PreferenceScreen;
-
-/**
- * Created by Carlos on 5/7/2018.
- */
-
 public interface ConfigurableSource {
 
-    void setupPreferenceScreen(PreferenceScreen screen);
+    void setupPreferenceScreen(android.support.v7.preference.PreferenceScreen screen);
+
+    void setupPreferenceScreen(androidx.preference.PreferenceScreen screen);
 
 }
diff --git a/src/all/komga/build.gradle b/src/all/komga/build.gradle
index 71fcc58ba..ea1e7ff3c 100644
--- a/src/all/komga/build.gradle
+++ b/src/all/komga/build.gradle
@@ -5,7 +5,7 @@ ext {
     appName = 'Tachiyomi: Komga'
     pkgNameSuffix = 'all.komga'
     extClass = '.Komga'
-    extVersionCode = 5
+    extVersionCode = 6
     libVersion = '1.2'
 }
 
diff --git a/src/all/komga/src/eu/kanade/tachiyomi/extension/all/komga/Komga.kt b/src/all/komga/src/eu/kanade/tachiyomi/extension/all/komga/Komga.kt
index 3b044e27d..dc4d7b76d 100644
--- a/src/all/komga/src/eu/kanade/tachiyomi/extension/all/komga/Komga.kt
+++ b/src/all/komga/src/eu/kanade/tachiyomi/extension/all/komga/Komga.kt
@@ -190,13 +190,41 @@ open class Komga : ConfigurableSource, HttpSource() {
             }
             .build()
 
-    override fun setupPreferenceScreen(screen: PreferenceScreen) {
+    override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
         screen.addPreference(screen.editTextPreference(ADDRESS_TITLE, ADDRESS_DEFAULT, baseUrl))
         screen.addPreference(screen.editTextPreference(USERNAME_TITLE, USERNAME_DEFAULT, username))
         screen.addPreference(screen.editTextPreference(PASSWORD_TITLE, PASSWORD_DEFAULT, password))
     }
 
-    private fun PreferenceScreen.editTextPreference(title: String, default: String, value: String): EditTextPreference {
+    private fun androidx.preference.PreferenceScreen.editTextPreference(title: String, default: String, value: String): androidx.preference.EditTextPreference {
+        return androidx.preference.EditTextPreference(context).apply {
+            key = title
+            this.title = title
+            summary = value
+            this.setDefaultValue(default)
+            dialogTitle = title
+
+            setOnPreferenceChangeListener { _, newValue ->
+                try {
+                    val res = preferences.edit().putString(title, newValue as String).commit()
+                    Toast.makeText(context, "Restart Tachiyomi to apply new setting."
+                        , Toast.LENGTH_LONG).show()
+                    res
+                } catch (e: Exception) {
+                    e.printStackTrace()
+                    false
+                }
+            }
+        }
+    }
+
+    override fun setupPreferenceScreen(screen: PreferenceScreen) {
+        screen.addPreference(screen.supportEditTextPreference(ADDRESS_TITLE, ADDRESS_DEFAULT, baseUrl))
+        screen.addPreference(screen.supportEditTextPreference(USERNAME_TITLE, USERNAME_DEFAULT, username))
+        screen.addPreference(screen.supportEditTextPreference(PASSWORD_TITLE, PASSWORD_DEFAULT, password))
+    }
+
+    private fun PreferenceScreen.supportEditTextPreference(title: String, default: String, value: String): EditTextPreference {
         return EditTextPreference(context).apply {
             key = title
             this.title = title
diff --git a/src/all/mangadex/build.gradle b/src/all/mangadex/build.gradle
index 72aba6767..5b77122f0 100644
--- a/src/all/mangadex/build.gradle
+++ b/src/all/mangadex/build.gradle
@@ -5,7 +5,7 @@ ext {
     appName = 'Tachiyomi: MangaDex'
     pkgNameSuffix = 'all.mangadex'
     extClass = '.MangadexFactory'
-    extVersionCode = 73
+    extVersionCode = 74
     libVersion = '1.2'
 }
 
diff --git a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/Mangadex.kt b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/Mangadex.kt
index 97be4ba99..73c3cdb81 100644
--- a/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/Mangadex.kt
+++ b/src/all/mangadex/src/eu/kanade/tachiyomi/extension/all/mangadex/Mangadex.kt
@@ -581,6 +581,55 @@ abstract class Mangadex(
         return baseUrl + attr
     }
 
+    override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
+        val myPref = androidx.preference.ListPreference(screen.context).apply {
+            key = SHOW_R18_PREF_Title
+            title = SHOW_R18_PREF_Title
+
+            title = SHOW_R18_PREF_Title
+            entries = arrayOf("Show No R18+", "Show All", "Show Only R18+")
+            entryValues = arrayOf("0", "1", "2")
+            summary = "%s"
+
+            setOnPreferenceChangeListener { _, newValue ->
+                val selected = newValue as String
+                val index = this.findIndexOfValue(selected)
+                preferences.edit().putInt(SHOW_R18_PREF, index).commit()
+            }
+        }
+        val thumbsPref = androidx.preference.ListPreference(screen.context).apply {
+            key = SHOW_THUMBNAIL_PREF_Title
+            title = SHOW_THUMBNAIL_PREF_Title
+            entries = arrayOf("Show high quality", "Show low quality")
+            entryValues = arrayOf("0", "1")
+            summary = "%s"
+
+            setOnPreferenceChangeListener { _, newValue ->
+                val selected = newValue as String
+                val index = this.findIndexOfValue(selected)
+                preferences.edit().putInt(SHOW_THUMBNAIL_PREF, index).commit()
+            }
+        }
+        val serverPref = androidx.preference.ListPreference(screen.context).apply {
+            key = SERVER_PREF_Title
+            title = SERVER_PREF_Title
+            entries = SERVER_PREF_ENTRIES
+            entryValues = SERVER_PREF_ENTRY_VALUES
+            summary = "%s"
+
+            setOnPreferenceChangeListener { _, newValue ->
+                val selected = newValue as String
+                val index = this.findIndexOfValue(selected)
+                val entry = entryValues[index] as String
+                preferences.edit().putString(SERVER_PREF, entry).commit()
+            }
+        }
+
+        screen.addPreference(myPref)
+        screen.addPreference(thumbsPref)
+        screen.addPreference(serverPref)
+    }
+
     override fun setupPreferenceScreen(screen: PreferenceScreen) {
         val myPref = ListPreference(screen.context).apply {
             key = SHOW_R18_PREF_Title
diff --git a/src/all/nhentai/build.gradle b/src/all/nhentai/build.gradle
index 127bafbde..7bcd22f4c 100644
--- a/src/all/nhentai/build.gradle
+++ b/src/all/nhentai/build.gradle
@@ -5,7 +5,7 @@ ext {
     appName = 'Tachiyomi: NHentai'
     pkgNameSuffix = 'all.nhentai'
     extClass = '.NHFactory'
-    extVersionCode = 15
+    extVersionCode = 16
     libVersion = '1.2'
 }
 
diff --git a/src/all/nhentai/src/eu/kanade/tachiyomi/extension/all/nhentai/NHentai.kt b/src/all/nhentai/src/eu/kanade/tachiyomi/extension/all/nhentai/NHentai.kt
index 975adc24c..5455e40be 100644
--- a/src/all/nhentai/src/eu/kanade/tachiyomi/extension/all/nhentai/NHentai.kt
+++ b/src/all/nhentai/src/eu/kanade/tachiyomi/extension/all/nhentai/NHentai.kt
@@ -57,6 +57,29 @@ open class NHentai(
         else -> false
     }
 
+    override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
+        val serverPref = androidx.preference.ListPreference(screen.context).apply {
+            key = TITLE_PREF
+            title = TITLE_PREF
+            entries = arrayOf("Full Title", "Short Title")
+            entryValues = arrayOf("full", "short")
+            summary = "%s"
+
+            setOnPreferenceChangeListener { _, newValue ->
+                displayFullTitle = when(newValue){
+                    "full" -> true
+                    else -> false
+                }
+                true
+            }
+        }
+
+        if(!preferences.contains(TITLE_PREF))
+            preferences.edit().putString(TITLE_PREF, "full").apply()
+
+        screen.addPreference(serverPref)
+    }
+
     override fun setupPreferenceScreen(screen: PreferenceScreen) {
         val serverPref = ListPreference(screen.context).apply {
             key = TITLE_PREF
diff --git a/src/all/wpmangastream/build.gradle b/src/all/wpmangastream/build.gradle
index 009f28c96..698d87871 100644
--- a/src/all/wpmangastream/build.gradle
+++ b/src/all/wpmangastream/build.gradle
@@ -5,7 +5,7 @@ ext {
     appName = 'Tachiyomi: WP Manga Stream'
     pkgNameSuffix = 'all.wpmangastream'
     extClass = '.WPMangaStreamFactory'
-    extVersionCode = 2
+    extVersionCode = 3
     libVersion = '1.2'
 }
 
diff --git a/src/all/wpmangastream/src/eu/kanade/tachiyomi/extension/all/wpmangastream/WPMangaStream.kt b/src/all/wpmangastream/src/eu/kanade/tachiyomi/extension/all/wpmangastream/WPMangaStream.kt
index 243bec15b..fe5fa8712 100644
--- a/src/all/wpmangastream/src/eu/kanade/tachiyomi/extension/all/wpmangastream/WPMangaStream.kt
+++ b/src/all/wpmangastream/src/eu/kanade/tachiyomi/extension/all/wpmangastream/WPMangaStream.kt
@@ -35,8 +35,24 @@ abstract class WPMangaStream(override val name: String, override val baseUrl: St
         Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
     }
 
-    override fun setupPreferenceScreen(screen: PreferenceScreen) {
+    override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
+        val thumbsPref = androidx.preference.ListPreference(screen.context).apply {
+            key = SHOW_THUMBNAIL_PREF_Title
+            title = SHOW_THUMBNAIL_PREF_Title
+            entries = arrayOf("Show high quality", "Show mid quality", "Show low quality")
+            entryValues = arrayOf("0", "1", "2")
+            summary = "%s"
 
+            setOnPreferenceChangeListener { _, newValue ->
+                val selected = newValue as String
+                val index = this.findIndexOfValue(selected)
+                preferences.edit().putInt(SHOW_THUMBNAIL_PREF, index).commit()
+            }
+        }
+        screen.addPreference(thumbsPref)
+    }
+
+    override fun setupPreferenceScreen(screen: PreferenceScreen) {
         val thumbsPref = ListPreference(screen.context).apply {
             key = SHOW_THUMBNAIL_PREF_Title
             title = SHOW_THUMBNAIL_PREF_Title
diff --git a/src/en/guya/build.gradle b/src/en/guya/build.gradle
index 8f74e859c..f6e5560be 100644
--- a/src/en/guya/build.gradle
+++ b/src/en/guya/build.gradle
@@ -5,7 +5,7 @@ ext {
     appName = 'Tachiyomi: Guya'
     pkgNameSuffix = "en.guya"
     extClass = '.Guya'
-    extVersionCode = 7
+    extVersionCode = 8
     libVersion = '1.2'
 }
 
diff --git a/src/en/guya/src/eu/kanade/tachiyomi/extension/en/guya/Guya.kt b/src/en/guya/src/eu/kanade/tachiyomi/extension/en/guya/Guya.kt
index dc12ff283..ef149a47e 100644
--- a/src/en/guya/src/eu/kanade/tachiyomi/extension/en/guya/Guya.kt
+++ b/src/en/guya/src/eu/kanade/tachiyomi/extension/en/guya/Guya.kt
@@ -163,6 +163,32 @@ open class Guya() : ConfigurableSource, HttpSource() {
         return parseManga(truncatedJSON)
     }
 
+    override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
+        val preference = androidx.preference.ListPreference(screen.context).apply {
+            key = "preferred_scanlator"
+            title = "Preferred scanlator"
+            entries = arrayOf<String>()
+            entryValues = arrayOf<String>()
+            for (key in Scanlators.keys()) {
+                entries += Scanlators.getValueFromKey(key)
+                entryValues += key
+            }
+            summary = "Current: %s\n\n" +
+                "This setting sets the scanlation group to prioritize " +
+                "on chapter refresh/update. It will get the next available if " +
+                "your preferred scanlator isn't an option (yet)."
+
+            this.setDefaultValue("1")
+
+            setOnPreferenceChangeListener{_, newValue ->
+                val selected = newValue.toString()
+                preferences.edit().putString(SCANLATOR_PREFERENCE, selected).commit()
+            }
+        }
+
+        screen.addPreference(preference)
+    }
+
     override fun setupPreferenceScreen(screen: PreferenceScreen) {
         val preference = ListPreference(screen.context).apply {
             key = "preferred_scanlator"
diff --git a/src/en/mangakisa/build.gradle b/src/en/mangakisa/build.gradle
index f60856f10..67e569e17 100644
--- a/src/en/mangakisa/build.gradle
+++ b/src/en/mangakisa/build.gradle
@@ -5,7 +5,7 @@ ext {
     appName = 'Tachiyomi: MangaKisa'
     pkgNameSuffix = 'en.mangakisa'
     extClass = '.MangaKisa'
-    extVersionCode = 1
+    extVersionCode = 2
     libVersion = '1.2'
 }
 
diff --git a/src/en/mangakisa/src/eu/kanade/tachiyomi/extension/en/mangakisa/MangaKisa.kt b/src/en/mangakisa/src/eu/kanade/tachiyomi/extension/en/mangakisa/MangaKisa.kt
index d842362c5..306b23c04 100644
--- a/src/en/mangakisa/src/eu/kanade/tachiyomi/extension/en/mangakisa/MangaKisa.kt
+++ b/src/en/mangakisa/src/eu/kanade/tachiyomi/extension/en/mangakisa/MangaKisa.kt
@@ -141,7 +141,7 @@ class MangaKisa : ConfigurableSource, ParsedHttpSource() {
 
         return pages
     }
-    
+
     override fun imageUrlRequest(page: Page) = throw Exception("Not used")
     override fun imageUrlParse(document: Document) = throw Exception("Not used")
 
@@ -210,8 +210,41 @@ class MangaKisa : ConfigurableSource, ParsedHttpSource() {
         Pair("yaoi", "Yaoi "),
         Pair("yuri", "Yuri ")
         ))
-    
-    // Preferences Code 
+
+    // Preferences Code
+    override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
+        val popularmangapref = androidx.preference.ListPreference(screen.context).apply {
+            key = BROWSE_PREF_Title
+            title = BROWSE_PREF_Title
+            entries = arrayOf("Weekly", "All Time")
+            entryValues = arrayOf("popular", "popular-alltime")
+            summary = "%s"
+
+            setOnPreferenceChangeListener { _, newValue ->
+                val selected = newValue as String
+                val index = this.findIndexOfValue(selected)
+                val entry = entryValues.get(index) as String
+                preferences.edit().putString(BROWSE_PREF, entry).commit()
+            }
+        }
+        val latestmangapref = androidx.preference.ListPreference(screen.context).apply {
+            key = LATEST_PREF_Title
+            title = LATEST_PREF_Title
+            entries = arrayOf("Popular Updates", "All Updates")
+            entryValues = arrayOf("latest", "all-updates/latest")
+            summary = "%s"
+
+            setOnPreferenceChangeListener { _, newValue ->
+                val selected = newValue as String
+                val index = this.findIndexOfValue(selected)
+                val entry = entryValues.get(index) as String
+                preferences.edit().putString(LATEST_PREF, entry).commit()
+            }
+        }
+        screen.addPreference(popularmangapref)
+        screen.addPreference(latestmangapref)
+    }
+
     override fun setupPreferenceScreen(screen: PreferenceScreen) {
         val popularmangapref = ListPreference(screen.context).apply {
             key = BROWSE_PREF_Title
diff --git a/src/es/lectormanga/build.gradle b/src/es/lectormanga/build.gradle
index aa5c253d3..259fa1cac 100755
--- a/src/es/lectormanga/build.gradle
+++ b/src/es/lectormanga/build.gradle
@@ -5,7 +5,7 @@ ext {
     appName = 'Tachiyomi: LectorManga'
     pkgNameSuffix = 'es.lectormanga'
     extClass = '.LectorManga'
-    extVersionCode = 3
+    extVersionCode = 4
     libVersion = '1.2'
 }
 
diff --git a/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt b/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt
index ba2832019..409152122 100755
--- a/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt
+++ b/src/es/lectormanga/src/eu/kanade/tachiyomi/extension/es/lectormanga/LectorManga.kt
@@ -408,6 +408,24 @@ class LectorManga : ConfigurableSource, ParsedHttpSource() {
     }
 
     // Preferences Code
+    override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
+        val deduppref = androidx.preference.ListPreference(screen.context).apply {
+            key = DEDUP_PREF_Title
+            title = DEDUP_PREF_Title
+            entries = arrayOf("All scanlators", "One scanlator per chapter")
+            entryValues = arrayOf("all", "one")
+            summary = "%s"
+
+            setOnPreferenceChangeListener { _, newValue ->
+                val selected = newValue as String
+                val index = this.findIndexOfValue(selected)
+                val entry = entryValues.get(index) as String
+                preferences.edit().putString(DEDUP_PREF, entry).commit()
+            }
+        }
+        screen.addPreference(deduppref)
+    }
+
     override fun setupPreferenceScreen(screen: PreferenceScreen) {
         val deduppref = ListPreference(screen.context).apply {
             key = DEDUP_PREF_Title
diff --git a/src/es/tumangaonline/build.gradle b/src/es/tumangaonline/build.gradle
index 8b411a27e..6acb82eec 100755
--- a/src/es/tumangaonline/build.gradle
+++ b/src/es/tumangaonline/build.gradle
@@ -5,7 +5,7 @@ ext {
     appName = 'Tachiyomi: TuMangaOnline'
     pkgNameSuffix = 'es.tumangaonline'
     extClass = '.TuMangaOnline'
-    extVersionCode = 13
+    extVersionCode = 14
     libVersion = '1.2'
 }
 
diff --git a/src/es/tumangaonline/src/eu/kanade/tachiyomi/extension/es/tumangaonline/TuMangaOnline.kt b/src/es/tumangaonline/src/eu/kanade/tachiyomi/extension/es/tumangaonline/TuMangaOnline.kt
index 983c5541e..3f1f453d0 100755
--- a/src/es/tumangaonline/src/eu/kanade/tachiyomi/extension/es/tumangaonline/TuMangaOnline.kt
+++ b/src/es/tumangaonline/src/eu/kanade/tachiyomi/extension/es/tumangaonline/TuMangaOnline.kt
@@ -38,7 +38,7 @@ class TuMangaOnline : ConfigurableSource, ParsedHttpSource() {
         .retryOnConnectionFailure(true)
         .followRedirects(true)
         .build()!!
-    
+
     private val userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0"
 
     override fun headersBuilder(): Headers.Builder {
@@ -421,6 +421,24 @@ class TuMangaOnline : ConfigurableSource, ParsedHttpSource() {
     }
 
     // Preferences Code
+    override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
+        val deduppref = androidx.preference.ListPreference(screen.context).apply {
+            key = DEDUP_PREF_Title
+            title = DEDUP_PREF_Title
+            entries = arrayOf("All scanlators", "One scanlator per chapter")
+            entryValues = arrayOf("all", "one")
+            summary = "%s"
+
+            setOnPreferenceChangeListener { _, newValue ->
+                val selected = newValue as String
+                val index = this.findIndexOfValue(selected)
+                val entry = entryValues.get(index) as String
+                preferences.edit().putString(DEDUP_PREF, entry).commit()
+            }
+        }
+        screen.addPreference(deduppref)
+    }
+
     override fun setupPreferenceScreen(screen: PreferenceScreen) {
         val deduppref = ListPreference(screen.context).apply {
             key = DEDUP_PREF_Title
diff --git a/src/ko/mangashowme/build.gradle b/src/ko/mangashowme/build.gradle
index 8ce23e19b..8058b7d1d 100644
--- a/src/ko/mangashowme/build.gradle
+++ b/src/ko/mangashowme/build.gradle
@@ -5,7 +5,7 @@ ext {
     appName = 'Tachiyomi: ManaMoa'
     pkgNameSuffix = 'ko.mangashowme'
     extClass = '.ManaMoa'
-    extVersionCode = 14
+    extVersionCode = 15
     libVersion = '1.2'
 }
 
diff --git a/src/ko/mangashowme/src/eu/kanade/tachiyomi/extension/ko/mangashowme/MangaShowMe.kt b/src/ko/mangashowme/src/eu/kanade/tachiyomi/extension/ko/mangashowme/MangaShowMe.kt
index 9f01a9e7a..afd13b929 100644
--- a/src/ko/mangashowme/src/eu/kanade/tachiyomi/extension/ko/mangashowme/MangaShowMe.kt
+++ b/src/ko/mangashowme/src/eu/kanade/tachiyomi/extension/ko/mangashowme/MangaShowMe.kt
@@ -267,6 +267,30 @@ class ManaMoa : ConfigurableSource, ParsedHttpSource() {
         Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
     }
 
+    override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
+        val baseUrlPref = androidx.preference.EditTextPreference(screen.context).apply {
+            key = BASE_URL_PREF_TITLE
+            title = BASE_URL_PREF_TITLE
+            summary = BASE_URL_PREF_SUMMARY
+            this.setDefaultValue(defaultBaseUrl)
+            dialogTitle = BASE_URL_PREF_TITLE
+            dialogMessage = "Default: $defaultBaseUrl"
+
+            setOnPreferenceChangeListener { _, newValue ->
+                try {
+                    val res = preferences.edit().putString(BASE_URL_PREF, newValue as String).commit()
+                    Toast.makeText(screen.context, RESTART_TACHIYOMI, Toast.LENGTH_LONG).show()
+                    res
+                } catch (e: Exception) {
+                    e.printStackTrace()
+                    false
+                }
+            }
+        }
+
+        screen.addPreference(baseUrlPref)
+    }
+
     override fun setupPreferenceScreen(screen: PreferenceScreen) {
         val baseUrlPref = EditTextPreference(screen.context).apply {
             key = BASE_URL_PREF_TITLE
diff --git a/src/ko/newtoki/build.gradle b/src/ko/newtoki/build.gradle
index 922e08282..21340400f 100644
--- a/src/ko/newtoki/build.gradle
+++ b/src/ko/newtoki/build.gradle
@@ -5,7 +5,7 @@ ext {
     appName = 'Tachiyomi: NewToki'
     pkgNameSuffix = 'ko.newtoki'
     extClass = '.NewTokiFactory'
-    extVersionCode = 10
+    extVersionCode = 11
     libVersion = '1.2'
 }
 
diff --git a/src/ko/newtoki/src/eu/kanade/tachiyomi/extension/ko/newtoki/NewToki.kt b/src/ko/newtoki/src/eu/kanade/tachiyomi/extension/ko/newtoki/NewToki.kt
index 475334c9b..802c4da0f 100644
--- a/src/ko/newtoki/src/eu/kanade/tachiyomi/extension/ko/newtoki/NewToki.kt
+++ b/src/ko/newtoki/src/eu/kanade/tachiyomi/extension/ko/newtoki/NewToki.kt
@@ -198,6 +198,30 @@ open class NewToki(override val name: String, private val defaultBaseUrl: String
         Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
     }
 
+    override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
+        val baseUrlPref = androidx.preference.EditTextPreference(screen.context).apply {
+            key = BASE_URL_PREF_TITLE
+            title = BASE_URL_PREF_TITLE
+            summary = BASE_URL_PREF_SUMMARY
+            this.setDefaultValue(defaultBaseUrl)
+            dialogTitle = BASE_URL_PREF_TITLE
+            dialogMessage = "Default: $defaultBaseUrl"
+
+            setOnPreferenceChangeListener { _, newValue ->
+                try {
+                    val res = preferences.edit().putString(BASE_URL_PREF, newValue as String).commit()
+                    Toast.makeText(screen.context, RESTART_TACHIYOMI, Toast.LENGTH_LONG).show()
+                    res
+                } catch (e: Exception) {
+                    e.printStackTrace()
+                    false
+                }
+            }
+        }
+
+        screen.addPreference(baseUrlPref)
+    }
+
     override fun setupPreferenceScreen(screen: PreferenceScreen) {
         val baseUrlPref = EditTextPreference(screen.context).apply {
             key = BASE_URL_PREF_TITLE
@@ -230,4 +254,4 @@ open class NewToki(override val name: String, private val defaultBaseUrl: String
         private const val BASE_URL_PREF_SUMMARY = "For temporary uses. Update extension will erase this setting."
         private const val RESTART_TACHIYOMI = "Restart Tachiyomi to apply new setting."
     }
-}
\ No newline at end of file
+}
diff --git a/src/ru/libmanga/build.gradle b/src/ru/libmanga/build.gradle
index 5513e01ea..aacbcfe05 100644
--- a/src/ru/libmanga/build.gradle
+++ b/src/ru/libmanga/build.gradle
@@ -5,7 +5,7 @@ ext {
     appName = 'Tachiyomi: MangaLib'
     pkgNameSuffix = 'ru.libmanga'
     extClass = '.LibManga'
-    extVersionCode = 8
+    extVersionCode = 9
     libVersion = '1.2'
 }
 
diff --git a/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt b/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt
index 46e50f3aa..52627846d 100644
--- a/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt
+++ b/src/ru/libmanga/src/eu/kanade/tachiyomi/extension/ru/libmanga/LibManga.kt
@@ -47,6 +47,29 @@ class LibManga : ConfigurableSource, HttpSource() {
 
     private val jsonParser = JsonParser()
 
+    override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
+        val serverPref = androidx.preference.ListPreference(screen.context).apply {
+            key = SERVER_PREF
+            title = SERVER_PREF_Title
+            entries = arrayOf("Основной", "Второй")
+            entryValues = arrayOf("main", "alt")
+            summary = "%s"
+
+            setOnPreferenceChangeListener { _, newValue ->
+                imageServerUrl = when(newValue){
+                    "main" -> "https://img2.mangalib.me"
+                    else -> "https://img3.mangalib.me"
+                }
+                true
+            }
+        }
+
+        if(!preferences.contains(SERVER_PREF))
+            preferences.edit().putString(SERVER_PREF, "main").apply()
+
+        screen.addPreference(serverPref)
+    }
+
     override fun setupPreferenceScreen(screen: PreferenceScreen) {
         val serverPref = ListPreference(screen.context).apply {
             key = SERVER_PREF
diff --git a/src/ru/mangaonlinebiz/build.gradle b/src/ru/mangaonlinebiz/build.gradle
index dac3ad675..c45e60f60 100644
--- a/src/ru/mangaonlinebiz/build.gradle
+++ b/src/ru/mangaonlinebiz/build.gradle
@@ -10,7 +10,6 @@ ext {
 }
 
 dependencies {
-    compileOnly project(':preference-stub')
     compileOnly 'com.google.code.gson:gson:2.8.5'
     compileOnly 'com.github.salomonbrys.kotson:kotson:2.5.0'
     compileOnly 'com.github.inorichi.injekt:injekt-core:65b0440'