                 let silCode = parameters[1] as? String ?? "notString"
                 // do call here
                 let bookList = "abcde"
-                let response = format(handler: handler, result: bookList)
+                let response = format(handler: handler, result: bookList) // if error, return nil, else list
                 controller.jsCallback(response: response)
             } else {
-                let response = format(handler: handler, result: "findAudioVersion must have two parameters")
+                logError(plugin: "AudioPlayer", method: method, message: "must have two parameters")
+                let response = format(handler: handler) // if error, return nil
                 controller.jsCallback(response: response)
             }
 
         } else if method == "isPlaying" {
             // do call here
             let isPlaying = true
-            let response = format(handler: handler, result: isPlaying)
+            let response = format(handler: handler, result: isPlaying) // if error, return "F"
             controller.jsCallback(response: response)
             
         } else if method == "present" {

            } else if plugin == "VideoPlayer" {
                videoPlayerPlugin(method: method, handler: handler, parameters: parameters)
            } else {
                print("Unknown plugin \(plugin).\(method)")
                // Should I try to respond to this?
            }
        } else {
            print("Message set to callNative, must be a dictionary")

        if method == "locale" {
            let locale = Locale.current.identifier
            print("locale \(locale)")
            let response = format(handler: handler, result: locale) // if error return nil
            controller.jsCallback(response: response)
            
        } else if method == "platform" {
            let platform = "iOS"
            let response = format(handler: handler, result: platform) // if error return nil
            controller.jsCallback(response: response)
            
        //} else if method == "modelType" {
        //    let modelType = UIDevice.current.model
        //    let modelTypeResponse = format(handler: handler, result: modelType) // if error return nil
        //    controller.jsCallback(response: modelTypeResponse)
            
        } else if method == "modelName" {
            //let modelName = DeviceSettings.modelName()
            let modelName = "Dummy"
            let response = format(handler: handler, result: modelName) // if error return nil
            controller.jsCallback(response: response)
            
        //} else if method == "deviceSize" {
        //    //let deviceSize = DeviceSettings.deviceSize()
        //    let deviceSize = "Dummy"
        //    let deviceSizeResponse = format(handler: handler, result: deviceSize) if error return nil
        //    controller.jsCallback(response: deviceSizeResponse)
            
        } else if method == "hideKeyboard" {
            //let hidden = self.webView.endEditing(true)
            let hidden = true
            let response = format(handler: handler, result: hidden) // if error return false
            controller.jsCallback(response: response)
            
        } else {
            logError(plugin: "Utility", method: method, message: "unknown method")
            let response = format(handler: handler) // on error return nil
            controller.jsCallback(response: response)
        }
    }
    
    private func sqlitePlugin(method: String, handler: String, parameters: [Any]) {
        var error: String? = nil
        
        if method == "openDB" {
            if parameters.count == 2 {
                let dbname = parameters[0] as? String ?? "notString"
                let isCopyDatabase = parameters[1] as? Bool ?? true
                // do call here
                error = "whatever"
            } else {
                error = logError(plugin: "Sqlite", method: method, message: "Must have two parameters")
            }
            let response = format(handler: handler, result: error) // if error, return error, else nil
            controller.jsCallback(response: response)
            
        } else if method == "queryJS" {
            let result: [Dictionary<String,Any?>]
            if parameters.count == 3 {
                let dbname = parameters[0] as? String ?? "notString"
                let statement = parameters[1] as? String ?? "notString"
                let values = parameters[2] as? [Any] ?? []
                // do call here
                result = [Dictionary<String,Any?>]()
            } else {
                result = []
                error = logError(plugin: "Sqlite", method: method, message: "must have three parameters")
            }
            let response = format(handler: handler, error: error, result: result) // if error, return error
            controller.jsCallback(response: response)
            
        } else if method == "executeJS" {
            var result: Int = 0
            if parameters.count == 3 {
                let dbname = parameters[0] as? String ?? "notString"
                let statement = parameters[1] as? String ?? "notString"
                let values = parameters[2] as? [Any] ?? []
                // do call here
                result = 1
            } else {
                let error = logError(plugin: "Sqlite", method: method, message: "must have three parameters")
            }
            let response = format(handler: handler, error: nil, result: result) // if error, return error
            controller.jsCallback(response: response)
            
        } else if method == "bulkExecuteJS" {
            var result: Int = 0
            if parameters.count == 3 {
                let dbname = parameters[0] as? String ?? "notString"
                let statement = parameters[1] as? String ?? "notString"
                let values = parameters[2] as? [Any] ?? []
                // do call here
                result = 1
            } else {
                error = logError(plugin: "Sqlite", method: method, message: "must have three parameters")
            }
            let response = format(handler: handler, error: error, result: result) // if error, return error
            controller.jsCallback(response: response)
            
        } else if method == "closeDB" {
            if parameters.count == 1 {
                let dbname = parameters[0] as? String ?? "notString"
                // do call here
                error = "whatever"
            } else {
                error = logError(plugin: "Sqlite", method: method, message: "must have one parameter")
            }
            let response = format(handler: handler, result: error) // if error, return error
            controller.jsCallback(response: response)

        } else if method == "listDB" {
            // do call here
            let result = "abcde"
            let response = format(handler: handler, result: result) // if error, return []
            controller.jsCallback(response: response)
            
        } else if method == "deleteDB" {
            if parameters.count == 1 {
                let dbname = parameters[0] as? String ?? "notString"
                // do call here
                error = "whatever"
            } else {
                error = logError(plugin: "Sqlite", method: method, message: "must have one parameter")
            }
            let response = format(handler: handler, result: error) // if error, return error, else nil
            controller.jsCallback(response: response)
            
        } else {
            let error = logError(plugin: "Sqlite", method: method, message: "unknown method")
            let response = format(handler: handler, result: error) // if error, return error
            controller.jsCallback(response: response)
        }
    }
    
    private func awsPlugin(method: String, handler: String, parameters: [Any]) {
        var error: String? = nil
        
        if method == "initialize" {
            // do call here
            let result = true
            let response = format(handler: handler, result: result) // if error, return false
            controller.jsCallback(response: response)
            
        } else if method == "downloadZipFile" {
