     public var itemViewPanDownResistance = CGFloat(1.8)
     public var itemViewPanDownResistanceMax = CGFloat(0.9)
     public var itemViewPanDownResistanceMin = CGFloat(0.0)
+    
+    public var itemViewRemovalEscapeVelocity = CGFloat(-100)
+    public var itemViewRemovalAnimationDuration = 0.15
+    public var itemViewRemovalFailureAnimationDuration = 0.25
     
     private var itemViews: [UIView] = []
     private var absoluteOffset = CGFloat(0)

        var position = viewPositions[itemView]!
        position.y = -itemView.frame.height
        
        // TODO: move constant here
        UIView.animateWithDuration(0.15, delay: 0, options: [.CurveLinear], animations: {
            self.updateItemView(itemView, withPosition: position)
            
            }, completion: { (finished) in

        case .Ended:
            let velocity = recognizer.velocityInView(self)
            
            // If the user swipes up with a great enough velocity or
            // if the panned view has been moved up enough, then remove it
            if velocity.y < itemViewRemovalEscapeVelocity || pannedView.frame.maxY < center.y {
                animateRemoval(ofItemView: pannedView)
            }
            // Otherwise animate a snapping back of the view into its position
            else {
                UIView.animateWithDuration(itemViewRemovalFailureAnimationDuration, animations: {
                    var newPosition = viewPosition
                    // TODO: make the resting location common code
                    newPosition.y = self.bounds.height / 2.0 - pannedView.bounds.height / 2.0
