diff --git a/src/ru/allhentai/build.gradle b/src/ru/allhentai/build.gradle
index 19ef91acd..7fc76ce23 100644
--- a/src/ru/allhentai/build.gradle
+++ b/src/ru/allhentai/build.gradle
@@ -5,7 +5,7 @@ ext {
     extName = 'AllHentai'
     pkgNameSuffix = 'ru.allhentai'
     extClass = '.AllHentai'
-    extVersionCode = 11
+    extVersionCode = 12
     containsNsfw = true
 }
 
diff --git a/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt b/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt
index 3c306d0c0..4ef696bf9 100644
--- a/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt
+++ b/src/ru/allhentai/src/eu/kanade/tachiyomi/extension/ru/allhentai/AllHentai.kt
@@ -146,7 +146,7 @@ class AllHentai : ConfigurableSource, ParsedHttpSource() {
         manga.author = authorElement
         manga.artist = infoElement.select("span.elem_illustrator").first()?.text()
         manga.genre = infoElement.select("span.elem_genre").text().split(",").plusElement(category).joinToString { it.trim() }
-        manga.description = infoElement.select("div.manga-description").text()
+        manga.description = document.select("div.manga-description").text()
         manga.status = parseStatus(infoElement.html())
         manga.thumbnail_url = infoElement.select("img").attr("data-full")
         return manga
diff --git a/src/ru/mintmanga/build.gradle b/src/ru/mintmanga/build.gradle
index 138ff9adb..9a385a629 100644
--- a/src/ru/mintmanga/build.gradle
+++ b/src/ru/mintmanga/build.gradle
@@ -5,7 +5,7 @@ ext {
     extName = 'Mintmanga'
     pkgNameSuffix = 'ru.mintmanga'
     extClass = '.Mintmanga'
-    extVersionCode = 32
+    extVersionCode = 33
 }
 
 dependencies {
diff --git a/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/Mintmanga.kt b/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/Mintmanga.kt
index c464946e6..bbfc4f259 100644
--- a/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/Mintmanga.kt
+++ b/src/ru/mintmanga/src/eu/kanade/tachiyomi/extension/ru/mintmanga/Mintmanga.kt
@@ -162,7 +162,7 @@ class Mintmanga : ParsedHttpSource() {
         if (infoElement.select(".another-names").isNotEmpty()) {
             altName = "Альтернативные названия:\n" + infoElement.select(".another-names").text() + "\n\n"
         }
-        manga.description = ratingStar + " " + ratingValue + "[ⓘ" + ratingValueOver + "]" + " (голосов: " + ratingVotes + ")\n" + altName + infoElement.select("div.manga-description").text()
+        manga.description = ratingStar + " " + ratingValue + "[ⓘ" + ratingValueOver + "]" + " (голосов: " + ratingVotes + ")\n" + altName + document.select("div.manga-description").text()
         manga.status = parseStatus(infoElement.html())
         manga.thumbnail_url = infoElement.select("img").attr("data-full")
         return manga
diff --git a/src/ru/readmanga/build.gradle b/src/ru/readmanga/build.gradle
index 8ebfdb0b0..a505a936a 100644
--- a/src/ru/readmanga/build.gradle
+++ b/src/ru/readmanga/build.gradle
@@ -5,7 +5,7 @@ ext {
     extName = 'Readmanga'
     pkgNameSuffix = 'ru.readmanga'
     extClass = '.Readmanga'
-    extVersionCode = 31
+    extVersionCode = 32
 }
 
 dependencies {
diff --git a/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/Readmanga.kt b/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/Readmanga.kt
index 7637217a0..d1eef5d04 100644
--- a/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/Readmanga.kt
+++ b/src/ru/readmanga/src/eu/kanade/tachiyomi/extension/ru/readmanga/Readmanga.kt
@@ -30,7 +30,7 @@ class Readmanga : ParsedHttpSource() {
 
     override val name = "Readmanga"
 
-    override val baseUrl = "https://readmanga.live"
+    override val baseUrl = "https://readmanga.io"
 
     override val lang = "ru"
 
@@ -41,6 +41,11 @@ class Readmanga : ParsedHttpSource() {
     override val client: OkHttpClient = network.client.newBuilder()
         .addNetworkInterceptor(rateLimitInterceptor).build()
 
+    override fun headersBuilder() = Headers.Builder().apply {
+        add("User-Agent", "readmangafun")
+        add("Referer", baseUrl)
+    }
+
     override fun popularMangaSelector() = "div.tile"
 
     override fun latestUpdatesSelector() = popularMangaSelector()
@@ -163,7 +168,7 @@ class Readmanga : ParsedHttpSource() {
         if (infoElement.select(".another-names").isNotEmpty()) {
             altName = "Альтернативные названия:\n" + infoElement.select(".another-names").text() + "\n\n"
         }
-        manga.description = ratingStar + " " + ratingValue + "[ⓘ" + ratingValueOver + "]" + " (голосов: " + ratingVotes + ")\n" + altName + infoElement.select("div.manga-description").text()
+        manga.description = ratingStar + " " + ratingValue + "[ⓘ" + ratingValueOver + "]" + " (голосов: " + ratingVotes + ")\n" + altName + document.select("div.manga-description").text()
         manga.status = parseStatus(infoElement.html())
         manga.thumbnail_url = infoElement.select("img").attr("data-full")
         return manga
diff --git a/src/ru/selfmanga/build.gradle b/src/ru/selfmanga/build.gradle
index 03d2a62ec..4de82ff58 100644
--- a/src/ru/selfmanga/build.gradle
+++ b/src/ru/selfmanga/build.gradle
@@ -5,7 +5,11 @@ ext {
     extName = 'Selfmanga'
     pkgNameSuffix = 'ru.selfmanga'
     extClass = '.Selfmanga'
-    extVersionCode = 10
+    extVersionCode = 11
+}
+
+dependencies {
+    implementation project(':lib-ratelimit')
 }
 
 apply from: "$rootDir/common.gradle"
diff --git a/src/ru/selfmanga/src/eu/kanade/tachiyomi/extension/ru/selfmanga/Selfmanga.kt b/src/ru/selfmanga/src/eu/kanade/tachiyomi/extension/ru/selfmanga/Selfmanga.kt
index e111ea8c7..a184e78f3 100644
--- a/src/ru/selfmanga/src/eu/kanade/tachiyomi/extension/ru/selfmanga/Selfmanga.kt
+++ b/src/ru/selfmanga/src/eu/kanade/tachiyomi/extension/ru/selfmanga/Selfmanga.kt
@@ -1,5 +1,6 @@
 package eu.kanade.tachiyomi.extension.ru.selfmanga
 
+import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor
 import eu.kanade.tachiyomi.network.GET
 import eu.kanade.tachiyomi.source.model.Filter
 import eu.kanade.tachiyomi.source.model.FilterList
@@ -9,6 +10,7 @@ import eu.kanade.tachiyomi.source.model.SManga
 import eu.kanade.tachiyomi.source.online.ParsedHttpSource
 import okhttp3.Headers
 import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
+import okhttp3.OkHttpClient
 import okhttp3.Request
 import okhttp3.Response
 import org.jsoup.nodes.Document
@@ -28,6 +30,11 @@ class Selfmanga : ParsedHttpSource() {
 
     override val supportsLatest = true
 
+    private val rateLimitInterceptor = RateLimitInterceptor(2)
+
+    override val client: OkHttpClient = network.client.newBuilder()
+        .addNetworkInterceptor(rateLimitInterceptor).build()
+
     override fun popularMangaSelector() = "div.tile"
 
     override fun latestUpdatesSelector() = popularMangaSelector()
@@ -91,7 +98,7 @@ class Selfmanga : ParsedHttpSource() {
         manga.title = document.select("h1.names .name").text()
         manga.author = infoElement.select("span.elem_author").first()?.text()
         manga.genre = infoElement.select("span.elem_genre").text().replace(" ,", ",")
-        manga.description = infoElement.select("div.manga-description").text()
+        manga.description = document.select("div.manga-description").text()
         manga.status = parseStatus(infoElement.html())
         manga.thumbnail_url = infoElement.select("img").attr("data-full")
         return manga