 
 // MARK: default values
 
-struct Default {
-    static let color: UIColor = UIColor.black.withAlphaComponent(0.8)
-    static let font: UIFont = UIFont.systemFont(ofSize: 14)
-    static let loadingText = "Loading..."
-    static let pullingText = "Pull down to refresh"
-    static let releaseText = "Release to refresh"
-    static let pullingFooterText = "Pull up to load more"
-    static let releaseFooterText = "Release to load more"
-    static let high: CGFloat = 120
-    static let short: CGFloat = 60
+public struct DefaultSPTR {
+    public static let color: UIColor = UIColor.black.withAlphaComponent(0.8)
+    public static let font: UIFont = UIFont.systemFont(ofSize: 14)
+    public static let loadingText = "Loading..."
+    public static let pullingText = "Pull down to refresh"
+    public static let releaseText = "Release to refresh"
+    public static let pullingFooterText = "Pull up to load more"
+    public static let releaseFooterText = "Release to load more"
+    public static let high: CGFloat = 120
+    public static let short: CGFloat = 60
 }

    ///   - releaseText: text display for dragging when reach the trigger, default is 'Release to load more'
    ///   - height: refresh view height and also the trigger requirement, default is 60
    ///   - action: refresh action
    public func spr_setTextFooter(loadingText: String = Default.loadingText,
                                  pullingText: String = Default.pullingFooterText,
                                  releaseText: String = Default.releaseFooterText,
                                  height: CGFloat = Default.short,
                                  action: @escaping () -> Void) {
        let textItem = TextItem(loadingText: loadingText, pullingText: pullingText, releaseText: releaseText)
        spr_refreshFooter = TextFooter(textItem: textItem, height: height, action: action)
    }

    /// Indicator auto refresh footer (auto triggered when scroll down to the bottom of the content)
    ///
    /// - Parameters:
    ///   - height: refresh view height and also the trigger requirement, default is 60
    ///   - action: refresh action
    public func spr_setIndicatorAutoFooter(height: CGFloat = Default.short,
                                           action: @escaping () -> Void) {
        spr_refreshFooter = IndicatorFooter(height: height, isAuto: true, action: action)
    }

    /// Text auto refresh footer (auto triggered when scroll down to the bottom of the content)
    ///
    /// - Parameters:
    ///   - loadingText: text display for refreshing, default is 'Loading...'
    ///   - height: refresh view height and also the trigger requirement, default is 60
    ///   - action: refresh action
    public func spr_setTextAutoFooter(loadingText: String = Default.loadingText,
                                      height: CGFloat = Default.short,
                                      action: @escaping () -> Void) {
        let textItem = TextItem(loadingText: loadingText)
        spr_refreshFooter = TextFooter(textItem: textItem, height: height, isAuto: true, action: action)
    }

    /// Custom header
    /// Inherit from RefreshView
    /// Update the presentation in 'didUpdateState(_:)' and 'didUpdateProgress(_:)' methods

    ///   - releaseText: text display for dragging when reach the trigger, default is 'Release to refresh'
    ///   - height: refresh view height and also the trigger requirement, default is 60
    ///   - action: refresh action
    public func spr_setTextHeader(loadingText: String = DefaultSPTR.loadingText,
                                  pullingText: String = DefaultSPTR.pullingText,
                                  releaseText: String = DefaultSPTR.releaseText,
                                  height: CGFloat = DefaultSPTR.short,
                                  action: @escaping () -> Void) {
        let textItem = TextItem(loadingText: loadingText, pullingText: pullingText, releaseText: releaseText)
        spr_refreshHeader = TextHeader(textItem: textItem, height: height, action: action)
    }
    
    /// GIF header
    ///
    /// - Parameters:
