         CATransaction.commit()
     }
     
+    private func checkmarkLayerWithColor(color:UIColor) -> CAShapeLayer {
+        var ret = CAShapeLayer()
+        
+        ret.strokeColor = color.CGColor
+        ret.fillColor   = UIColor.clearColor().CGColor
+        ret.lineCap     = kCALineCapRound
+        ret.lineJoin    = kCALineJoinRound
+        ret.lineWidth   = self.lineWidth
+        ret.path        = self.checkmarkPath.CGPath
+        
+        return ret
+    }
+    
     private var _lineLayer: CAShapeLayer? {
         didSet {
             oldValue?.removeFromSuperlayer()

    private var lineLayer: CAShapeLayer! {
        get {
            if _lineLayer == nil {
                _lineLayer = CAShapeLayer()
                
                _lineLayer!.strokeColor = lineColor.CGColor
                _lineLayer!.fillColor   = UIColor.clearColor().CGColor
                _lineLayer!.lineCap     = kCALineCapRound
                _lineLayer!.lineJoin    = kCALineJoinRound
                _lineLayer!.lineWidth   = lineWidth
                _lineLayer!.path        = checkmarkPath.CGPath
                
                self.layer.addSublayer(_lineLayer)
            }

    private var lineHighlightedLayer: CAShapeLayer! {
        get {
            if _lineHighlightedLayer == nil {
                _lineHighlightedLayer = checkmarkLayerWithColor(lineHighlightedColor)
                
                self.layer.addSublayer(_lineHighlightedLayer)
            }
