     override func viewDidLoad() {
         super.viewDidLoad()
         
+        // Show Progress HUD
+        SVProgressHUD.showWithStatus("Fetching Data", maskType: .Gradient)
+        
         // Initialize Fetch Request
         let fetchRequest = NSFetchRequest(entityName: "Item")
         

            tableView.reloadData()
        }
    }

}

        // Initialize Asynchronous Fetch Request
        let asynchronousFetchRequest = NSAsynchronousFetchRequest(fetchRequest: fetchRequest) { (asynchronousFetchResult) -> Void in
            dispatch_async(dispatch_get_main_queue(), { () -> Void in
                // Dismiss Progress HUD
                SVProgressHUD.dismiss()
                
                // Process Asynchronous Fetch Result
                self.processAsynchronousFetchResult(asynchronousFetchResult)
                
                if let asynchronousFetchProgress = asynchronousFetchResult.progress {
                    // Remove Observer
                    asynchronousFetchProgress.removeObserver(self, forKeyPath: "completedUnitCount")
                }
            })
        }
        
        do {
            // Create Progress
            let progress = NSProgress(totalUnitCount: 1)
            
            // Become Current
            progress.becomeCurrentWithPendingUnitCount(1)
            
            // Execute Asynchronous Fetch Request
            let asynchronousFetchResult = try managedObjectContext.executeRequest(asynchronousFetchRequest) as! NSAsynchronousFetchResult
            
            if let asynchronousFetchProgress = asynchronousFetchResult.progress {
                asynchronousFetchProgress.addObserver(self, forKeyPath: "completedUnitCount", options: NSKeyValueObservingOptions.New, context: nil)
            }
            
            // Resign Current
            progress.resignCurrent()
            
        } catch {
            let fetchError = error as NSError
