                 navigator = navigators[_selectedIndex];
                 
                 navigator.addEventListener("viewChangeComplete", navigator_viewChangeCompleteHandler);
+                navigator.addEventListener("viewChangeStart", navigator_viewChangeStartHandler);
                 navigator.addEventListener(ElementExistenceEvent.ELEMENT_ADD, navigator_elementAddHandler);
                 navigator.addEventListener(ElementExistenceEvent.ELEMENT_REMOVE, navigator_elementRemoveHandler);
                 
                 navigator.setActive(true);
                 navigator.visible = true;
                 navigator.includeInLayout = true;
-                
-                // FIXME (chiedozi): Why do i need to validate here
-                // Force a validation of the new navigator to prevent a flicker from
-                // occurring since the view will be rendered this frame
-                navigator.validateNow();
                 
                 if (navigator.activeView)
                 {

        setupNavigator(ViewNavigatorBase(item));
        addElementAt(ViewNavigatorBase(item), index);
        
        // FIXME (chiedozi): I feel that this is wrong, shouldn't dispatch this before
        // updating my selection
        internalDispatchEvent(CollectionEventKind.ADD, item, index);
        
        // FIXME (chiedozi): When there is no selectedIndex, this call results in
        // selectedIndex being called 3 times...
        if (selectedIndex == NO_PROPOSED_SELECTION)
        {
            selectedIndex = 0;

    /**
     * @private
     */
    public function set selectedIndex(value:int):void
    {
        if (value < -1 || value >= length) 
