         return context
     }
     
+    private func fetchExtensionClass(_ extensionType: DKImageExtensionType) -> DKImageBaseExtension.Type? {
+        if let extensionClass = DKImageExtensionController.extensions[extensionType] ??
+            DKImageExtensionController.defaultExtensions[extensionType] {
+            return extensionClass is DKImageExtensionNone ? nil : extensionClass
+        } else {
+            return nil
+        }
+    }
+    
     internal class func registerDefaultExtension(extensionClass: DKImageBaseExtension.Type, for type: DKImageExtensionType) {
         DKImageExtensionController.defaultExtensions[type] = extensionClass
     }

    }
    
    public func isExtensionTypeAvailable(_ extensionType: DKImageExtensionType) -> Bool {
        let extensionClass = DKImageExtensionController.extensions[extensionType] ?? DKImageExtensionController.defaultExtensions[extensionType]
        return extensionClass != nil && !(extensionClass! is DKImageExtensionNone)
    }
    
    /// Registers an extension for the specified type.

    public func perform(extensionType: DKImageExtensionType, with extraInfo: [AnyHashable : Any]) {
        DKImageExtensionController.checkDefaultExtensions
        
        if let extensionClass = self.fetchExtensionClass(extensionType) {
            var e = self.cache[extensionType]
            if e == nil {
                e = extensionClass.init(context: self.createContext())
