         }
     }
 
-    // MARK: Model methods
-
-    func fetchCurrentObjects() {
+    private func fetchCurrentObjects() {
         let request = NSFetchRequest(entityName: "Data")
         request.sortDescriptors = [NSSortDescriptor(key: "createdAt", ascending: true)]
         items = (try! dataStack.mainContext.executeFetchRequest(request)) as! [Data]
-
         tableView.reloadData()
     }
+}
 
+// MARK: UITableViewDataSource
+
+extension ViewController {
     override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
         return items.count
     }

class ViewController: UITableViewController {
    let CellIdentifier = "CellID"

    let dataStack: DATAStack
    lazy var networking: Networking = { [unowned self] in Networking(dataStack: self.dataStack) }()
    var items = [Data]()

    // MARK: Initializers

        super.viewDidLoad()

        title = "AppNet"
        tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: CellIdentifier)

        refreshControl = UIRefreshControl()
        refreshControl?.addTarget(self, action: "fetchNewData", forControlEvents: .ValueChanged)

        fetchCurrentObjects()
        fetchNewData()

        NSNotificationCenter.defaultCenter().addObserver(self, selector: "changeNotification:", name: NSManagedObjectContextObjectsDidChangeNotification, object: self.dataStack.mainContext)
    }

    // MARK: Private methods

    private func changeNotification(notification: NSNotification) {
        let updatedObjects = notification.userInfo?[NSUpdatedObjectsKey]
        let deletedObjects = notification.userInfo?[NSDeletedObjectsKey]
        let insertedObjects = notification.userInfo?[NSInsertedObjectsKey]
