             .autodispose(in: apool)
         
         view.didAdd
-            .subscribe {
+            .subscribe { [unowned self] in
                 let item = Item(id: UUID().uuidString, title: $0, completed: false)
                 self.storeItems.append(item)
                 self.undoStack.append(self.storeItems.value)

            .autodispose(in: apool)
        
        view.didDelete
            .subscribe {
                self.storeItems.remove(at: $0)
                self.undoStack.append(self.storeItems.value)
            }
            .autodispose(in: apool)
        
        view.didMove
            .subscribe {
                self.storeItems.move(from: $0.0, to: $0.1)
                self.undoStack.append(self.storeItems.value)
            }
            .autodispose(in: apool)
        
        view.didClean
            .subscribe {
                self.storeItems.update([])
                self.undoStack.append(self.storeItems.value)
            }
            .autodispose(in: apool)
        
        view.didUndo
            .subscribe {
                if self.undoStack.count > 1 {
                    self.undoStack.removeLast()
                    self.storeItems.update(self.undoStack[self.undoStack.count - 1])

        view.undoEnabled = undoStack.count > 1
    }
    
    deinit {
        print("deinit")
    }
    
    init(view: ListViewProtocol, storeItems: MutableArrayProperty<Item> ) {
        self.view = view
        self.storeItems = storeItems
