 			}
 		}
 		
-		renderList = poiPlanePrimitives.filter({ visibleSet.contains($0.ownerHash) })
-																			.filter({ poiVisibility[$0.hashValue] != nil })
+		let framePlanes = poiPlanePrimitives.filter { visibleSet.contains($0.ownerHash) }
+																			 .filter { poiVisibility[$0.hashValue] != nil }
+		renderLists[bufferIndex] = ContiguousArray(framePlanes.map { $0.primitive })
 		var fades = Array<InstanceUniforms>()
-		fades.reserveCapacity(renderList.count)
-		for plane in renderList {
+		fades.reserveCapacity(framePlanes.count)
+		for plane in framePlanes {
 			let u = InstanceUniforms(progress: poiVisibility[plane.hashValue]!.alpha())
 			fades.append(u)
 		}

			self.instanceUniforms = (0..<bufferCount).map { _ in
				return device.makeBuffer(length: PoiRenderer.kMaxVisibleInstances * MemoryLayout<InstanceUniforms>.stride, options: .storageModeShared)!
			}
		} catch let error {
			fatalError(error.localizedDescription)
		}

	}
	var poiPlanePrimitives : [PoiPlane]
	var poiVisibility: [Int : Visibility] = [:]
	var renderLists: [RenderList] = []
	
	let device: MTLDevice
	let pipeline: MTLRenderPipelineState
