 		level: Int = 0,
 		runOnEachMapBlock: @escaping (() -> Void)
 	) {
+        guard !inheritableEvents.isEmpty else { return }
         var maps: [DataMap] = []
         for (var childMap) in DataMap.getAll(with: manager, alterFetchRequest: { fetchRequest in
             fetchRequest.predicate = NSPredicate(format: "(inMapId = %@)", map.id)

	}

	func addData() {
		let progressTotal = progressFiles.map { $0.progress }.reduce(0.0, +)
			+ (progressProcessImportChunk * 2.0) + progressFinalPadding
		importDataFiles(progress: 0.0, progressTotal: progressTotal)
		processImportedData(


		// load up all ids so we know if some have been removed
		var deleteOldIds: [BaseDataFileImportType: [String]] = [:]
		for type in Array(Set((progressFilesEvents + progressFilesOther).map({ $0.type }))) {
			deleteOldIds[type] = self.getAllIds(type: type, with: manager)
		}
        
        let queue = DispatchQueue.global(qos: .userInitiated)
        let queueGroup = DispatchGroup()
        
        let markIdsImported: (BaseDataFileImportType, [String]) -> Void = { (type, ids) in
            deleteOldIds[type] = Array(Set(deleteOldIds[type] ?? []).subtracting(ids))
        }
        let updateFileProgress: (Double) -> Void = { (batchProgress) in
            progress += batchProgress
            self.fireProgress(progress: progress, progressTotal: progressTotal)
        }
        
        // process all events first
        for row in progressFilesEvents {
            queueGroup.enter()
            queue.async(group: queueGroup) {
                importFile(fileDefinition: row, markIdsImported: markIdsImported, updateProgress: updateFileProgress)
                queueGroup.leave()
            }
        }
        // wait for finish
        queueGroup.wait()

		for row in progressFilesOther {
            queueGroup.enter()
            queue.async(group: queueGroup) {
                importFile(fileDefinition: row, markIdsImported: markIdsImported, updateProgress: updateFileProgress)
                queueGroup.leave()
            }
		}
        // wait for finish
        queueGroup.wait()

		// remove any old entries not included in this update
		// (this is unsupported in XCTest inMemoryStore)
