         setCollectionViewLayout(regularLayout, animated: false)
         
         tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "handleTapGesture:")
+        addGestureRecognizer(tapGestureRecognizer)
+        
         longPressRecognizer = UILongPressGestureRecognizer(target: self, action: "handleLongPressGesture:")
+        longPressRecognizer.delegate = self
+        addGestureRecognizer(longPressRecognizer)
+        
         panAndStopGestureRecognizer = PanAndStopGestureRecognizer(target: self, action: "handlePanGesture:", stopAfterSecondsWithoutMovement: 0.2) {
             (gesture:PanAndStopGestureRecognizer) in self.handlePanGestureStopped(gesture)
         }
-        
-        addGestureRecognizer(tapGestureRecognizer)
-        addGestureRecognizer(longPressRecognizer)
+        panAndStopGestureRecognizer.delegate = self
         addGestureRecognizer(panAndStopGestureRecognizer)
     }
     

        case longPressRecognizer:
            return true
        case panAndStopGestureRecognizer:
            return true //currentDragState != nil
        default:
            return super.gestureRecognizerShouldBegin(gesture)
        }

    }
    
    func handlePanGesture(gesture: PanAndStopGestureRecognizer) {
        if gesture.state == .Began || gesture.state == .Changed {
            if let dragState = currentDragState {
                let translation = gesture.translationInView(self)
                
                // TODO: I don't think this is right yet... Re-check this math, do we really need both originalCenter and addTranslation
                // saved too?
                dragState.dragProxyView.center = CGPoint(x: dragState.originalCenter.x + translation.x,
                    y: dragState.originalCenter.y + translation.y)
            }
        }
    }
    
    func handlePanGestureStopped(gesture: PanAndStopGestureRecognizer) {
        println("Pan stopped!")
    }
    
    // TODO: Not happy with "info", come up with a better name
