 		
 		streamQueue = DispatchQueue(label: "Geometry streaming", qos: .userInitiated, attributes: .concurrent)
 		print("  - empty streaming op-queue setup")
-		readTessellationLock = os_unfair_lock()
+		publishQueue = DispatchQueue(label: "Chunk delivery", qos: .userInitiated, attributes: .init())
 		
 		GeometryStreamer._shared = self
 		

			let request = ChunkRequest(regionId, atLod: streamedLodLevel)
			pendingChunks.insert(request)
			
			streamQueue.async {																				// OK to load data concurrently...
				if let tessellation = self.loadGeometry(chunkName) {
					DispatchQueue.main.sync {	// $ Idiotic
						os_unfair_lock_lock(&self.readTessellationLock)				// But inserting must be done exclusively
						self.deliveredChunks.append((request, tessellation))
						os_unfair_lock_unlock(&self.readTessellationLock)			// $ Could this be barrier blocks now that loading doesn't block as bad?
					}
				} else {
					print("No geometry chunk available for \(chunkName)")

	let fileData: Data	// fileData is memory-mapped so no need to attach a FileHandle here
	let fileHeader: WorldHeader
	let chunkTable: ChunkTable
	let streamQueue: DispatchQueue	// Async stream data from archive
	var publishQueue: DispatchQueue		// Deliver loaded chunks from worker thread
	
	var wantedLodLevel: Int
	var actualLodLevel: Int = 10
