diff --git a/src/it/dreamsub/AndroidManifest.xml b/src/it/dreamsub/AndroidManifest.xml
deleted file mode 100644
index acb4de356..000000000
--- a/src/it/dreamsub/AndroidManifest.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/src/it/dreamsub/build.gradle b/src/it/dreamsub/build.gradle
deleted file mode 100644
index 2020f385e..000000000
--- a/src/it/dreamsub/build.gradle
+++ /dev/null
@@ -1,13 +0,0 @@
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-
-ext {
- extName = 'DreamSub'
- pkgNameSuffix = 'it.dreamsub'
- extClass = '.DreamSub'
- extVersionCode = 2
- libVersion = '12'
- containsNsfw = true
-}
-
-apply from: "$rootDir/common.gradle"
diff --git a/src/it/dreamsub/res/mipmap-hdpi/ic_launcher.png b/src/it/dreamsub/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index bc9850c4b..000000000
Binary files a/src/it/dreamsub/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/dreamsub/res/mipmap-mdpi/ic_launcher.png b/src/it/dreamsub/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index f276482be..000000000
Binary files a/src/it/dreamsub/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/dreamsub/res/mipmap-xhdpi/ic_launcher.png b/src/it/dreamsub/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index bdd6be2fc..000000000
Binary files a/src/it/dreamsub/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/dreamsub/res/mipmap-xxhdpi/ic_launcher.png b/src/it/dreamsub/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 00b7c725b..000000000
Binary files a/src/it/dreamsub/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/dreamsub/res/mipmap-xxxhdpi/ic_launcher.png b/src/it/dreamsub/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index ad2cd36c0..000000000
Binary files a/src/it/dreamsub/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/it/dreamsub/src/eu/kanade/tachiyomi/animeextension/it/dreamsub/DreamSub.kt b/src/it/dreamsub/src/eu/kanade/tachiyomi/animeextension/it/dreamsub/DreamSub.kt
deleted file mode 100644
index 755679a64..000000000
--- a/src/it/dreamsub/src/eu/kanade/tachiyomi/animeextension/it/dreamsub/DreamSub.kt
+++ /dev/null
@@ -1,474 +0,0 @@
-package eu.kanade.tachiyomi.animeextension.it.dreamsub
-
-import android.annotation.SuppressLint
-import android.app.Application
-import android.content.SharedPreferences
-import androidx.preference.ListPreference
-import androidx.preference.PreferenceScreen
-import eu.kanade.tachiyomi.animesource.ConfigurableAnimeSource
-import eu.kanade.tachiyomi.animesource.model.AnimeFilter
-import eu.kanade.tachiyomi.animesource.model.AnimeFilterList
-import eu.kanade.tachiyomi.animesource.model.SAnime
-import eu.kanade.tachiyomi.animesource.model.SEpisode
-import eu.kanade.tachiyomi.animesource.model.Video
-import eu.kanade.tachiyomi.animesource.online.ParsedAnimeHttpSource
-import eu.kanade.tachiyomi.network.GET
-import eu.kanade.tachiyomi.util.asJsoup
-import okhttp3.Headers
-import okhttp3.OkHttpClient
-import okhttp3.Request
-import okhttp3.Response
-import org.jsoup.nodes.Document
-import org.jsoup.nodes.Element
-import uy.kohesive.injekt.Injekt
-import uy.kohesive.injekt.api.get
-import java.lang.Exception
-import java.text.SimpleDateFormat
-
-class DreamSub : ConfigurableAnimeSource, ParsedAnimeHttpSource() {
-
- override val name = "DreamSub"
-
- override val baseUrl = "https://dreamsub.cc"
-
- override val lang = "it"
-
- override val supportsLatest = true
-
- override val client: OkHttpClient = network.cloudflareClient
-
- private val preferences: SharedPreferences by lazy {
- Injekt.get().getSharedPreferences("source_$id", 0x0000)
- }
-
- override fun popularAnimeSelector(): String = "div.goblock-content.go-full div.tvBlock"
-
- override fun popularAnimeRequest(page: Int): Request = GET("$baseUrl/search?page=${page - 1}")
-
- override fun popularAnimeFromElement(element: Element): SAnime {
- val anime = SAnime.create()
- anime.url = element.selectFirst("div.showStreaming a").attr("href")
- anime.title = element.select("div.tvTitle").text()
- return anime
- }
-
- override fun popularAnimeNextPageSelector(): String = "li.page-item.active:not(li:last-child)"
-
- override fun episodeListParse(response: Response): List {
- val document = response.asJsoup()
- if (document.selectFirst(episodeListSelector()) == null) {
- return oneEpisodeParse(document)
- }
- return document.select(episodeListSelector()).map { episodeFromElement(it) }.reversed()
- }
-
- private fun formatDate(scrape_time: String): String = scrape_time.filter { !it.isWhitespace() }
- .replace("Gennaio", "-01-")
- .replace("Febbraio", "-02-")
- .replace("Marzo", "-03-")
- .replace("Aprile", "-04-")
- .replace("Maggio", "-05-")
- .replace("Giugno", "-06-")
- .replace("Luglio", "-07-")
- .replace("Agosto", "-08-")
- .replace("Settembre", "-09-")
- .replace("Ottobre", "-10-")
- .replace("Novembre", "-11-")
- .replace("Dicembre", "-12-")
-
- @SuppressLint("SimpleDateFormat")
- private fun parseDate(scrape_time: String): Long {
- return SimpleDateFormat("dd-MM-yyyy").parse(scrape_time).time
- }
-
- private fun oneEpisodeParse(document: Document): List {
- val episode = SEpisode.create()
- episode.setUrlWithoutDomain(document.location())
- episode.episode_number = 1F
- episode.name = document.selectFirst("ol.breadcrumb li a").text()
- episode.date_upload = parseDate(
- formatDate(
- document.select("div.dcis").text()
- .substringBefore(", Conclusa").substringAfter("Data:")
- )
- )
- return listOf(episode)
- }
-
- override fun episodeListSelector() = "div.goblock.server-list li.ep-item:has(div.sli-btn)"
-
- override fun episodeFromElement(element: Element): SEpisode {
- val episode = SEpisode.create()
- episode.setUrlWithoutDomain(baseUrl + element.selectFirst("div.sli-btn a").attr("href"))
- val epText = element.selectFirst("div.sli-name a").text()
- episode.episode_number = epText.substringAfter("Episodio ").substringBefore(":").toFloat()
- episode.name = epText.replace(": TBA", "")
- episode.date_upload = parseDate(formatDate(element.selectFirst("div.sli-name span").text()))
- return episode
- }
-
- override fun videoListSelector() = "div#main-content.onlyDesktop a.dwButton"
-
- override fun videoFromElement(element: Element): Video {
- val referer = element.ownerDocument().location()
- val url = element.attr("href")
- val quality = element.firstElementSibling().text() + element.text()
- return Video(url, quality, url, null, Headers.headersOf("Referer", referer))
- }
-
- override fun List