     override protected function createConsolidatedEffect():IEffect
     {        
         // If we have no cachedNavigator then there is not much we can do.
-        if (!cachedNavigator)
+        if (!cachedNavigator && mode == ZoomViewTransitionMode.OUT)
             return null;
         
-        // Add a group to contain our snapshot view of the navigator while
-        // we animate.
-        transitionGroup = new Group();
-        transitionGroup.includeInLayout = false;
-        
+        // Add a group to contain our snapshot view of the original navigator.
+        cachedNavigatorGroup = new Group();
+        cachedNavigatorGroup.includeInLayout = false;
+        cachedNavigatorGroup.addElement(cachedNavigator);
+        cachedNavigator.includeInLayout = false;
+
         // Add our temporary transition group to our target navigator's parent
         // so we can make it and the original navigator siblings.
         if (mode == ZoomViewTransitionMode.OUT)
-            addComponentToContainer(transitionGroup, DisplayObjectContainer(targetNavigator).parent as UIComponent);
+        {
+            addComponentToContainer(cachedNavigatorGroup, DisplayObjectContainer(targetNavigator).parent as UIComponent);
+            
+            // We'll be zooming out our cachedNavigatorGroup.
+            transitionGroup = cachedNavigatorGroup;
+        }
         else
-            addComponentToContainerAt(transitionGroup, DisplayObjectContainer(targetNavigator).parent as UIComponent,0);
-        
-        // Position our snapshot above endView.
-        cachedNavigator.includeInLayout = false;
-        transitionGroup.addElement(cachedNavigator);
-    
-        // Ensure that appropriate surfaces are cached and snapshots rendered.
+        {
+            transitionGroup = new Group();
+            transitionGroup.includeInLayout = false;
+            addComponentToContainer(cachedNavigatorGroup, DisplayObjectContainer(targetNavigator).parent as UIComponent);
+            
+            // We'll be zooming in our snapshot of the new navigator. Host our 
+            // snapshot and make sure it's rendered.
+            cachedNavigatorGroup.addElement(transitionGroup);
+            transitionGroup.addElement(targetShapshot);
+            cachedNavigatorGroup.validateNow();
+            
+            // Hide our real navigator.
+            endViewProps = {visible:targetNavigator.skin.visible}
+            targetNavigator.skin.visible = false;
+        }
+        
         transitionGroup.validateNow();
         transitionGroup.x = transitionGroup.y = 0;
-            
-        zoomTarget = (mode == ZoomViewTransitionMode.OUT) ? transitionGroup : targetNavigator.skin;
-        
+
         // Initialize our target's transform center.
-        zoomTarget.transformX = cachedNavigator.getLayoutBoundsWidth(true) / 2;
-        zoomTarget.transformY = cachedNavigator.getLayoutBoundsHeight(true) / 2;
+        transitionGroup.transformX = cachedNavigator.getLayoutBoundsWidth(true) / 2;
+        transitionGroup.transformY = cachedNavigator.getLayoutBoundsHeight(true) / 2;
         
         // Ensure our alpha is initialized to 0 prior to the start
         // of our transition so that the view isn't displayed briefly
         // after validation.
         if (mode == ZoomViewTransitionMode.IN)
-            zoomTarget.alpha = 0;
-                
-        // Save view properties for restoration later.
-        startViewProps = { targetNavigatorIncludeInLayout:targetNavigator.includeInLayout,
-            zoomTargetBlendMode:zoomTarget.blendMode};
-        
-        // Disable layout for our target navigator.
-        targetNavigator.includeInLayout = false;
+            transitionGroup.alpha = 0;
         
         // Set our blendMode to 'normal' for performance reasons.
-        zoomTarget.blendMode = BlendMode.NORMAL;
-        
-        return createZoomEffect(zoomTarget);
+        transitionGroup.blendMode = BlendMode.NORMAL;
+        
+        return createZoomEffect(transitionGroup);
     }
     
     /**

        
        return parallel;    
    }

    /**
     *  @private
     *  Ensures transform matrix is updated even if layout is disabled.
     */ 
    private function scaleEffectUpdateHandler(e:Event):void
    {
        zoomTarget.validateDisplayList();
    }
    
}

     *  Property bag used to save any start view properties that 
     *  are then restored after the transition is complete.
     */
    private var startViewProps:Object;
    
    /**
     *  @private
     *  Property bag used to save any end view properties that 
     *  are then restored after the transition is complete.
     */
    private var endViewProps:Object;
    
    /**
     *  @private
