 		
 		return unless @session 
 
-		# if event.fingers > 1 and not not @session.startMultiEvent
-		# 	@session.startMultiEvent = event
-		# if event.fingers == 1
-		# 	@session.startMultiEvent = null
-
 		# Detect pan events
-		if not @session.started.pan and (Math.abs(event.offset.x) > 0 or Math.abs(event.offset.y) > 0)
-			@panstart(event)
-		else if @session.started.pan
-			@pan(event)
+
+		# See if there was any movement
+		if Math.abs(event.delta.x) > 0 or Math.abs(event.delta.y) > 0
+			if not @session.started.pan
+				@panstart(event)
+			else
+				@pan(event)
+
 
 		# Detect pinch, rotate and scale events
+
+		# Stop panning if we go from 2 to 1 finger
 		if @session.started.pinch and event.fingers == 1
 			@pinchend(event)
+		# If we did not start yet and get two fingers, start
 		else if not @session.started.pinch and event.fingers == 2 
-			@pinchstart(event)	
+			@pinchstart(event)
+		# If we did start send pinch events
 		else if @session.started.pinch
 			@pinch(event)
 			
 		# Detect swipe events
-		if not @session.started.swipe and  event.fingers == 1
-			if Math.abs(event.offset.x) > 30 or Math.abs(event.offset.y) > 30
+
+		# If we did not start but moved more then the swipe threshold, start
+		if not @session.started.swipe and (Math.abs(event.offset.x) > 30 or Math.abs(event.offset.y) > 30)
 				@swipestart(event)
+		# If we did start send swipe events
 		else if @session.started.swipe
 			@swipe(event)
 		

		@session = null
	
	touchstart: (event) =>
		return if event.touches.length > 1
		@em.wrap(window).addEventListener("touchmove", @touchmove)
		@em.wrap(window).addEventListener("touchend", @touchend)
		

		@_process(event)

		for eventName, value of @session.started
			@["#{eventName}end"](event) if value

		@tap(event)
		@tapend(event)
