 }
 
 extension Renderer {
-    public struct Desciptor {
+    public struct Descriptor {
         /// Example: com.aol.onemobilesdk.flat
         public let id: String
         

    }
}

extension Renderer.Desciptor: Equatable {
    public static func == (left: Renderer.Desciptor, right: Renderer.Desciptor) -> Bool {
        guard left.id == right.id else { return false }
        guard left.version == right.version else { return false }
        

    public final class Repository {
        public static let shared = Repository()
        
        private var renderers: [Descriptor: Provider] = [:]
        
        public var availableRenderers: [Descriptor] {
            return Array(renderers.keys)
        }
        
        public func makeViewControllerFor(descriptor: Descriptor) -> RendererProtocol? {
            return renderers[descriptor].map({ $0() })
        }
        
        @discardableResult public func register(renderer: Renderer) -> Descriptor {
            renderers[renderer.descriptor] = renderer.provider
            return renderer.descriptor
        }
