diff --git a/core/src/main/java/org/futo/circles/core/feature/circles/filter/FilterTimelinesDataSource.kt b/core/src/main/java/org/futo/circles/core/feature/circles/filter/FilterTimelinesDataSource.kt
index e8bfab5106bafc4204b5ce4029805a293601c15a..dd7d02755cfef783ea7868668ece6b31ee396fcc 100644
--- a/core/src/main/java/org/futo/circles/core/feature/circles/filter/FilterTimelinesDataSource.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/circles/filter/FilterTimelinesDataSource.kt
@@ -29,13 +29,9 @@ class FilterTimelinesDataSource @Inject constructor(
     val timelinesLiveData = combine(
         circleSummaryLiveData.asFlow(),
         selectedTimelinesIds
-    ) { circle, selectedIds ->
-        val children = circle.getOrNull()?.spaceChildren ?: emptyList()
-        val myTimelineId = getTimelineRoomFor(circleId)?.roomId
-        children.mapNotNull {
-            session.getRoom(it.childRoomId)?.roomSummary()?.takeIf { summary ->
-                summary.membership.isActive() && summary.roomId != myTimelineId
-            }?.toFilterTimelinesListItem(isTimelineSelected(selectedIds, it.childRoomId))
+    ) { _, selectedIds ->
+        getAllTimelinesIds().mapNotNull {
+            session.getRoom(it)?.roomSummary()?.toFilterTimelinesListItem(selectedIds.contains(it))
         }
     }.flowOn(Dispatchers.IO).asLiveData()
 
@@ -48,7 +44,7 @@ class FilterTimelinesDataSource @Inject constructor(
     }
 
     fun toggleItemSelected(roomId: String) {
-        val isItemSelected = isTimelineSelected(selectedTimelinesIds.value, roomId)
+        val isItemSelected = selectedTimelinesIds.value.contains(roomId)
         selectedTimelinesIds.update { value ->
             val newSet = value.toMutableSet()
             if (isItemSelected) newSet.remove(roomId)
@@ -58,18 +54,26 @@ class FilterTimelinesDataSource @Inject constructor(
     }
 
     fun selectAllTimelines() {
-        val ids = timelinesLiveData.value?.map { it.id }?.toSet() ?: emptySet()
-        selectedTimelinesIds.update { ids }
+        selectedTimelinesIds.update { getAllTimelinesIds() }
     }
 
-    private fun isTimelineSelected(selectedIds: Set<String>, roomId: String): Boolean =
-        if (selectedIds.isEmpty()) true
-        else selectedIds.contains(roomId)
-
     private fun getCircleFilter(): Set<String> {
         val content = session.getRoom(circleId)?.roomAccountDataService()
-            ?.getAccountDataEvent(CIRCLE_FILTER_EVENT_TYPE)?.content ?: return emptySet()
-        return (content[TIMELINES_KEY] as? List<*>)?.map { it.toString() }?.toSet() ?: emptySet()
+            ?.getAccountDataEvent(CIRCLE_FILTER_EVENT_TYPE)?.content ?: return getAllTimelinesIds()
+        return (content[TIMELINES_KEY] as? List<*>)?.map { it.toString() }?.toSet()
+            ?: getAllTimelinesIds()
+    }
+
+    private fun getAllTimelinesIds(): Set<String> {
+        val children = session.getRoom(circleId)?.roomSummary()?.spaceChildren ?: emptyList()
+        val myTimelineId = getTimelineRoomFor(circleId)?.roomId
+        return children.mapNotNull {
+            val timelineSummary =
+                session.getRoom(it.childRoomId)?.roomSummary()?.takeIf { summary ->
+                    summary.membership.isActive() && summary.roomId != myTimelineId
+                }
+            timelineSummary?.roomId
+        }.toSet()
     }
 
     companion object {
diff --git a/core/src/main/java/org/futo/circles/core/feature/circles/filter/list/FilterTimelinesViewHolder.kt b/core/src/main/java/org/futo/circles/core/feature/circles/filter/list/FilterTimelinesViewHolder.kt
index ced1378708b2fe80918d7873712c99021431ac55..23487542d5464ef2f8d4cf3fe9608a0481e34391 100644
--- a/core/src/main/java/org/futo/circles/core/feature/circles/filter/list/FilterTimelinesViewHolder.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/circles/filter/list/FilterTimelinesViewHolder.kt
@@ -18,7 +18,10 @@ class FilterTimelinesViewHolder(
     private val binding = baseBinding as ListItemTimelineFilterBinding
 
     init {
-        onClick(itemView) { position -> onItemClicked(position) }
+        onClick(itemView) { position ->
+            binding.vCheck.isChecked = !binding.vCheck.isChecked
+            onItemClicked(position)
+        }
     }
 
     fun bind(data: FilterTimelinesListItem) {
diff --git a/core/src/main/res/layout/dialog_fragment_filter_timeline.xml b/core/src/main/res/layout/dialog_fragment_filter_timeline.xml
index 0a24f4d0f77ab839b3a3e7693f822e19e9d3f5c7..36e9ca78fe3568349d380017ff84a76c84b58c32 100644
--- a/core/src/main/res/layout/dialog_fragment_filter_timeline.xml
+++ b/core/src/main/res/layout/dialog_fragment_filter_timeline.xml
@@ -61,8 +61,7 @@
         android:id="@+id/rvTimelines"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_marginTop="8dp"
-        android:paddingHorizontal="8dp" />
+        android:layout_marginTop="8dp" />
 
 
 </LinearLayout>
\ No newline at end of file
diff --git a/core/src/main/res/layout/list_item_timeline_filter.xml b/core/src/main/res/layout/list_item_timeline_filter.xml
index f51d40d0cba4a21ca1cfaa05125c920ee51c22a7..94346abdb7269a20092cccb639d26326e1db4ad8 100644
--- a/core/src/main/res/layout/list_item_timeline_filter.xml
+++ b/core/src/main/res/layout/list_item_timeline_filter.xml
@@ -14,11 +14,14 @@
         android:id="@+id/ivRoom"
         android:layout_width="45dp"
         android:layout_height="45dp"
+        android:padding="2dp"
         android:scaleType="fitCenter"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent"
         app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.CornerSize50Percent"
+        app:strokeColor="@color/black"
+        app:strokeWidth="1dp"
         tools:src="@color/blue" />
 
 
@@ -55,6 +58,8 @@
         android:id="@+id/vCheck"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:clickable="false"
+        android:focusable="false"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintTop_toTopOf="parent" />