 import UIKit
 import CoreImage
 
-typealias FilterApplierType = ((_ image: CIImage) -> CIImage?)
+public typealias FilterApplierType = ((_ image: CIImage) -> CIImage?)
 
 public struct YPFilter {
     var name = ""
     var applier: FilterApplierType?
     
-    init(name: String, coreImageFilterName: String) {
+    public init(name: String, coreImageFilterName: String) {
         self.name = name
         self.applier = YPFilter.coreImageFilter(name: coreImageFilterName)
     }
     
-    init(name: String, applier: FilterApplierType?) {
+    public init(name: String, applier: FilterApplierType?) {
         self.name = name
         self.applier = applier
     }
 }
 
 extension YPFilter {
-    static func coreImageFilter(name: String) -> FilterApplierType {
+    public static func coreImageFilter(name: String) -> FilterApplierType {
         return { (image: CIImage) -> CIImage? in
             let filter = CIFilter(name: name)
             filter?.setValue(image, forKey: kCIInputImageKey)

    }
    
    
    static func hazeRemovalFilter(image: CIImage) -> CIImage? {
        let filter = HazeRemovalFilter()
        filter.inputImage = image
        return filter.outputImage

                ])
    }
    
    public static func nashvilleFilter(foregroundImage: CIImage) -> CIImage? {
        let backgroundImage = getColorImage(red: 247, green: 176, blue: 153, alpha: Int(255 * 0.56), rect: foregroundImage.extent)
        let backgroundImage2 = getColorImage(red: 0, green: 70, blue: 150, alpha: Int(255 * 0.4), rect: foregroundImage.extent)
        return foregroundImage
