                 
                 firstCardView.frame = frameForTopCard()
                 
-                applyRevertAnimation(firstCardView, complete: {
-                    self.delegate?.koloda(self, didShowCardAtIndex: UInt(self.currentCardNumber))
+                animating = true
+                applyRevertAnimation(firstCardView, completion: { [weak self] in
+                    if let _self = self {
+                        _self.animating = false
+                        _self.delegate?.koloda(_self, didShowCardAtIndex: UInt(_self.currentCardNumber))
+                    }
                 })
             }
             

private let defaultAlphaValueTransparent: CGFloat = 0.0
private let defaultAlphaValueSemiTransparent: CGFloat = 0.7

private let revertCardAnimationName = "revertCardAlphaAnimation"
private let revertCardAnimationDuration: NSTimeInterval = 1.0
private let revertCardAnimationToValue: CGFloat = 1.0
private let revertCardAnimationFromValue: CGFloat = 0.0
public protocol KolodaViewDataSource:class {
    
    func koloda(kolodaNumberOfCards koloda: KolodaView) -> UInt

            self?.userInteractionEnabled = true
            self?.animating = false
        }
    }
    
    //MARK: DraggableCardDelegate
