 			event.deltaTime = event.time - @session.lastEvent.time
 			event.previous = @session.lastEvent.point
 
+			# If the amount of fingers changed we don't send any delta
 			if @session.lastEvent.fingers != event.fingers
 				event.delta = {x:0, y:0}
-			else if @session.lastEvent.fingers == event.fingers == 2
+			# If there are exactly two fingers we use their center point as delta,
+			# this works because we use the single finger point as center when there
+			# is only one finger in this touch.
+			else
 				event.delta = Utils.pointSubtract(event.touchCenter, @session.lastEvent.touchCenter)
-			else
-				event.delta = Utils.pointSubtract(event.point, event.previous)
 
 		if event.touches.length > 0
 			

		
		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)

		# Detect pinch, rotate and scale events
		if @session.started.pinch and event.fingers == 1
			@pinchend(event)
		else if not @session.started.pinch and event.fingers == 2 
			@pinchstart(event)	
		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
				@swipestart(event)
		else if @session.started.swipe
			@swipe(event)
		

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