     func checkStack() -> Bool
     func viewContext() -> NSManagedObjectContext?
     func save(block:@escaping ((NSManagedObjectContext?) -> Void), completion: ((Bool, Error?) -> Void)?)
-    func setup()
+    func setupStack()
+    func cleanupStack()
 }
 
 internal protocol DatabaseContainerWithEncryptionProtocol {

        return mainContext
    }
    
    public override func setup() {
        coordinator = getPersistentStoreCoordinator()
        mainContext = getMainContext()
    }
    
    var accidentError: Error?

        return container?.viewContext
    }
    
    public override func setupStack() {
        container = getPersistentStoreContainer()
    }
    
    public override func cleanupStack() {
        container = nil
    }
    
    var accidentError: Error?
