 		checkmarkAnimationGroup.animations = [checkmarkStrokeEnd, checkmarkStrokeStart]
 		checkmark.addAnimation(checkmarkAnimationGroup, forKey: "checkmarkAnimation")
 		
-		var circleAnimationGroup = CAAnimationGroup()
+		let circleAnimationGroup = CAAnimationGroup()
 		circleAnimationGroup.duration = animationDuration
 		circleAnimationGroup.removedOnCompletion = false
 		circleAnimationGroup.fillMode = kCAFillModeForwards
 		circleAnimationGroup.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
 		
-		var circleStrokeEnd = CABasicAnimation(keyPath: "strokeEnd")
+		let circleStrokeEnd = CABasicAnimation(keyPath: "strokeEnd")
 		circleStrokeEnd.duration = circleAnimationDuration
 		if selected {
 			circleStrokeEnd.beginTime = 0.0

		if layer == self.layer {
			
			var offset: CGPoint = CGPointZero
			var radius = fmin(self.bounds.width, self.bounds.height) / 2
			offset.x = (self.bounds.width - radius * 2) / 2.0
			offset.y = (self.bounds.height - radius * 2) / 2.0
			
			CATransaction.begin()
			CATransaction.setDisableActions(true)
			
			var ovalRect = CGRectMake(offset.x, offset.y, radius * 2, radius * 2)
			
			var circlePath = UIBezierPath(ovalInRect: ovalRect)
			trailCircle.path = circlePath.CGPath
			
			circle.transform = CATransform3DIdentity

			checkmarkStrokeEnd.keyTimes = [NSNumber(double: 0.0), NSNumber(double: checkmarkBounceDuration), NSNumber(double: checkmarkEndDuration + checkmarkBounceDuration)]
		}
		
		let checkmarkStrokeStart = CAKeyframeAnimation(keyPath: "strokeStart")
		checkmarkStrokeStart.duration = checkmarkStartDuration + checkmarkBounceDuration
		checkmarkStrokeStart.removedOnCompletion = false
		checkmarkStrokeStart.fillMode = kCAFillModeForwards
