     }
     
     public func transitionRenderEncoderTo(renderer: Renderer?) -> RenderEncoderTransition? {
-        if let rendererTypeId = renderer?.rendererType {
-            return transitionMap[rendererTypeId]
+        if let rendererType = renderer?.name {
+            return transitionMap[rendererType]
         } else {
             //TODO: more 'eloquent' way to return here? or to structure this functions?
             return nil


//typealias ComputeEncoderTransition = ((MTLCommandBuffer, MTLComputeCommandEncoder) -> MTLComputeCommandEncoder)

public class RendererBase: Renderer {
    public var name: String?
    public var rendererType: Int = 0 // use enum for renderer types
    public var transitionMap: [Int:RenderEncoderTransition] = [:]
    public var createRenderEncoderBlock: RenderEncoderCreateMonad? = RendererBase.createRenderEncoderDefault()
    public var configureRenderEncoderBlock: RenderEncoderConfigureBlock?
    
    public var cullMode: MTLCullMode = .Front

//    var Far:Float = 100.0
//}

//public class BaseRenderer {

//    var colorPixelFormat: MTLPixelFormat? = .BGRA8Unorm
//    var depthPixelFormat: MTLPixelFormat? = .Depth32Float
//    var stencilPixelFormat: MTLPixelFormat?
    
    // this value will cycle from 0 to kInFlightCommandBuffers whenever a display completes ensuring renderer clients
    // can synchronize between kInFlightCommandBuffers count buffers, and thus avoiding a constant buffer from being overwritten between draws
//}

//class MVPRenderer: BaseRenderer, Projectable, Uniformable, Perspectable {
//    var pipelineState: MTLRenderPipelineState?
