diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt
index 73de93dac..428bf609a 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt
@@ -1,25 +1,17 @@
 package eu.kanade.tachiyomi.ui.browse.migration.search
 
-import android.app.Dialog
 import android.os.Bundle
 import android.view.Menu
 import android.view.MenuInflater
 import androidx.appcompat.widget.SearchView
 import androidx.core.os.bundleOf
-import com.afollestad.materialdialogs.MaterialDialog
-import com.afollestad.materialdialogs.list.listItemsMultiChoice
-import com.bluelinelabs.conductor.Controller
 import eu.kanade.tachiyomi.R
 import eu.kanade.tachiyomi.data.database.DatabaseHelper
 import eu.kanade.tachiyomi.data.database.models.Manga
-import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 import eu.kanade.tachiyomi.source.CatalogueSource
 import eu.kanade.tachiyomi.source.SourceManager
-import eu.kanade.tachiyomi.ui.base.controller.DialogController
 import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
-import eu.kanade.tachiyomi.ui.browse.migration.MigrationFlags
 import eu.kanade.tachiyomi.ui.browse.migration.advanced.process.MigrationListController
-import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrationInterface
 import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchController
 import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchPresenter
 import kotlinx.coroutines.flow.filter
@@ -29,7 +21,6 @@ import reactivecircus.flowbinding.appcompat.QueryTextEvent
 import reactivecircus.flowbinding.appcompat.queryTextEvents
 import uy.kohesive.injekt.Injekt
 import uy.kohesive.injekt.api.get
-import uy.kohesive.injekt.injectLazy
 
 class SearchController(
     private var manga: Manga? = null,
@@ -41,19 +32,17 @@ class SearchController(
         SOURCES to sources?.map { it.id }?.toLongArray()
     )
 ) {
-
-    private var newManga: Manga? = null
-    private var progress = 1
-    var totalProgress = 0
-
-    constructor(mangaId: Long, sources: LongArray) :
+    constructor(targetController: MigrationListController?, mangaId: Long, sources: LongArray) :
         this(
             Injekt.get<DatabaseHelper>().getManga(mangaId).executeAsBlocking(),
             sources.map { Injekt.get<SourceManager>().getOrStub(it) }.filterIsInstance<CatalogueSource>()
-        )
+        ) {
+            this.targetController = targetController
+        }
 
     @Suppress("unused")
     constructor(bundle: Bundle) : this(
+        null,
         bundle.getLong(OLD_MANGA),
         bundle.getLongArray(SOURCES) ?: LongArray(0)
     )
@@ -65,14 +54,6 @@ class SearchController(
         setHasOptionsMenu(true)
     }
 
-    override fun getTitle(): String? {
-        return if (totalProgress > 1) {
-            "($progress/$totalProgress) ${super.getTitle()}"
-        } else {
-            super.getTitle()
-        }
-    }
-
     override fun createPresenter(): GlobalSearchPresenter {
         return SearchPresenter(
             initialQuery,
@@ -81,45 +62,12 @@ class SearchController(
         )
     }
 
-    fun migrateManga(manga: Manga, newManga: Manga) {
-        val target = targetController as? MigrationInterface ?: return
-
-        val nextManga = target.migrateManga(manga, newManga, true)
-        replaceWithNewSearchController(nextManga)
-    }
-
-    fun copyManga(manga: Manga, newManga: Manga) {
-        val target = targetController as? MigrationInterface ?: return
-
-        val nextManga = target.migrateManga(manga, newManga, false)
-        replaceWithNewSearchController(nextManga)
-    }
-
-    private fun replaceWithNewSearchController(manga: Manga?) {
-        if (manga != null) {
-            // router.popCurrentController()
-            val searchController = SearchController(manga)
-            searchController.targetController = targetController
-            searchController.progress = progress + 1
-            searchController.totalProgress = totalProgress
-            router.replaceTopController(searchController.withFadeTransaction())
-        } else router.popController(this)
-    }
-
     override fun onMangaClick(manga: Manga) {
-        if (targetController is MigrationListController) {
-            val migrationListController = targetController as? MigrationListController
-            val sourceManager = Injekt.get<SourceManager>()
-            val source = sourceManager.get(manga.source) ?: return
-            migrationListController?.useMangaForMigration(manga, source)
-            router.popCurrentController()
-            return
-        }
-        newManga = manga
-        val dialog =
-            MigrationDialog(this.manga ?: return, newManga ?: return, this)
-        dialog.targetController = this
-        dialog.showDialog(router)
+        val migrationListController = targetController as MigrationListController
+        val sourceManager = Injekt.get<SourceManager>()
+        val source = sourceManager.get(manga.source) ?: return
+        migrationListController.useMangaForMigration(manga, source)
+        router.popCurrentController()
     }
 
     override fun onMangaLongClick(manga: Manga) {
@@ -127,69 +75,6 @@ class SearchController(
         super.onMangaClick(manga)
     }
 
-    class MigrationDialog(bundle: Bundle) : DialogController(bundle) {
-
-        constructor(manga: Manga, newManga: Manga, callingController: Controller) : this(
-            bundleOf(
-                MANGA_KEY to manga,
-                NEW_MANGA_KEY to newManga
-            )
-        ) {
-            this.callingController = callingController
-        }
-
-        private val manga: Manga = args.getSerializable(MANGA_KEY) as Manga
-        private val newManga: Manga = args.getSerializable(NEW_MANGA_KEY) as Manga
-        private var callingController: Controller? = null
-
-        private val preferences: PreferencesHelper by injectLazy()
-
-        override fun onCreateDialog(savedViewState: Bundle?): Dialog {
-            val prefValue = preferences.migrateFlags().get()
-            val callingController = callingController
-
-            val preselected =
-                MigrationFlags.getEnabledFlagsPositions(
-                    prefValue
-                )
-
-            return MaterialDialog(activity!!)
-                .title(R.string.migration_dialog_what_to_include)
-                .listItemsMultiChoice(
-                    items = MigrationFlags.titles.map { resources?.getString(it) as CharSequence },
-                    initialSelection = preselected.toIntArray()
-                ) { _, positions, _ ->
-                    // Save current settings for the next time
-                    val newValue =
-                        MigrationFlags.getFlagsFromPositions(
-                            positions.toTypedArray()
-                        )
-                    preferences.migrateFlags().set(newValue)
-                }
-                .positiveButton(R.string.migrate) {
-                    if (callingController != null) {
-                        if (callingController.javaClass == SourceSearchController::class.java) {
-                            router.popController(callingController)
-                        }
-                    }
-                    (targetController as? SearchController)?.migrateManga(manga, newManga)
-                }
-                .negativeButton(R.string.copy) {
-                    if (callingController != null) {
-                        if (callingController.javaClass == SourceSearchController::class.java) {
-                            router.popController(callingController)
-                        }
-                    }
-                    (targetController as? SearchController)?.copyManga(manga, newManga)
-                }
-                .neutralButton(android.R.string.cancel)
-        }
-        companion object {
-            const val MANGA_KEY = "manga_key"
-            const val NEW_MANGA_KEY = "new_manga_key"
-        }
-    }
-
     /**
      * Adds items to the options menu.
      *
@@ -223,7 +108,7 @@ class SearchController(
     override fun onTitleClick(source: CatalogueSource) {
         presenter.preferences.lastUsedSource().set(source.id)
 
-        router.pushController(SourceSearchController(manga!!, source, presenter.query).withFadeTransaction())
+        router.pushController(SourceSearchController(targetController as? MigrationListController ?: return, manga!!, source, presenter.query).withFadeTransaction())
     }
 
     companion object {
diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt
index 4dde23e0a..0c9ec0b42 100644
--- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt
+++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt
@@ -5,33 +5,41 @@ import android.view.View
 import androidx.core.os.bundleOf
 import eu.kanade.tachiyomi.data.database.models.Manga
 import eu.kanade.tachiyomi.source.CatalogueSource
+import eu.kanade.tachiyomi.source.SourceManager
+import eu.kanade.tachiyomi.ui.browse.migration.advanced.process.MigrationListController
 import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController
 import eu.kanade.tachiyomi.ui.browse.source.browse.SourceItem
+import uy.kohesive.injekt.Injekt
+import uy.kohesive.injekt.api.get
 
 class SourceSearchController(
     bundle: Bundle
 ) : BrowseSourceController(bundle) {
 
-    constructor(manga: Manga, source: CatalogueSource, searchQuery: String? = null) : this(
+    constructor(targetController: MigrationListController, manga: Manga, source: CatalogueSource, searchQuery: String? = null) : this(
         bundleOf(
             SOURCE_ID_KEY to source.id,
             MANGA_KEY to manga,
             SEARCH_QUERY_KEY to searchQuery
         )
-    )
-    private var oldManga: Manga = args.getSerializable(MANGA_KEY) as Manga
-    private var newManga: Manga? = null
+    ) {
+        this.targetController = targetController
+    }
 
     override fun onItemClick(view: View, position: Int): Boolean {
-        val item = adapter?.getItem(position) as? SourceItem ?: return false
-        newManga = item.manga
-        val searchController = router.backstack.findLast { it.controller().javaClass == SearchController::class.java }?.controller() as SearchController?
-        val dialog =
-            SearchController.MigrationDialog(oldManga, newManga!!, this)
-        dialog.targetController = searchController
-        dialog.showDialog(router)
+        val manga = (adapter?.getItem(position) as? SourceItem)?.manga ?: return false
+        val migrationListController = targetController as? MigrationListController ?: return false
+        val sourceManager = Injekt.get<SourceManager>()
+        val source = sourceManager.get(manga.source) ?: return false
+        migrationListController.useMangaForMigration(manga, source)
+        router.popCurrentController()
+        router.popCurrentController()
         return true
     }
+
+    override fun onItemLongClick(position: Int) {
+        view?.let { super.onItemClick(it, position) }
+    }
     private companion object {
         const val MANGA_KEY = "oldManga"
     }