     
     func testCRUD () throws {
         
-        let coreDataStack = try CoreDataStackType(managedObjectModel: TestModel1(), storeNamePrefix: String(describing: TestModel1.self))
+        let model  = TestModel1()
+        let prefix = String(describing: type(of: model.self))
+        
+        let coreDataStack = try CoreDataStackType(managedObjectModel: model, storeNamePrefix: prefix)
         
         let editContext       = coreDataStack.editContext()
         let mainThreadContext = coreDataStack.mainThreadContext()

    
    func testConstruction_MultiConfiguration_MixedType() throws {
        
        let storePrefix = String(describing: TestModel2.self)
        
        var options: [AnyHashable: Any] = defaultStoreOptions
        options[OverwriteIncompatibleStoreOption] = true
        
        do {
            /// TestModel2 has multiple configurations and should will produce multiple persistent stores.
            let _ = try CoreDataStackType(managedObjectModel: TestModel2(),
                                          storeNamePrefix: storePrefix,
                                          configurationOptions: ["PersistentEntities": (storeType: NSSQLiteStoreType,   storeOptions: options, migrationManager: nil),
                                                                 "TransientEntities":  (storeType: NSInMemoryStoreType, storeOptions: options, migrationManager: nil)])
            
            XCTAssertTrue(try persistentStoreExists(storePrefix: storePrefix,  storeType: NSSQLiteStoreType,   configuration: "PersistentEntities"))
            XCTAssertFalse(try persistentStoreExists(storePrefix: storePrefix, storeType: NSInMemoryStoreType, configuration: "TransientEntities"))
        } catch {
            XCTFail(error.localizedDescription)
        }

    
    func testConstruction_MultiConfiguration_SQLiteStoreType() throws {
        
        let model  = TestModel3()
        let prefix = String(describing: type(of: model.self))
        
        var options: [AnyHashable: Any] = defaultStoreOptions
        options[OverwriteIncompatibleStoreOption] = true
        
        do {
            /// TestModel2 has multiple configurations and should will produce multiple persistent stores.
            let _ = try CoreDataStackType(managedObjectModel: model,
                                          storeNamePrefix: prefix,
                                          configurationOptions: ["PersistentEntities": (storeType: NSSQLiteStoreType, storeOptions: options, migrationManager: nil),
                                                                 "TransientEntities":  (storeType: NSSQLiteStoreType, storeOptions: options, migrationManager: nil)])
            
            XCTAssertTrue(try persistentStoreExists(storePrefix: prefix, storeType: NSSQLiteStoreType, configuration: "PersistentEntities"))
            XCTAssertTrue(try persistentStoreExists(storePrefix: prefix, storeType: NSSQLiteStoreType, configuration: "TransientEntities"))
        } catch {
            XCTFail(error.localizedDescription)
        }
