diff --git a/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt b/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt
index e237a103e4..6136a20557 100644
--- a/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt
+++ b/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt
@@ -178,7 +178,7 @@ class UiAllScreensSanityTest {
         navigateToRoomSettings()
 
         // Long click on the message
-        onView(withId(R.id.recyclerView))
+        onView(withId(R.id.timelineRecyclerView))
                 .perform(
                         actionOnItem<RecyclerView.ViewHolder>(
                                 hasDescendant(withText("Hello world!")),
diff --git a/vector/src/debug/java/im/vector/app/features/debug/sas/DebugSasEmojiActivity.kt b/vector/src/debug/java/im/vector/app/features/debug/sas/DebugSasEmojiActivity.kt
index f22784bc12..869058eff6 100644
--- a/vector/src/debug/java/im/vector/app/features/debug/sas/DebugSasEmojiActivity.kt
+++ b/vector/src/debug/java/im/vector/app/features/debug/sas/DebugSasEmojiActivity.kt
@@ -30,12 +30,12 @@ class DebugSasEmojiActivity : AppCompatActivity() {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.fragment_generic_recycler)
         val controller = SasEmojiController()
-        recyclerView.configureWith(controller)
+        genericRecyclerView.configureWith(controller)
         controller.setData(SasState(getAllVerificationEmojis()))
     }
 
     override fun onDestroy() {
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
         super.onDestroy()
     }
 }
diff --git a/vector/src/main/java/im/vector/app/features/discovery/DiscoverySettingsFragment.kt b/vector/src/main/java/im/vector/app/features/discovery/DiscoverySettingsFragment.kt
index bfbc00b15a..c43f223d1f 100644
--- a/vector/src/main/java/im/vector/app/features/discovery/DiscoverySettingsFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/discovery/DiscoverySettingsFragment.kt
@@ -55,7 +55,7 @@ class DiscoverySettingsFragment @Inject constructor(
         sharedViewModel = activityViewModelProvider.get(DiscoverySharedViewModel::class.java)
 
         controller.listener = this
-        recyclerView.configureWith(controller)
+        genericRecyclerView.configureWith(controller)
 
         sharedViewModel.navigateEvent.observeEvent(this) {
             when (it) {
@@ -74,7 +74,7 @@ class DiscoverySettingsFragment @Inject constructor(
     }
 
     override fun onDestroyView() {
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
         controller.listener = null
         super.onDestroyView()
     }
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt
index 9c6c473a7f..2cf21066d6 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt
@@ -508,7 +508,7 @@ class RoomDetailFragment @Inject constructor(
         modelBuildListener = null
         autoCompleter.clear()
         debouncer.cancelAll()
-        recyclerView.cleanup()
+        timelineRecyclerView.cleanup()
 
         super.onDestroyView()
     }
@@ -535,7 +535,7 @@ class RoomDetailFragment @Inject constructor(
         jumpToBottomViewVisibilityManager = JumpToBottomViewVisibilityManager(
                 jumpToBottomView,
                 debouncer,
-                recyclerView,
+                timelineRecyclerView,
                 layoutManager
         )
     }
@@ -558,7 +558,7 @@ class RoomDetailFragment @Inject constructor(
         if (scrollPosition == null) {
             scrollOnHighlightedEventCallback.scheduleScrollTo(action.eventId)
         } else {
-            recyclerView.stopScroll()
+            timelineRecyclerView.stopScroll()
             layoutManager.scrollToPosition(scrollPosition)
         }
     }
@@ -969,14 +969,14 @@ class RoomDetailFragment @Inject constructor(
         timelineEventController.callback = this
         timelineEventController.timeline = roomDetailViewModel.timeline
 
-        recyclerView.trackItemsVisibilityChange()
+        timelineRecyclerView.trackItemsVisibilityChange()
         layoutManager = LinearLayoutManager(context, RecyclerView.VERTICAL, true)
         val stateRestorer = LayoutManagerStateRestorer(layoutManager).register()
         scrollOnNewMessageCallback = ScrollOnNewMessageCallback(layoutManager, timelineEventController)
-        scrollOnHighlightedEventCallback = ScrollOnHighlightedEventCallback(recyclerView, layoutManager, timelineEventController)
-        recyclerView.layoutManager = layoutManager
-        recyclerView.itemAnimator = null
-        recyclerView.setHasFixedSize(true)
+        scrollOnHighlightedEventCallback = ScrollOnHighlightedEventCallback(timelineRecyclerView, layoutManager, timelineEventController)
+        timelineRecyclerView.layoutManager = layoutManager
+        timelineRecyclerView.itemAnimator = null
+        timelineRecyclerView.setHasFixedSize(true)
         modelBuildListener = OnModelBuildFinishedListener {
             it.dispatchTo(stateRestorer)
             it.dispatchTo(scrollOnNewMessageCallback)
@@ -985,7 +985,7 @@ class RoomDetailFragment @Inject constructor(
             jumpToBottomViewVisibilityManager.maybeShowJumpToBottomViewVisibilityWithDelay()
         }
         timelineEventController.addModelBuildListener(modelBuildListener)
-        recyclerView.adapter = timelineEventController.adapter
+        timelineRecyclerView.adapter = timelineEventController.adapter
 
         if (vectorPreferences.swipeToReplyIsEnabled()) {
             val quickReplyHandler = object : RoomMessageTouchHelperCallback.QuickReplayHandler {
@@ -1015,9 +1015,9 @@ class RoomDetailFragment @Inject constructor(
             }
             val swipeCallback = RoomMessageTouchHelperCallback(requireContext(), R.drawable.ic_reply, quickReplyHandler)
             val touchHelper = ItemTouchHelper(swipeCallback)
-            touchHelper.attachToRecyclerView(recyclerView)
+            touchHelper.attachToRecyclerView(timelineRecyclerView)
         }
-        recyclerView.addGlidePreloader(
+        timelineRecyclerView.addGlidePreloader(
                 epoxyController = timelineEventController,
                 requestManager = GlideApp.with(this),
                 preloader = glidePreloader { requestManager, epoxyModel: MessageImageVideoItem, _ ->
diff --git a/vector/src/main/java/im/vector/app/features/reactions/EmojiSearchResultFragment.kt b/vector/src/main/java/im/vector/app/features/reactions/EmojiSearchResultFragment.kt
index 685f0dd64e..28df628cf1 100644
--- a/vector/src/main/java/im/vector/app/features/reactions/EmojiSearchResultFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/reactions/EmojiSearchResultFragment.kt
@@ -41,12 +41,12 @@ class EmojiSearchResultFragment @Inject constructor(
         super.onViewCreated(view, savedInstanceState)
         sharedViewModel = activityViewModelProvider.get(EmojiChooserViewModel::class.java)
         epoxyController.listener = this
-        recyclerView.configureWith(epoxyController, showDivider = true)
+        genericRecyclerView.configureWith(epoxyController, showDivider = true)
     }
 
     override fun onDestroyView() {
         epoxyController.listener = null
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
         super.onDestroyView()
     }
 
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/banned/RoomBannedMemberListFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/banned/RoomBannedMemberListFragment.kt
index 81b977ac97..797e6c8aa3 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/banned/RoomBannedMemberListFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/banned/RoomBannedMemberListFragment.kt
@@ -56,7 +56,7 @@ class RoomBannedMemberListFragment @Inject constructor(
         roomMemberListController.callback = this
         setupToolbar(roomSettingsToolbar)
         setupSearchView()
-        recyclerView.configureWith(roomMemberListController, hasFixedSize = true)
+        roomSettingsRecyclerView.configureWith(roomMemberListController, hasFixedSize = true)
 
         viewModel.observeViewEvents {
             when (it) {
@@ -83,7 +83,7 @@ class RoomBannedMemberListFragment @Inject constructor(
     }
 
     override fun onDestroyView() {
-        recyclerView.cleanup()
+        roomSettingsRecyclerView.cleanup()
         super.onDestroyView()
     }
 
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/members/RoomMemberListFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/members/RoomMemberListFragment.kt
index 1b3e33a161..fb42b8ce27 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/members/RoomMemberListFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/members/RoomMemberListFragment.kt
@@ -57,7 +57,7 @@ class RoomMemberListFragment @Inject constructor(
         setupToolbar(roomSettingsToolbar)
         setupSearchView()
         setupInviteUsersButton()
-        recyclerView.configureWith(roomMemberListController, hasFixedSize = true)
+        roomSettingsRecyclerView.configureWith(roomMemberListController, hasFixedSize = true)
     }
 
     private fun setupInviteUsersButton() {
@@ -65,7 +65,7 @@ class RoomMemberListFragment @Inject constructor(
             navigator.openInviteUsersToRoom(requireContext(), roomProfileArgs.roomId)
         }
         // Hide FAB when list is scrolling
-        recyclerView.addOnScrollListener(
+        roomSettingsRecyclerView.addOnScrollListener(
                 object : RecyclerView.OnScrollListener() {
                     override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
                         when (newState) {
@@ -99,7 +99,7 @@ class RoomMemberListFragment @Inject constructor(
     }
 
     override fun onDestroyView() {
-        recyclerView.cleanup()
+        roomSettingsRecyclerView.cleanup()
         super.onDestroyView()
     }
 
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsFragment.kt
index 57521f7d80..81c8ba4c77 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/settings/RoomSettingsFragment.kt
@@ -72,7 +72,7 @@ class RoomSettingsFragment @Inject constructor(
         super.onViewCreated(view, savedInstanceState)
         controller.callback = this
         setupToolbar(roomSettingsToolbar)
-        recyclerView.configureWith(controller, hasFixedSize = true)
+        roomSettingsRecyclerView.configureWith(controller, hasFixedSize = true)
         waiting_view_status_text.setText(R.string.please_wait)
         waiting_view_status_text.isVisible = true
 
@@ -93,7 +93,8 @@ class RoomSettingsFragment @Inject constructor(
     }
 
     override fun onDestroyView() {
-        recyclerView.cleanup()
+        controller.callback = null
+        roomSettingsRecyclerView.cleanup()
         super.onDestroyView()
     }
 
diff --git a/vector/src/main/java/im/vector/app/features/settings/crosssigning/CrossSigningSettingsFragment.kt b/vector/src/main/java/im/vector/app/features/settings/crosssigning/CrossSigningSettingsFragment.kt
index ebeac5aca1..f21ec2e8f4 100644
--- a/vector/src/main/java/im/vector/app/features/settings/crosssigning/CrossSigningSettingsFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/crosssigning/CrossSigningSettingsFragment.kt
@@ -68,12 +68,12 @@ class CrossSigningSettingsFragment @Inject constructor(
     }
 
     private fun setupRecyclerView() {
-        recyclerView.configureWith(controller, hasFixedSize = false, disableItemAnimation = true)
+        genericRecyclerView.configureWith(controller, hasFixedSize = false, disableItemAnimation = true)
         controller.interactionListener = this
     }
 
     override fun onDestroyView() {
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
         controller.interactionListener = null
         super.onDestroyView()
     }
diff --git a/vector/src/main/java/im/vector/app/features/settings/devices/VectorSettingsDevicesFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devices/VectorSettingsDevicesFragment.kt
index ae45989a81..a317536d5d 100644
--- a/vector/src/main/java/im/vector/app/features/settings/devices/VectorSettingsDevicesFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/devices/VectorSettingsDevicesFragment.kt
@@ -61,7 +61,7 @@ class VectorSettingsDevicesFragment @Inject constructor(
         waiting_view_status_text.setText(R.string.please_wait)
         waiting_view_status_text.isVisible = true
         devicesController.callback = this
-        recyclerView.configureWith(devicesController, showDivider = true)
+        genericRecyclerView.configureWith(devicesController, showDivider = true)
         viewModel.observeViewEvents {
             when (it) {
                 is DevicesViewEvents.Loading            -> showLoading(it.message)
@@ -97,7 +97,7 @@ class VectorSettingsDevicesFragment @Inject constructor(
 
     override fun onDestroyView() {
         devicesController.callback = null
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
         super.onDestroyView()
     }
 
diff --git a/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataFragment.kt
index 07508f41a2..40b910c1ab 100644
--- a/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataFragment.kt
@@ -57,13 +57,13 @@ class AccountDataFragment @Inject constructor(
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
-        recyclerView.configureWith(epoxyController, showDivider = true)
+        genericRecyclerView.configureWith(epoxyController, showDivider = true)
         epoxyController.interactionListener = this
     }
 
     override fun onDestroyView() {
         super.onDestroyView()
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
         epoxyController.interactionListener = null
     }
 
diff --git a/vector/src/main/java/im/vector/app/features/settings/devtools/GossipingEventsPaperTrailFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devtools/GossipingEventsPaperTrailFragment.kt
index 0ceb8e148d..af8881ba92 100644
--- a/vector/src/main/java/im/vector/app/features/settings/devtools/GossipingEventsPaperTrailFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/devtools/GossipingEventsPaperTrailFragment.kt
@@ -50,13 +50,13 @@ class GossipingEventsPaperTrailFragment @Inject constructor(
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
-        recyclerView.configureWith(epoxyController, showDivider = true)
+        genericRecyclerView.configureWith(epoxyController, showDivider = true)
         epoxyController.interactionListener = this
     }
 
     override fun onDestroyView() {
         super.onDestroyView()
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
         epoxyController.interactionListener = null
     }
 
diff --git a/vector/src/main/java/im/vector/app/features/settings/devtools/IncomingKeyRequestListFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devtools/IncomingKeyRequestListFragment.kt
index 35f46d9c74..6e205ceceb 100644
--- a/vector/src/main/java/im/vector/app/features/settings/devtools/IncomingKeyRequestListFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/devtools/IncomingKeyRequestListFragment.kt
@@ -45,11 +45,11 @@ class IncomingKeyRequestListFragment @Inject constructor(
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
-        recyclerView.configureWith(epoxyController, showDivider = true)
+        genericRecyclerView.configureWith(epoxyController, showDivider = true)
     }
 
     override fun onDestroyView() {
         super.onDestroyView()
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
     }
 }
diff --git a/vector/src/main/java/im/vector/app/features/settings/devtools/OutgoingKeyRequestListFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devtools/OutgoingKeyRequestListFragment.kt
index a82b5dd6c9..20132d8047 100644
--- a/vector/src/main/java/im/vector/app/features/settings/devtools/OutgoingKeyRequestListFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/devtools/OutgoingKeyRequestListFragment.kt
@@ -41,13 +41,13 @@ class OutgoingKeyRequestListFragment @Inject constructor(
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
-        recyclerView.configureWith(epoxyController, showDivider = true)
+        genericRecyclerView.configureWith(epoxyController, showDivider = true)
 //        epoxyController.interactionListener = this
     }
 
     override fun onDestroyView() {
         super.onDestroyView()
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
 //        epoxyController.interactionListener = null
     }
 }
diff --git a/vector/src/main/java/im/vector/app/features/settings/ignored/VectorSettingsIgnoredUsersFragment.kt b/vector/src/main/java/im/vector/app/features/settings/ignored/VectorSettingsIgnoredUsersFragment.kt
index 2588eef59b..5ad7258cec 100644
--- a/vector/src/main/java/im/vector/app/features/settings/ignored/VectorSettingsIgnoredUsersFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/ignored/VectorSettingsIgnoredUsersFragment.kt
@@ -49,7 +49,7 @@ class VectorSettingsIgnoredUsersFragment @Inject constructor(
         waiting_view_status_text.setText(R.string.please_wait)
         waiting_view_status_text.isVisible = true
         ignoredUsersController.callback = this
-        recyclerView.configureWith(ignoredUsersController)
+        genericRecyclerView.configureWith(ignoredUsersController)
         viewModel.observeViewEvents {
             when (it) {
                 is IgnoredUsersViewEvents.Loading -> showLoading(it.message)
@@ -60,7 +60,7 @@ class VectorSettingsIgnoredUsersFragment @Inject constructor(
 
     override fun onDestroyView() {
         ignoredUsersController.callback = null
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
         super.onDestroyView()
     }
 
diff --git a/vector/src/main/java/im/vector/app/features/settings/push/PushGatewaysFragment.kt b/vector/src/main/java/im/vector/app/features/settings/push/PushGatewaysFragment.kt
index e6e9ce3753..0075d8ef5a 100644
--- a/vector/src/main/java/im/vector/app/features/settings/push/PushGatewaysFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/push/PushGatewaysFragment.kt
@@ -59,11 +59,11 @@ class PushGatewaysFragment @Inject constructor(
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
-        recyclerView.configureWith(epoxyController, showDivider = true)
+        genericRecyclerView.configureWith(epoxyController, showDivider = true)
     }
 
     override fun onDestroyView() {
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
         super.onDestroyView()
     }
 
diff --git a/vector/src/main/java/im/vector/app/features/settings/push/PushRulesFragment.kt b/vector/src/main/java/im/vector/app/features/settings/push/PushRulesFragment.kt
index c361e21254..c5ad04380b 100644
--- a/vector/src/main/java/im/vector/app/features/settings/push/PushRulesFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/push/PushRulesFragment.kt
@@ -43,11 +43,11 @@ class PushRulesFragment @Inject constructor(
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
-        recyclerView.configureWith(epoxyController, showDivider = true)
+        genericRecyclerView.configureWith(epoxyController, showDivider = true)
     }
 
     override fun onDestroyView() {
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
         super.onDestroyView()
     }
 
diff --git a/vector/src/main/java/im/vector/app/features/settings/threepids/ThreePidsSettingsFragment.kt b/vector/src/main/java/im/vector/app/features/settings/threepids/ThreePidsSettingsFragment.kt
index 81033281d8..12ff51dcbd 100644
--- a/vector/src/main/java/im/vector/app/features/settings/threepids/ThreePidsSettingsFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/threepids/ThreePidsSettingsFragment.kt
@@ -54,7 +54,7 @@ class ThreePidsSettingsFragment @Inject constructor(
 
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
-        recyclerView.configureWith(epoxyController)
+        genericRecyclerView.configureWith(epoxyController)
         epoxyController.interactionListener = this
 
         viewModel.observeViewEvents {
@@ -73,7 +73,7 @@ class ThreePidsSettingsFragment @Inject constructor(
 
     override fun onDestroyView() {
         super.onDestroyView()
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
         epoxyController.interactionListener = null
     }
 
diff --git a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutFragment.kt b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutFragment.kt
index 64b71356ec..dbd5028401 100644
--- a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutFragment.kt
@@ -70,12 +70,12 @@ class SoftLogoutFragment @Inject constructor(
     }
 
     private fun setupRecyclerView() {
-        recyclerView.configureWith(softLogoutController)
+        genericRecyclerView.configureWith(softLogoutController)
         softLogoutController.listener = this
     }
 
     override fun onDestroyView() {
-        recyclerView.cleanup()
+        genericRecyclerView.cleanup()
         softLogoutController.listener = null
         super.onDestroyView()
     }
@@ -121,7 +121,7 @@ class SoftLogoutFragment @Inject constructor(
     }
 
     private fun cleanupUi() {
-        recyclerView.hideKeyboard()
+        genericRecyclerView.hideKeyboard()
     }
 
     override fun forgetPasswordClicked() {
diff --git a/vector/src/main/java/im/vector/app/features/userdirectory/KnownUsersFragment.kt b/vector/src/main/java/im/vector/app/features/userdirectory/KnownUsersFragment.kt
index 0ca46cd154..ec684e8eea 100644
--- a/vector/src/main/java/im/vector/app/features/userdirectory/KnownUsersFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/userdirectory/KnownUsersFragment.kt
@@ -82,7 +82,7 @@ class KnownUsersFragment @Inject constructor(
 
     override fun onDestroyView() {
         knownUsersController.callback = null
-        recyclerView.cleanup()
+        knownUsersRecyclerView.cleanup()
         super.onDestroyView()
     }
 
@@ -124,7 +124,7 @@ class KnownUsersFragment @Inject constructor(
     private fun setupRecyclerView() {
         knownUsersController.callback = this
         // Don't activate animation as we might have way to much item animation when filtering
-        recyclerView.configureWith(knownUsersController, disableItemAnimation = true)
+        knownUsersRecyclerView.configureWith(knownUsersController, disableItemAnimation = true)
     }
 
     private fun setupFilterView() {
diff --git a/vector/src/main/java/im/vector/app/features/userdirectory/UserDirectoryFragment.kt b/vector/src/main/java/im/vector/app/features/userdirectory/UserDirectoryFragment.kt
index 8787946bf4..70ea9141e7 100644
--- a/vector/src/main/java/im/vector/app/features/userdirectory/UserDirectoryFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/userdirectory/UserDirectoryFragment.kt
@@ -28,7 +28,6 @@ import im.vector.app.core.extensions.hideKeyboard
 import im.vector.app.core.extensions.setupAsSearch
 import im.vector.app.core.extensions.showKeyboard
 import im.vector.app.core.platform.VectorBaseFragment
-import kotlinx.android.synthetic.main.fragment_create_direct_room_directory_users.recyclerView
 import kotlinx.android.synthetic.main.fragment_user_directory.*
 import org.matrix.android.sdk.api.session.user.model.User
 import javax.inject.Inject
@@ -51,14 +50,14 @@ class UserDirectoryFragment @Inject constructor(
     }
 
     override fun onDestroyView() {
-        recyclerView.cleanup()
+        userDirectoryRecyclerView.cleanup()
         directRoomController.callback = null
         super.onDestroyView()
     }
 
     private fun setupRecyclerView() {
         directRoomController.callback = this
-        recyclerView.configureWith(directRoomController)
+        userDirectoryRecyclerView.configureWith(directRoomController)
     }
 
     private fun setupSearchByMatrixIdView() {
diff --git a/vector/src/main/res/layout/fragment_create_direct_room.xml b/vector/src/main/res/layout/fragment_create_direct_room.xml
deleted file mode 100644
index 8d2bc68fa8..0000000000
--- a/vector/src/main/res/layout/fragment_create_direct_room.xml
+++ /dev/null
@@ -1,143 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="match_parent"
-        android:layout_height="match_parent">
-
-        <androidx.appcompat.widget.Toolbar
-            android:id="@+id/createDirectRoomToolbar"
-            style="@style/VectorToolbarStyle"
-            android:layout_width="0dp"
-            android:layout_height="?actionBarSize"
-            android:elevation="4dp"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent">
-
-            <androidx.constraintlayout.widget.ConstraintLayout
-                android:layout_width="match_parent"
-                android:layout_height="match_parent">
-
-                <ImageView
-                    android:id="@+id/createDirectRoomClose"
-                    android:layout_width="@dimen/layout_touch_size"
-                    android:layout_height="@dimen/layout_touch_size"
-                    android:clickable="true"
-                    android:focusable="true"
-                    android:foreground="?attr/selectableItemBackground"
-                    android:scaleType="center"
-                    android:src="@drawable/ic_x_18dp"
-                    app:layout_constraintBottom_toBottomOf="parent"
-                    app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent" />
-
-                <TextView
-                    android:id="@+id/createDirectRoomTitle"
-                    android:layout_width="0dp"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="8dp"
-                    android:layout_marginEnd="8dp"
-                    android:ellipsize="end"
-                    android:maxLines="1"
-                    android:text="@string/fab_menu_create_chat"
-                    android:textColor="?riotx_text_primary"
-                    android:textSize="18sp"
-                    android:textStyle="bold"
-                    app:layout_constraintBottom_toBottomOf="parent"
-                    app:layout_constraintEnd_toEndOf="parent"
-                    app:layout_constraintHorizontal_bias="0.0"
-                    app:layout_constraintStart_toEndOf="@+id/createDirectRoomClose"
-                    app:layout_constraintTop_toTopOf="parent" />
-
-            </androidx.constraintlayout.widget.ConstraintLayout>
-
-        </androidx.appcompat.widget.Toolbar>
-
-        <im.vector.app.core.platform.MaxHeightScrollView
-            android:id="@+id/chipGroupScrollView"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="@dimen/layout_horizontal_margin"
-            android:layout_marginTop="8dp"
-            android:layout_marginEnd="@dimen/layout_horizontal_margin"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/createDirectRoomToolbar"
-            app:maxHeight="64dp">
-
-            <com.google.android.material.chip.ChipGroup
-                android:id="@+id/chipGroup"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                app:lineSpacing="2dp" />
-
-        </im.vector.app.core.platform.MaxHeightScrollView>
-
-        <EditText
-            android:id="@+id/createDirectRoomFilter"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="@dimen/layout_horizontal_margin"
-            android:layout_marginEnd="@dimen/layout_horizontal_margin"
-            android:background="@null"
-            android:drawablePadding="8dp"
-            android:gravity="center_vertical"
-            android:hint="@string/direct_room_filter_hint"
-            android:importantForAutofill="no"
-            android:inputType="text"
-            android:maxHeight="80dp"
-            android:paddingTop="16dp"
-            android:paddingBottom="16dp"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/chipGroupScrollView" />
-
-        <View
-            android:id="@+id/createDirectRoomFilterDivider"
-            android:layout_width="0dp"
-            android:layout_height="1dp"
-            android:background="?attr/vctr_list_divider_color"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/createDirectRoomFilter" />
-
-        <com.google.android.material.button.MaterialButton
-            android:id="@+id/addByMatrixId"
-            style="@style/VectorButtonStyleText"
-            android:layout_width="0dp"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="16dp"
-            android:layout_marginTop="8dp"
-            android:layout_marginBottom="8dp"
-            android:minHeight="@dimen/layout_touch_size"
-            android:text="@string/add_by_matrix_id"
-            android:visibility="visible"
-            app:icon="@drawable/ic_plus_circle"
-            app:iconPadding="13dp"
-            app:iconTint="@color/riotx_accent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@id/createDirectRoomFilterDivider" />
-
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/recyclerView"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:fastScrollEnabled="true"
-            android:overScrollMode="always"
-            android:scrollbars="vertical"
-            app:layout_behavior="@string/appbar_scrolling_view_behavior"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toBottomOf="@+id/addByMatrixId"
-            tools:listitem="@layout/item_create_direct_room_user" />
-
-    </androidx.constraintlayout.widget.ConstraintLayout>
-
-</androidx.coordinatorlayout.widget.CoordinatorLayout>
-
diff --git a/vector/src/main/res/layout/fragment_create_direct_room_directory_users.xml b/vector/src/main/res/layout/fragment_create_direct_room_directory_users.xml
index d1bc9e4645..616c28c31e 100644
--- a/vector/src/main/res/layout/fragment_create_direct_room_directory_users.xml
+++ b/vector/src/main/res/layout/fragment_create_direct_room_directory_users.xml
@@ -90,7 +90,7 @@
             app:layout_constraintTop_toBottomOf="@+id/createDirectRoomSearchByIdContainer" />
 
         <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/recyclerView"
+            android:id="@+id/createDirectRoomRecyclerView"
             android:layout_width="0dp"
             android:layout_height="0dp"
             android:layout_marginTop="16dp"
diff --git a/vector/src/main/res/layout/fragment_generic_recycler.xml b/vector/src/main/res/layout/fragment_generic_recycler.xml
index bef10073fd..4aded532e8 100644
--- a/vector/src/main/res/layout/fragment_generic_recycler.xml
+++ b/vector/src/main/res/layout/fragment_generic_recycler.xml
@@ -7,7 +7,7 @@
     android:background="?riotx_background">
 
     <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/recyclerView"
+        android:id="@+id/genericRecyclerView"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         app:itemSpacing="1dp"
diff --git a/vector/src/main/res/layout/fragment_known_users.xml b/vector/src/main/res/layout/fragment_known_users.xml
index bb8cbd2443..cf2d4e8025 100644
--- a/vector/src/main/res/layout/fragment_known_users.xml
+++ b/vector/src/main/res/layout/fragment_known_users.xml
@@ -156,7 +156,7 @@
             app:layout_constraintTop_toBottomOf="@id/addByMatrixId" />
 
         <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/recyclerView"
+            android:id="@+id/knownUsersRecyclerView"
             android:layout_width="0dp"
             android:layout_height="0dp"
             android:fastScrollEnabled="true"
diff --git a/vector/src/main/res/layout/fragment_room_detail.xml b/vector/src/main/res/layout/fragment_room_detail.xml
index cc3efbf4f4..33f462c0d1 100644
--- a/vector/src/main/res/layout/fragment_room_detail.xml
+++ b/vector/src/main/res/layout/fragment_room_detail.xml
@@ -82,7 +82,7 @@
     </androidx.appcompat.widget.Toolbar>
 
     <androidx.constraintlayout.widget.Barrier
-        android:id="@+id/recyclerViewBarrier"
+        android:id="@+id/timelineRecyclerViewBarrier"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         app:barrierDirection="top"
@@ -113,11 +113,11 @@
         tools:visibility="visible" />
 
     <androidx.recyclerview.widget.RecyclerView
-        android:id="@+id/recyclerView"
+        android:id="@+id/timelineRecyclerView"
         android:layout_width="0dp"
         android:layout_height="0dp"
         android:overScrollMode="always"
-        app:layout_constraintBottom_toTopOf="@+id/recyclerViewBarrier"
+        app:layout_constraintBottom_toTopOf="@+id/timelineRecyclerViewBarrier"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/activeConferenceView"
diff --git a/vector/src/main/res/layout/fragment_room_setting_generic.xml b/vector/src/main/res/layout/fragment_room_setting_generic.xml
index 07744436ea..7ff63f3ce5 100644
--- a/vector/src/main/res/layout/fragment_room_setting_generic.xml
+++ b/vector/src/main/res/layout/fragment_room_setting_generic.xml
@@ -62,7 +62,7 @@
         app:layout_constraintTop_toBottomOf="@+id/roomSettingsToolbar">
 
         <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/recyclerView"
+            android:id="@+id/roomSettingsRecyclerView"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:overScrollMode="always"
diff --git a/vector/src/main/res/layout/fragment_user_directory.xml b/vector/src/main/res/layout/fragment_user_directory.xml
index b682d181cd..31a34512cf 100644
--- a/vector/src/main/res/layout/fragment_user_directory.xml
+++ b/vector/src/main/res/layout/fragment_user_directory.xml
@@ -90,7 +90,7 @@
             app:layout_constraintTop_toBottomOf="@+id/userDirectorySearchByIdContainer" />
 
         <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/recyclerView"
+            android:id="@+id/userDirectoryRecyclerView"
             android:layout_width="0dp"
             android:layout_height="0dp"
             android:layout_marginTop="16dp"