                     dv.alpha = 1
                 }, completion: { (Bool) -> Void in
                     dv.removeFromSuperview()
+                    self.draggingView = nil
+                    self.dragOriginalCenter = nil
                 })
             }
         default:
-            println("Something else")
+            break
+        }
+    }
+    
+    func handlePan(gesture: UIPanGestureRecognizer) {
+        switch gesture.state {
+        case UIGestureRecognizerState.Began, UIGestureRecognizerState.Changed:
+            if let dv = draggingView {
+                let translation = gesture.translationInView(view)
+                dv.center = CGPoint(x: dragOriginalCenter!.x + translation.x, y: dragOriginalCenter!.y + translation.y)
+            }
+        default:
+            break
         }
     }
     

            if let cell = cellForGesture(gesture) {
                grabCell(cell, gesture:gesture)
            }
        case UIGestureRecognizerState.Changed:
            if let dv = draggingView {
                dv.center = gesture.locationInView(view)
            }
        case UIGestureRecognizerState.Ended, UIGestureRecognizerState.Cancelled:
            if let dv = draggingView {
                UIView.animateWithDuration(0.2, animations: { () -> Void in

    var folderDataSource = FolderDataSource()
    var zoomedLayout = CollectionViewLayout()
    var regularLayout = CollectionViewLayout()
    var dragOriginalCenter: CGPoint?
    var draggingView: UIView?
    var panRecognizer: UIPanGestureRecognizer?
    var longPressRecognizer: UILongPressGestureRecognizer?
    
    override func viewDidLoad() {
        super.viewDidLoad()
