 	return bins
 }
 
+// $ remove
 func buildPlaceMarkers(places: Set<GeoPlace>) -> ([ScaleVertex], [UInt16]) {
 	let vertices = places.reduce([]) { (accumulator: [ScaleVertex], place: GeoPlace) in
 		let size = 1.0 / Float(place.rank > 0 ? place.rank : 1)

		let frameRenderList = RenderList(poiGroupsInFrame.map { $0 })
		frameSwitchSemaphore.wait()
			self.renderLists[bufferIndex] = frameRenderList
			self.instanceUniforms[bufferIndex].contents().copyMemory(from: poiBuffer, byteCount: MemoryLayout<InstanceUniforms>.stride * poiBuffer.count)
			self.framePoiMarkerCount[bufferIndex] = poiBuffer.count
			self.poiBaseSize = poiScreenSize
			self.rankThreshold = newRankThreshold

													debugName: "POI primitive")
}

fileprivate func generatePoiMarkerGeometry(poiGroups: [PoiGroup], visibilities: [Int : PoiRenderer.Visibility], maxMarkers: Int) -> Array<InstanceUniform> {
	let markerCount = poiGroups.reduce(0) { $0 + $1.locations.count }
	var markers = Array<InstanceUniform>()
	markers.reserveCapacity(markerCount)
	for group in poiGroups {
		for marker in group.locations {
			markers.append(InstanceUniform(
				position: simd_float2(x: marker.x, y: marker.y),
				progress: 1.0	// $ lookup in visibility + small offset of .2 bias, max
			))
		}
	}
	return markers
}
