 		@fadeIn newView, animationOptions
 
 	fadeInBlack: (newView, animationOptions = @animationOptions) ->
-		outgoing =
-			start: 
+		midAnimationTime = 
+		outgoing =
+			start:
 				brightness: 100
 			end:
 				brightness: 0
-		incoming =
-			start: 
-				opacity: 0
+			delay: 0
+		incoming =
+			start:
 				brightness: 0
-				x: @getPoint(newView).x
-				y: @getPoint(newView).y
-			end:
-				opacity: 1
+				opacity: 0
+				x: @getPoint(newView).x
+				y: @getPoint(newView).y
+			end:
 				brightness: 100
+				opacity: 1
+			delay: animationOptions.time/1.5
 		@applyAnimation newView, incoming, animationOptions, outgoing
 			
 	zoomIn: (newView, animationOptions = @animationOptions) ->

			# reset common properties in case they
			# were changed during last animation
			#@current.z = 0
			newView.opacity = 1
			newView.brightness = 100
			newView.scale = 1

			@add newView if @subLayers.indexOf(newView) is -1

			# Animate the current view
			_.extend @current, outgoing.start
			outgoingAnimation = 
				layer: @current
				properties: {}
			_.extend outgoingAnimation.properties, outgoing.end
			_.extend outgoingAnimation, animationOptions
			animation = new Animation(outgoingAnimation)
			animation.start()

			# Animate the new view
			_.extend newView, incoming.start
			incomingAnimation = 
				layer: newView
				properties: {}
			_.extend incomingAnimation.properties, incoming.end
			_.extend incomingAnimation, animationOptions
			animation = new Animation(incomingAnimation)
			animation.start()

			@saveCurrentToHistory animation
			@current = newView
			@current.bringToFront()


		view.point = point
		view.sendToBack()
		
	saveCurrentToHistory: (incomingAnimation,outgoingAnimation) ->
		@history.unshift
			view: @current
			incomingAnimation: incomingAnimation
			outgoingAnimation: outgoingAnimation

	back: -> 
		previous = @history[0]
		if previous.view?

			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()
			moveOut.on Events.AnimationEnd, =>
				@current.bringToFront()

	applyAnimation: (newView, incoming, animationOptions, outgoing = {}) ->
