         return data as Data
     }
     
-    class func addPassword(input: Data, password: String) throws -> Data {
+    class open func addPassword(input: Data, password: String) throws -> Data {
         let dataProvider = CGDataProvider(data: input as CFData)
         let pdf = CGPDFDocument(dataProvider!)
         return try convertPdfToData(pdf: pdf!, password: password)
     }
     
-    class func removePassword(input: Data, password: String) throws -> Data {
+    class open func removePassword(input: Data, password: String) throws -> Data {
         return try autoreleasepool { () -> Data in
             let dataProvider = CGDataProvider(data: input as CFData)
             let pdf = CGPDFDocument(dataProvider!)

        }
    }
    
    class func isValidPDF(fileURL: URL) -> Bool {
        return autoreleasepool { () -> Bool in
            do {
                let data = try Data(contentsOf: fileURL)

        return backgroundImage!
    }
    
    class open func hasPassword(fileURL: URL) -> Bool {
        return autoreleasepool { () -> Bool in
            do {
                let data = try Data(contentsOf: fileURL)
                return hasPassword(input: data)
            } catch {
                return false
            }
        }
    }
    
    class open func hasPassword(input: Data) -> Bool {
        return autoreleasepool { () -> Bool in
            let dataProvider = CGDataProvider(data: input as CFData)
            if let provider = dataProvider {
