                 if updateRequests > 0 {
                     return
                 }
-                let cards: [Card]
+                let cards: [Card]?
                 if tracker == self.playerTracker {
                     cards = self.player.playerCardList
                 } else {
                     cards = Settings.instance.clearTrackersOnGameEnd
                         && self.gameEnded ? [] : self.opponent.opponentCardList
                 }
-                tracker?.update(cards, reset)
+                if let cards = cards {
+                    tracker?.update(cards, reset)
+                }
             }
         }
     }

                cards = Settings.instance.clearTrackersOnGameEnd && gameEnded
                    ? [] : self.opponent.opponentCardList
            }
            dispatch_async(dispatch_get_main_queue()) {
                tracker?.update(cards, reset)
            }
        } else {
            if tracker == playerTracker {


    private func updateTracker(tracker: Tracker?, _ reset: Bool = false) {
        if reset {
            let cards: [Card]?
            if tracker == self.playerTracker {
                playerUpdateRequests = 0
                cards = self.player.playerCardList
