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

        return context
    }
    
    internal class func registerDefaultExtension(extensionClass: DKImageBaseExtension.Type, for type: DKImageExtensionType) {
        DKImageExtensionController.defaultExtensions[type] = extensionClass
    }

    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())
