         textColorAnimation.fromValue           = animationTextColor.colorWithAlphaComponent(AnimationConstants.fromTextColorAlpha).CGColor
         textColorAnimation.toValue             = animationTextColor.CGColor
         textLayer.foregroundColor = animationTextColor.CGColor
-        textLayer.addAnimation(textColorAnimation, forKey: "TextColor")
+        textLayer.addAnimation(textColorAnimation, forKey: nil)
     }
     
     private func animateRipple() {
-        let fadeOutOpacity = CABasicAnimation(keyPath: AnimationKeyPath.opacity.rawValue)
-        fadeOutOpacity.fromValue = 1
-        fadeOutOpacity.toValue   = 0
-
-        let scale = CABasicAnimation(keyPath: AnimationKeyPath.transformScale.rawValue)
-        scale.fromValue = AnimationConstants.rippleFromScale
-        scale.toValue   = 1
+        let opacityType: AnimationType = .opacity
+        let fadeOutOpacity = CABasicAnimation(keyPath: opacityType.keyPath)
+        fadeOutOpacity.fromValue = opacityType.fromValue
+        fadeOutOpacity.toValue   = AnimationConstants.rippleToAlpha
+
+        let scaleType: AnimationType = .transformScale
+        let scale = CABasicAnimation(keyPath: scaleType.keyPath)
+        scale.fromValue = scaleType.fromValue
+        scale.toValue   = AnimationConstants.rippleToScale
 
         let animationGroup = CAAnimationGroup()
         animationGroup.duration       = animationDuration

        case opacity
        case transformScale  = "transform.scale"
        
        
    }
    
    private var superLayer: CALayer!

    
    private func setRippleLayer() {
        setRippleLayerPosition()
        rippleLayer.opacity = 0
        superLayer.addSublayer(rippleLayer)

        subRippleLayer.opacity = 0
