             })
             countOfCards += 1
         }
+        
+        assert(currentItemsCount + indexSet.count == countOfCards, "Issue appeared")
+    }
+    
+    // MARK: Cards managing - Deletion
+    
+    private func proceedDeletion(range: Range<Int>) {
+        let deletionIndexes = [Int](range)
+        deletionIndexes.sort { $0 > $1 }.forEach { deletionIndex in
+            let visibleCardIndex = deletionIndex - currentCardNumber
+            let card = visibleCards[visibleCardIndex]
+            card.delegate = nil
+            card.swipe(.Right)
+            visibleCards.removeAtIndex(visibleCardIndex)
+        }
+    }
+    
+    public func removeCardAtIndexRange(indexRange: Range<Int>, animated: Bool) {
+        animating = true
+        let currentItemsCount = countOfCards
+        let visibleIndexes = [Int](indexRange).filter { $0 >= currentCardNumber && $0 < currentCardNumber + countOfVisibleCards }
+        if !visibleIndexes.isEmpty {
+             proceedDeletion(visibleIndexes[0]...visibleIndexes[visibleIndexes.count - 1])
+        }
+        countOfCards -= indexRange.count
+        loadMissingCards(calculateMissingCardsCount())
+        layoutDeck()
+        for (index, card) in visibleCards.enumerate() {
+            card.alpha = shouldTransparentizeNextCard && index != 0 ? alphaValueSemiTransparent : alphaValueOpaque
+            card.userInteractionEnabled = index == 0
+        }
+        animating = false
+        assert(currentItemsCount - indexRange.count == countOfCards, "Issue appeared")
     }
     
 }

    private func insertCardToTop() {
        let previousCard = createCardAtIndex(UInt(currentCardNumber), frame: frameForTopCard())
        previousCard.alpha = alphaValueOpaque
        moveOtherCardsWithFinishPercent(0)
        if visibleCards.isEmpty {
            addSubview(previousCard)
        }
        visibleCards.insert(previousCard, atIndex: 0)
        moveOtherCardsWithFinishPercent(0)
    }

    
    private func layoutCard(card: DraggableCardView, AtIndex index: UInt) {
        if index == 0 {
            card.layer.transform = CATransform3DIdentity
            card.frame = frameForTopCard()
        } else {
            let cardParameters = backgroundCardParametersForFrame(frameForCardAtIndex(UInt(index)))
            
