         }
         chevronImageView.tintColor = theme.colors.secondaryText
     }
-    
-    
-    
-    func update(with dataStore: MWKDataStore, completion: @escaping () -> Void) {
+
+    @objc func updateView() {
+        let completion = { (result: Bool) in
+            DDLogDebug("Widget did finish")
+        }
+        WidgetController.shared.startWidgetUpdateTask(completion) { (dataStore, completion) in
+            self.updateViewAsync(with: dataStore, completion: completion)
+        }
+    }
+    
+    func updateViewAsync(with dataStore: MWKDataStore, completion: @escaping (Bool) -> Void) {
         guard viewIfLoaded != nil else {
+            completion(false)
             return
         }
         if let context = self.extensionContext {

                        viewCounts.removeFirst(countToRemove)
                    }
                    vc.sparklineView.dataValues = viewCounts
                    
                    if let count = viewCounts.last {
                        vc.viewCountLabel.text = NumberFormatter.localizedThousandsStringFromNumber(count)
                        if let numberString = NumberFormatter.threeSignificantDigitWholeNumberFormatter.string(from: count) {


        let count = min(results.count, maximumRowCount)
        guard count > 0 else {
            completion(false)
            return
        }
        
        var language: String? = nil
        if let languageCode = siteURL?.wmf_language {
            language = (Locale.current as NSLocale).wmf_localizedLanguageNameForCode(languageCode)
        }
