 		view.point = point
 		view.sendToBack()
 		
-	saveCurrentToHistory: (animation) ->
+	saveCurrentToHistory: (incomingAnimation,outgoingAnimation) ->
 		@history.unshift
 			view: @current
-			animation: animation
+			incomingAnimation: incomingAnimation
+			outgoingAnimation: outgoingAnimation
 
 	back: -> 
 		previous = @history[0]
 		if previous.view?
 
-			animProperties = 
-				layer: previous.view
-				properties:
-					x: if previous.view.originalPoint? then previous.view.originalPoint.x else 0
-					y: if previous.view.originalPoint? then previous.view.originalPoint.y else 0
-					scale: 1
-					brightness: 100
-
-			animation = new Animation animProperties
-			animation.options.curveOptions = previous.animation.options.curveOptions
-			animation.start()
-	
-			anim = previous.animation
-			backwards = anim.reverse()
-			backwards.start()
+			backIn = previous.outgoingAnimation.reverse()
+			moveOut = previous.incomingAnimation.reverse()
+
+			# Switch which animation that should carry the delay, if any
+			moveOutDelay = moveOut.options.delay
+			moveOut.options.delay = backIn.options.delay
+			backIn.options.delay = moveOutDelay
+
+			backIn.start()
+			moveOut.start()
+
 			@current = previous.view
 			@history.shift()
-			backwards.on Events.AnimationEnd, =>
+			moveOut.on Events.AnimationEnd, =>
 				@current.bringToFront()
 
 	applyAnimation: (newView, incoming, animationOptions, outgoing = {}) ->

				match = exisitingLayers[sub.name]
				newFrame = sub.frame
				prevFrame = match.frame
				if prevFrame.width > newFrame.width # use largest image during animation
					sub.originalImage = sub.image
					sub.image = match.image
				sub.frame = prevFrame
				animationObj = 
					properties:

						y: newFrame.y
						width: newFrame.width
						height: newFrame.height
						opacity: 1
			else # fade in new layers
				sub.opacity = 0
				animationObj = 
					properties:
						opacity: 1
			_.extend animationObj, animationOptions
			sub.animate animationObj

	# Backwards compatibility
	transition: (newView, direction = 'right') ->
