 
 class WMFTodayTopReadWidgetViewController: UIViewController, NCWidgetProviding {
     
+    // Model
+    let siteURL = NSURL.wmf_URLWithDefaultSiteAndCurrentLocale()
+    var date = NSDate()
+    var results: [MWKSearchResult] = []
+    let articlePreviewFetcher = WMFArticlePreviewFetcher()
+    let mostReadFetcher = WMFMostReadTitleFetcher()
+
+    // Views & View State
+    var snapshotView: UIView?
     @IBOutlet weak var headerView: UIView!
-    
     @IBOutlet weak var headerLabel: UILabel!
     @IBOutlet weak var stackView: UIStackView!
-    
-    var snapshotView: UIView?
-    
     let dateFormatter = NSDateFormatter.wmf_dayNameMonthNameDayOfMonthNumberDateFormatter()
-    var date = NSDate()
     let cellReuseIdentifier = "articleList"
-    let articlePreviewFetcher = WMFArticlePreviewFetcher()
-    let mostReadFetcher = WMFMostReadTitleFetcher()
     var maximumSize = CGSizeZero
     var maximumRowCount = 3
-    var results: [MWKSearchResult] = []
-    var articlePreviewViewControllers: [WMFArticlePreviewViewController] = []
     var headerHeight: CGFloat = 44
     var headerVisible = false
     
+    // Controllers
+    var articlePreviewViewControllers: [WMFArticlePreviewViewController] = []
+
     override func viewDidLoad() {
         super.viewDidLoad()
         

            let mode = context.widgetActiveDisplayMode
            widgetActiveDisplayModeDidChange(mode, withMaximumSize: context.widgetMaximumSizeForDisplayMode(mode))
        }
        
        widgetPerformUpdate { (result) in
            

        
    }
    
    func handleTapGestureRecognizer(gestureRecognizer: UITapGestureRecognizer) {
        guard let index = self.articlePreviewViewControllers.indexOf({ (vc) -> Bool in return CGRectContainsPoint(vc.view.frame, gestureRecognizer.locationInView(self.view)) }) where index < results.count else {
            return
        }
        
        let result = results[index]
        let URL = siteURL.wmf_URLWithTitle(result.displayTitle)
        self.extensionContext?.openURL(URL, completionHandler: { (success) in
            
        })
    }
    
}
