 
 public class KolodaView: UIView, DraggableCardDelegate {
     
-    public weak var dataSource: KolodaViewDataSource! {
+    public weak var dataSource: KolodaViewDataSource? {
         didSet {
             setupDeck()
         }

    }
    
    private func overlayViewForCardAtIndex(index: UInt) -> OverlayView? {
        return dataSource.koloda(self, viewForCardOverlayAtIndex: index)
    }
    
    //MARK: Actions

    }
    
    private func setupDeck() {
        if let dataSource = dataSource {
            countOfCards = Int(dataSource.koloda(kolodaNumberOfCards: self))
            
            if countOfCards - currentCardNumber > 0 {
                
                let countOfNeededCards = min(countOfVisibleCards, countOfCards - currentCardNumber)
                
                for index in 0..<countOfNeededCards {
                    let nextCardContentView = dataSource.koloda(self, viewForCardAtIndex: UInt(index+currentCardNumber))
                    let nextCardView = DraggableCardView(frame: frameForCardAtIndex(UInt(index)))
                    
                    nextCardView.delegate = self
