diff --git a/Sources/ChatFeature/Controllers/SingleChatController.swift b/Sources/ChatFeature/Controllers/SingleChatController.swift
index 203b4a917ee2b8ce25312ff192064e15cc25bfbd..03b182e5bb886051eb9c22e352fd65ef52f0619b 100644
--- a/Sources/ChatFeature/Controllers/SingleChatController.swift
+++ b/Sources/ChatFeature/Controllers/SingleChatController.swift
@@ -49,7 +49,6 @@ public final class SingleChatController: UIViewController {
     private let viewModel: SingleChatViewModel
     private let layoutDelegate = LayoutDelegate()
     private var cancellables = Set<AnyCancellable>()
-    private var drawerCancellables = Set<AnyCancellable>()
     private var sections = [ArraySection<ChatSection, Message>]()
     private var currentInterfaceActions: SetActor<Set<InterfaceActions>, ReactionTypes> = SetActor()
 
@@ -385,12 +384,8 @@ public final class SingleChatController: UIViewController {
 
         button.action
             .receive(on: DispatchQueue.main)
-            .sink { [weak drawer] in
-                drawer?.dismiss(animated: true) { [weak self] in
-                    guard let self = self else { return }
-                    self.drawerCancellables.removeAll()
-                }
-            }.store(in: &drawerCancellables)
+            .sink { [unowned drawer] in drawer.dismiss(animated: true) }
+            .store(in: &drawer.cancellables)
 
         return drawer
     }
@@ -442,21 +437,17 @@ public final class SingleChatController: UIViewController {
 
         clearButton.publisher(for: .touchUpInside)
             .receive(on: DispatchQueue.main)
-            .sink {
-                drawer.dismiss(animated: true) { [weak self] in
-                    guard let self = self else { return }
-                    self.drawerCancellables.removeAll()
-                    self.viewModel.didRequestDeleteAll()
+            .sink { [unowned drawer, weak self] in
+                drawer.dismiss(animated: true) {
+                    self?.viewModel.didRequestDeleteAll()
                 }
-            }.store(in: &drawerCancellables)
+            }
+            .store(in: &drawer.cancellables)
 
         cancelButton.publisher(for: .touchUpInside)
             .receive(on: DispatchQueue.main)
-            .sink {
-                drawer.dismiss(animated: true) { [weak self] in
-                    self?.drawerCancellables.removeAll()
-                }
-            }.store(in: &drawerCancellables)
+            .sink { [unowned drawer] in drawer.dismiss(animated: true) }
+            .store(in: &drawer.cancellables)
 
         coordinator.toDrawer(drawer, from: self)
     }