     
     public func swipe(direction: SwipeResultDirection) {
         if !animating {
-            
             if let frontCard = visibleCards.first {
-                
                 animating = true
                 
                 if visibleCards.count > 1 {

        }
        
        if !visibleCards.isEmpty {
            for (index, currentCard) in visibleCards.enumerate() {
                currentCard.removeAnimations()
                
                currentCard.userInteractionEnabled = index == 0
                let cardParameters = backgroundCardParametersForFrame(frameForCardAtIndex(UInt(index)))
                var completion: ((Bool) -> Void)? = nil
                if index != 0 {
                    if shouldTransparentizeNextCard {
                        currentCard.alpha = alphaValueSemiTransparent
                    }
                } else {
                    completion = { finished in
                        self.visibleCards.last?.hidden = false
                        self.animating = false
                        
                        self.delegate?.koloda(self, didSwipedCardAtIndex: UInt(self.currentCardNumber - 1), inDirection: direction)
                        self.delegate?.koloda(self, didShowCardAtIndex: UInt(self.currentCardNumber))
                        if self.shouldTransparentizeNextCard {
                            currentCard.alpha = self.alphaValueOpaque
                        }
                    }
                    if shouldTransparentizeNextCard {
                        currentCard.alpha = alphaValueOpaque
                    } else {
                        applyAlphaAnimation(currentCard, alpha: alphaValueOpaque)
                    }
                }
                
                applyScaleAnimation(
                    currentCard,
                    scale: cardParameters.scale,
                    frame: cardParameters.frame,
                    duration: backgroundCardFrameAnimationDuration,
                    completion: completion
                )
            }
        } else {
            delegate?.koloda(self, didSwipedCardAtIndex: UInt(currentCardNumber - 1), inDirection: direction)
            animating = false
            delegate?.koloda(kolodaDidRunOutOfCards: self)
        }
        
    }
    
    private func loadNextCard() {

            countOfCards = Int(dataSource.koloda(kolodaNumberOfCards: self))
            
            if countOfCards - currentCardNumber > 0 {
                let countOfNeededCards = min(countOfVisibleCards, countOfCards - currentCardNumber)
                
                for index in 0..<countOfNeededCards {
