     
     public var progressValue   : Double = 0.5 {
         didSet {
-            self.setNeedsDisplay()
+            self.updateValues()
         }
     }
     
     public var minValue        : Double = 0 {
         didSet {
-            self.setNeedsDisplay()
+            self.updateValues()
         }
     }
     
     public var maxValue        : Double = 1 {
         didSet {
-            self.setNeedsDisplay()
+            self.updateValues()
         }
     }
     

        let endAngle : CGFloat = CGFloat(startAngle) + CGFloat(M_PI * 2)
        let percent = CGFloat((progressValue - minValue) / (maxValue - minValue))
        
        let path = UIBezierPath()
        path.lineWidth = CGFloat(self.lineWidth)

        path.addArcWithCenter(center,
            radius: (rect.size.width / 2) - path.lineWidth,
            startAngle: startAngle,
            endAngle: (endAngle - startAngle) * percent + startAngle,
            clockwise: true
        )
        
        UIColor.redColor().setStroke()
        UIColor.greenColor().setFill()
        path.stroke()
    }
    
}
        }
    }
    
    public var traceColor       : UIColor = UIColor.grayColor() {
        didSet {
            self.setNeedsDisplay()
        }
    }

    public var lineColor       : UIColor = UIColor.blackColor() {
        didSet {
            self.setNeedsDisplay()
        }
    }

    override public func drawRect(rect: CGRect)
    {
