     func syncUsingAlamofire(completion: @escaping (_ result: VoidResult) -> ()) {
         Alamofire.request("https://jsonplaceholder.typicode.com/users").responseJSON { response in
             if let jsonObject = response.result.value, let usersJSON = jsonObject as? [[String: Any]] {
-                self.persistentContainer.sync(usersJSON, inEntityNamed: User.entity().name!) { error in
+                self.dataStack.sync(usersJSON, inEntityNamed: User.entity().name!) { error in
                     completion(.success)
                 }
             } else if let error = response.error {

        guard let data = try? Data(contentsOf: URL(fileURLWithPath: filePath)) else { return }
        guard let json = try! JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]] else { return }

        self.persistentContainer.sync(json, inEntityNamed: User.entity().name!) { error in
            completion(.success)
        }
    }

import Alamofire

class Fetcher {
    private let dataStack: DataStack

    private lazy var networking: Networking = {
        Networking(baseURL: "https://jsonplaceholder.typicode.com")
    }()

    init() {
        self.dataStack = DataStack(modelName: "DataModel")
    }

    func fetchLocalUsers() -> [User] {
        let request: NSFetchRequest<User> = User.fetchRequest()

        return try! self.dataStack.viewContext.fetch(request)
    }

    func syncUsingNetworking(completion: @escaping (_ result: VoidResult) -> ()) {
