 import UIKit
 
 public class RateCoreGraphicView: UIView {
+
     private var _value: RatePoint = .zero {
         didSet {
             setNeedsDisplay()
         }
     }
+    private var _allSize: CGSize = .zero
+
+    // MARK: Outlets
     @IBInspectable public var fullImage: UIImage?
     @IBInspectable public var zeroImage: UIImage?
     @IBInspectable public var spacing: CGFloat = 0

        let fmaxRate = CGFloat(maxRate)
        let allWidth = (starSize.width*fmaxRate) + (spacing*fmaxRate)
        let allStarWidth = starSize.width*fmaxRate
        let allSize = CGSize(
            width: allWidth,
            height: starSize.height
        )

        if _value < maxRate {
            if (needsClip) {
                context.saveGState();
                context.clip(to: CGRect(x: boundaryX, y: 0, width: _allSize.width - spacing - boundaryX, height: starSize.height))
            }
            for i in (boundaryIndex..<maxRate) {
                zeroImage.draw(at: CGPoint(x: xOrigin(atIndex: i), y: 0))
