      - parameter storeType: The store type to be used, you have .InMemory and .SQLite, the first one is memory
      based and doesn't save to disk, while the second one creates a .sqlite file and stores things there.
      */
-    @objc public init(modelName: String, bundle: Bundle, storeType: DataStackStoreType) {
+    @objc public init?(modelName: String, bundle: Bundle, storeType: DataStackStoreType) {
+        
+        guard let model = NSManagedObjectModel(bundle: self.modelBundle, name: self.modelName) else { return nil }
+        
         self.modelName = modelName
         self.modelBundle = bundle
         self.storeType = storeType
-        self.model = NSManagedObjectModel(bundle: self.modelBundle, name: self.modelName)
+        self.model = model
 
         super.init()
     }

    ///   - context: The context against which request should be executed.
    /// - Returns: An array containing managed objects, managed object IDs, or dictionaries as appropriate for a fetch request; an empty array if request is a save request, or nil if an error occurred.
    /// - Throws: If an error occurs, upon return contains an NSError object that describes the problem.
    @objc public func execute(_ request: NSPersistentStoreRequest, with context: NSManagedObjectContext) throws -> Any {
        return try self.persistentStoreCoordinator.execute(request, with: context)
    }

    // Can't be private, has to be internal in order to be used as a selector.

     change that.
     - parameter containerURL: The container URL for the sqlite file when a store type of SQLite is used.
     */
    @objc public init?(modelName: String, bundle: Bundle, storeType: DataStackStoreType, storeName: String, containerURL: URL) {
        guard let model = NSManagedObjectModel(bundle: self.modelBundle, name: self.modelName) else { return nil }
        self.modelName = modelName
        self.modelBundle = bundle
        self.storeType = storeType
        self.storeName = storeName
        self.containerURL = containerURL
        self.model = model

        super.init()
    }
