     public typealias Provider = () -> RendererProtocol
     
 
-    public let descriptor: Desciptor
+    public let descriptor: Descriptor
     public let provider: Provider
     
-    public init(descriptor: Desciptor, provider: @escaping Provider) {
+    public init(descriptor: Descriptor, provider: @escaping Provider) {
         self.descriptor = descriptor
         self.provider = provider
     }

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

    }
}

extension Renderer.Descriptor: Hashable {
    public var hashValue: Int { return id.hashValue ^ version.hashValue }
}

