         let handler = ChangeHandler<TapEvent>(f)
         longTapHandlers.append(handler)
 
-        return Disposable { [weak self] in
+        return Disposable { [weak self, unowned handler] in
             guard let index = self?.longTapHandlers.index(of: handler) else {
                 return
             }

        let handler = ChangeHandler<TouchEvent>(f)
        touchPressedHandlers.append(handler)

        return Disposable { [weak self]  in
            guard let index = self?.touchPressedHandlers.index(of: handler) else {
                return
            }

        let handler = ChangeHandler<TouchEvent>(f)
        touchReleasedHandlers.append(handler)

        return Disposable { [weak self, unowned handler] in
            guard let index = self?.touchReleasedHandlers.index(of: handler) else {
                return
            }
