                 self.rippleBackgroundView.alpha = 1
             },
             completion: {(success: Bool) -> () in
-                UIView.animateWithDuration(0.6 ,
+                // Fast Touch Up Response: Original animation time is 0.6. Too long animation interval causes slow response to fast consecutive button press!
+                UIView.animateWithDuration(self.touchUpAnimationTime,
                     animations: {
                         self.rippleBackgroundView.alpha = 0
                     }, completion: nil)

    private var tempShadowRadius: CGFloat = 0
    private var tempShadowOpacity: Float = 0
    private var touchCenterLocation: CGPoint?
    
    private var rippleMask: CAShapeLayer? {
        get {

    @IBInspectable var shadowRippleRadius: Float = 1
    @IBInspectable var shadowRippleEnable: Bool = true
    @IBInspectable var trackTouchLocation: Bool = false
    @IBInspectable var fastTouchUpResponse: Bool = true {
        didSet {
            if fastTouchUpResponse {
                touchUpAnimationTime = 0.1
            } else {
                touchUpAnimationTime = 0.6
            }
        }
    }
    
    let rippleView = UIView()
    let rippleBackgroundView = UIView()
