         for itemView in itemViews {
             itemView.removeFromSuperview()
         }
+        viewPositions.removeAll()
         
         itemViews = {
             guard let dataSource = dataSource else {

            let translation = recognizer.translationInView(self)
            recognizer.setTranslation(CGPointZero, inView: self)
            shiftItemViews(byOffset: translation.x)
            
        case .Ended, .Cancelled, .Failed:
            // TODO: have views settle back to their desired location based on where they currently are

    var animator: UIDynamicAnimator?
    
    func viewWasPanned(recognizer: UIPanGestureRecognizer) {
        print("view was panned: \(recognizer.view!.tag), view: \(recognizer.view!)")
        
        switch recognizer.state {
        case .Possible, .Began:
            decelerateDisplayLinkProgressor = nil
