 				if let tessellation = self.loadGeometry(chunkName) {
 					// Create the render primitive and update book-keeping on the main thread
 					DispatchQueue.main.async {
-						let c = regionId.hashed.hashColor.tuple()
-						let primitive = IndexedRenderPrimitive<Vertex>(vertices: tessellation.vertices, indices: tessellation.indices, device: device, color: c, ownerHash: regionId.hashed, debugName: chunkName)
-						self.geometryCache[runtimeLodKey] = GeometryEntry(primitive: primitive, tessellation: tessellation)
-						self.pendingChunks.remove(ChunkRequest(regionId, atLod: streamedLodLevel))
+						self.tessellationCache[runtimeLodKey] = tessellation
 					}
 				} else {
 					print("No geometry chunk available for \(chunkName)")
 				}
 			}
 		}
+		frameChunkRequests = []
+		
+		// Create primitives for finished requests
+		let finishedRequests = pendingChunks.filter { request in
+			let finishedRuntimeLodkey = regionHashLodKey(request.chunkId.hashed, atLod: request.lodLevel)	 // $ Convenience for this
+			return tessellationCache[finishedRuntimeLodkey] != nil
+		}
+		
+		for request in finishedRequests {
+			let freshRuntimeLodkey = regionHashLodKey(request.chunkId.hashed, atLod: request.lodLevel)	 // $ Convenience for this
+			let tessellation = tessellationCache[freshRuntimeLodkey]!
+			let c = request.chunkId.hashed.hashColor.tuple()
+			let primitive = IndexedRenderPrimitive<Vertex>(vertices: tessellation.vertices,
+																										 indices: tessellation.indices,
+																										 device: device,
+																										 color: c,
+																										 ownerHash: request.chunkId.hashed,
+																										 debugName: request.chunkId.key)
+			primitiveCache[freshRuntimeLodkey] = primitive
+		}
+		pendingChunks = pendingChunks.subtracting(finishedRequests)
 		
 		logPendingRequests()
 		logBlockingRequests()
 		
-		frameChunkRequests = []
 	}
 	
 	private func loadGeometry(_ name: String) -> GeoTessellation? {

		
		let streamedLodLevel = wantedLodLevel
		
		for regionId in frameChunkRequests {
			let chunkName = chunkLodName(regionId, atLod: streamedLodLevel)
			let runtimeLodKey = regionHashLodKey(regionId.hashed, atLod: streamedLodLevel)

		}
		
		let actualRegionHash = regionHashLodKey(regionHash, atLod: actualLodLevel)
		return primitiveCache[actualRegionHash]
	}
	
	func tessellation(for regionHash: RegionHash, atLod lod: Int, streamIfMissing: Bool = false) -> GeoTessellation? {
		let key = regionHashLodKey(regionHash, atLod: lod)
		if let found = tessellationCache[key] {
			return found
		} else if streamIfMissing {
			streamMissingPrimitive(for: regionHash)
		}
