 			return
 		}
 		
+		// $ chunk request needs to be regionId + lod level, everything else is derivable from that
 		for regionId in frameChunkRequests {
 			let chunkName = chunkLodName(regionId, atLod: wantedLodLevel)
 			let runtimeLodKey = regionHashLodKey(regionId.hashed, atLod: wantedLodLevel)

	
	func renderPrimitive(for regionHash: RegionHash) -> IndexedRenderPrimitive<Vertex>? {
		if primitiveHasWantedLod(for: regionHash) == false {
			let needsNewChunk = streamMissingPrimitive(for: regionHash)
			lodCacheMiss = needsNewChunk || lodCacheMiss
		}
		
		let actualRegionHash = regionHashLodKey(regionHash, atLod: actualLodLevel)
		return geometryCache[actualRegionHash]?.primitive
	}
	
	func streamMissingPrimitive(for regionHash: RegionHash) -> Bool {
		// Only stream primitives that are actually opened
		guard let regionId = regionIdLookup[regionHash] else {
			print("RegionId lookup failed for hash \(regionHash)")
			return false
		}
		streamPrimitive(for: regionId)
		return true
	}
	
	func evictPrimitive(for regionHash: RegionHash) {
		for lod in 0 ..< chunkTable.lodCount {
			let loddedRegionHash = regionHashLodKey(regionHash, atLod: lod)
			geometryCache.removeValue(forKey: loddedRegionHash)
		}
	}
	
	func tessellation(for regionHash: RegionHash, atLod lod: Int, streamIfMissing: Bool = false) -> GeoTessellation? {

		if let found = geometryCache[key] {
			return found.tessellation
		} else if streamIfMissing {
			streamMissingPrimitive(for: regionHash)
		}
		return nil
	}
	
	func evictPrimitive(for regionHash: RegionHash) {
		for lod in 0 ..< chunkTable.lodCount {
			let loddedRegionHash = regionHashLodKey(regionHash, atLod: lod)
			geometryCache.removeValue(forKey: loddedRegionHash)
		}
	}
	
	private func streamMissingPrimitive(for regionHash: RegionHash) {
		guard let regionId = regionIdLookup[regionHash] else {
			print("RegionId lookup failed for hash \(regionHash)")
			return
		}
		
		let runtimeLodKey = regionHashLodKey(regionId.hashed, atLod: wantedLodLevel)
		if !pendingChunks.contains(ChunkRequest(runtimeLodKey)) {
			frameChunkRequests.append(regionId)
			lodCacheMiss = true
		}
	}
	
	func updateStreaming() {
