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

    public var itemViewPanDownResistance = CGFloat(1.8)
    public var itemViewPanDownResistanceMax = CGFloat(0.9)
    public var itemViewPanDownResistanceMin = CGFloat(0.0)
    
    private var itemViews: [UIView] = []
    private var absoluteOffset = CGFloat(0)

        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
