     /**
      *  @private
      */ 
-    private function destoryViewInstance(viewData:ViewHistoryData):void
-    {
-        var currentView:View = viewData.instance;
-        
-        removeElement(currentView);
-        
-        currentView.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, 
-            view_propertyChangeHandler);
-        
-        // Grab the data from the old view and persist it
-        if (lastAction == ViewNavigatorAction.PUSH)
-        {
-            viewData.data = currentView.data;
-            viewData.persistedData = currentView.serializeData();
-        }
-        
-        // Check if we can delete the reference for the view instance
-        if (lastAction == ViewNavigatorAction.POP || currentView.destructionPolicy == "auto")
-        {
-            currentView.navigator = null;
-            viewData.instance = null;
+    override mx_internal function createTopView():void
+    {
+        // Check if the top view already exists
+        if (activeView)
+            return;
+        
+        invalidateActionBarProperties();
+        
+        // If the navigation stack is empty, push on the firstView for the
+        // navigator.
+        if (navigationStack.length == 0)
+        {
+            if (firstView != null)
+                navigationStack.push(firstView, firstViewData);
+        }
+        
+        // Update the current view reference
+        currentViewData = navigationStack.topView;
+        
+        // Create the view if needed
+        var view:View = currentViewData.instance;
+        if (!view)
+        {
+            view = createViewInstance(currentViewData);
+            view.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, view_propertyChangeHandler);
         }
     }
     

    
    /**
     *  @private
     */
    override public function saveViewData():Object
    {

            {
                currentView.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, 
                                                view_propertyChangeHandler);
                currentView.setActive(true);
            }
        }
        
