     
     override open func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
         if let touch = touches.first , bounds.contains(touch.location(in: self)) {
-            currentTouch = touch
-            isHighlighted = true
+            beginTouch(touch)
             processTouch(touch)
         }
         super.touchesBegan(touches, with: event)

        currentTouch = nil
        currentIndex = nil
        isHighlighted = false
    }
}


        super.touchesCancelled(touches, with: event)
    }
    
    private func beginTouch(_ touch: UITouch) {
        currentTouch = touch
        isHighlighted = true
        prepareFeedbackGenerator()
    }
    
    private func processTouch(_ touch: UITouch) {
        if items.isEmpty {
            return
