         }
     }
     private func updateInvisible() {
-        guard let full = fullImage else {
-            fatalError("fullImage must not be nil.")
-        }
         if invisibleStackview == nil {
             let v: InvisibleFocusStackView = InvisibleFocusStackView
-                .create(maxRateDoubled: config!.maxRateDoubled,
-                        imageSize: full.size
-                ) {
-                    [weak self] index in
-                    self?.stackview?.value = Float(index)/2
+                .create(config: config!) {
+                    [weak self] value in
+                    self?.stackview?.value = value
                 }
             addSubview(v)
             self.invisibleStackview = v

    let maxRate: Int
    var maxRateDoubled: Int {
        return maxRate * 2
    }
}


    @IBInspectable public var maxRate: Int = 5
    @IBInspectable public var focusStyle: FocusStyle = .default

    private var isHalfStep: Bool {
        return halfImage == nil
    }
    private var stackview: RateStackView?
    private var invisibleStackview: InvisibleFocusStackView?
    private var config: Config?
