     // MARK: - Single touches
     
     private func start(_ touch: UITouch) {
-        // TODO: Break this out into a method
-        guard touches.count < count || count == 0 else {
+        guard count == 0 || count > touches.count else {
             if let firstTouch = touches.first, mode == .queue {
                 end(firstTouch)
                 start(touch)

    open override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent) {
        super.touchesBegan(touches, with: event)
        
        state = .began
        guard state == .began else {
            return
        }
        
        if (sustain) {
            end()
        }


// MARK: - Private extensions

extension Array where Element: Equatable {
    
    func removing(_ element: Element) -> Array<Element> {
