             self.setNeedsDisplay()
         }
     }
-    @IBInspectable public var outerRingStyle: Int = 1 {
-        didSet {
-            switch self.outerRingStyle{
+    
+    @IBInspectable public var outerRingCapStyle: Int = 1 {
+        didSet {
+            switch self.outerRingCapStyle{
             case 1: self.outStyle = CGLineCap.butt
             case 2: self.outStyle = CGLineCap.round
             case 3: self.outStyle = CGLineCap.square

            self.setNeedsDisplay()
        }
    }
    @IBInspectable public var innerRingStyle: Int = 2 {
        didSet {
            switch self.innerRingStyle {
            case 1: self.inStyle = CGLineCap.butt
            case 2: self.inStyle = CGLineCap.round
            case 3: self.inStyle = CGLineCap.square
            default: self.inStyle = CGLineCap.butt
            }
            
            self.setNeedsDisplay()
        }
    }
    private var inStyle: CGLineCap = .round
    
    // MARK: Booleans
    @IBInspectable var rotateClockWise: Bool = true
    
    // MARK: Label
    /// The label for the value, will change an animate when value is set
    lazy private var valueLabel: UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
    
    @IBInspectable public var textColor: UIColor = UIColor.black {
        didSet {
            self.setNeedsDisplay()

    override public func draw(_ rect: CGRect) {
        drawOuterRing()
        drawInnerRing()
        if shouldShowValueText {
            drawValueLabel()
        }
    }
    
    private func drawOuterRing() {
