Trying to add Intro Screen with a screenHandler

Im trying to get my screen handler to work with transition(probably 2 early fortransitions) but here is the order:

preloader (working)
remove preloader (working)
start screenHandler (working)
makeNewScreen() in ScreenHandler(works up until the switch and then NADA)

i see a smaller than the stage box outline then a transition and then nothing the trace statements stop right before the new introScreen is supposed to load and it just loops through the transition over and over Never loading the IntroScreen

AND inside switchScreens() once the transTimer reaches 11

 if(transTimer == Transition1.exitFrames)

i get
RangeError: Error #2006: The supplied index is out of bounds.
at flash.display: displayObjectContainer/getChildAt()
at ScreenHandler/removeOldScreen()
at ScreenHandler/switchScreens()

here’s the document


package
{
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.ProgressEvent;
    import traceDL;
    
    public class Document extends MovieClip
    {
        public var loadingProgress:LoadingProgress;
        public static var screens:ScreenHandler = new ScreenHandler();


        public function Document():void
        {
            loadingProgress = new LoadingProgress();
            loadingProgress.x = this.parent.width/2;
            loadingProgress.y = this.parent.height/2;
            addChild( loadingProgress );
            loaderInfo.addEventListener( Event.COMPLETE, onCompletelyDownloaded );
            loaderInfo.addEventListener( ProgressEvent.PROGRESS, onProgressMade );
            //this.addChild(screens);
            //Application.screens.switchTo("SelectedScreen");
            //Application.screens.switchTo("SelectedScreen", false);



        
        }
        public function onProgressMade( progressEvent:ProgressEvent ):void
        {
            loadingProgress.setValue( Math.floor( 100 * loaderInfo.bytesLoaded / loaderInfo.bytesTotal ) );
            
        }
        public function onCompletelyDownloaded( event:Event ):void
        {
            gotoAndStop(3);
            playGame();
        }
        public function playGame():void
        {
            this.addChild(screens);
            screens.switchTo("IntroScreen",true);
            trace("switched");
            
            removeChild(loadingProgress);
            loaderInfo.removeEventListener( Event.COMPLETE, onCompletelyDownloaded );
            loaderInfo.removeEventListener( Event.COMPLETE, onProgressMade );
            //traceDL(stage);
            

        }
    }
}

here’s the screenHandler


package  {
    import flash.display.Sprite;
    import flash.display.MovieClip;
    import flash.events.Event;

    public class ScreenHandler extends Sprite{
        private var menuScreen:MenuScreen;
        private var playScreen:PlayScreen;
        private var mBase:MBase;
        private var asBase:AsBase;
        private var introScreen:IntroScreen;
        
        private var newScreenName:String = "";
        
        private var screenLayer:Sprite = new Sprite();
        private var transitionLayer:Sprite = new Sprite();
        private var transition:Transition1;
        private var transTimer:Number = 0;
        private var makeTransition:Boolean;
        
        public function ScreenHandler() {
            //trace("screenHandler");
            this.addChild(screenLayer);
            this.addChild(transitionLayer);
            //introScreen = new IntroScreen();
            //screenLayer.addChild(introScreen);
        }
        
        public function switchTo(screenName:String, trans:Boolean=true):void{
            newScreenName = screenName;
            makeTransition = trans;
            trace("switch to");
            trace("newScreenName=" + newScreenName);
            this.addEventListener(Event.ENTER_FRAME, switchScreens);
        }
        
            private function switchScreens(e:Event):void
            {
                if(makeTransition)
                {
                    transTimer++;
                    trace("insideSwitchScreens");
                    trace(transTimer);
                    if(transTimer == 1 && transitionLayer.numChildren < 1)
                    {
                    transition = new Transition1();
                        transitionLayer.addChild(transition);
                        trace("transitionAdded");
                    }
                    if(transTimer == Transition1.exitFrames)
                    {
                        removeOldScreen();
                        trace("removeOldScreen");
                        makeNewScreen();
                        trace("makeNewScreen from switchScreens");
                        transTimer = 0;
                        this.removeEventListener(Event.ENTER_FRAME, switchScreens);
                    }
                 } 
            else 
                {
                removeOldScreen();
                trace("else removeOldScreen");
                makeNewScreen();
                trace("else makeNewScreen");
                this.removeEventListener(Event.ENTER_FRAME, switchScreens);
                }
            }
        
        private function removeOldScreen():void
        {
            var oldScreen:MovieClip;
            oldScreen = screenLayer.getChildAt(0) as MovieClip;
            screenLayer.removeChild(oldScreen);
            trace("oldScreenRemoved");
        }
        private function makeNewScreen():void
        {
            trace("makeNewScreen");
            switch(newScreenName)
            
            {
                case "introScreen":
                    introScreen = new IntroScreen();
                    //introScreen.x=0;
                    //introScreen.y=0;
                    trace("adding IntroScreen");
                    screenLayer.addChild(introScreen);
                break;
                case "menuScreen":
                    menuScreen = new MenuScreen();
                    screenLayer.addChild(menuScreen);
                break;
                case "playScreen":
                    playScreen = new PlayScreen();
                    screenLayer.addChild(playScreen);
                break;
                case "asBase":
                    asBase = new AsBase();
                    screenLayer.addChild(asBase);
                break;
                case "mBase":
                    mBase = new MBase();
                    screenLayer.addChild(mBase);
                break;
        
                default:
                    menuScreen = new MenuScreen();
                    screenLayer.addChild(menuScreen);
                break;
            }
        newScreenName = "";
    }



//Functions go here
     }
}