Number of Children 0?

this is the order>
document> add screenHandler>add introScreen>add buttonToMenuScreen

buttonToMenuScreen dispatches “menuString” document hears “menuScreen”

calls screenHandler switchTo() switchTo() calls switchScreens() switchScreens calls removeOldScreen() and calls makeNewScreen()

removeOldScreen() tries to get and remove child at 0 problem is there is NO child at 0!!! where the H is introScreen living? i was lookin right at it a second ago!

here's my error

RangeError: Error #2006: The supplied index is out of bounds.
    at flash.display::DisplayObjectContainer/getChildAt()
    at ScreenHandler/removeOldScreen()
    at ScreenHandler/switchScreens()
    at ScreenHandler/switchTo()
    at Document/handleToMenuScreen()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at Button1/handleClick()

here’s my code

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
        {
            var introScreen:IntroScreen=new IntroScreen;
            screens.x=0;
            screens.y=0;
            this.addChild(screens);
            screens.addChild(introScreen);
            introScreen.buttonToMenuScreen.addEventListener("menuScreen",handleToMenuScreen)
            trace("switched");
            
            removeChild(loadingProgress);
            loaderInfo.removeEventListener( Event.COMPLETE, onCompletelyDownloaded );
            loaderInfo.removeEventListener( Event.COMPLETE, onProgressMade );
            //traceDL(stage);
            

        }
        public function handleToMenuScreen(screenChoice:String):void
        {
            trace("handleToMenuScreen"+ screenChoice);
            screens.switchTo(screenChoice);
        }
    }
}

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();
        
        
        public function ScreenHandler() 
        {
            trace("screenHandler");
            this.addChild(screenLayer);
            
        }
        
        
            public function switchTo(screenName:String):void
            { trace("switchTo()"+ screenName);
                newScreenName = screenName;
                switchScreens();
            }

        
          
            private function switchScreens():void
                {
                    trace("switchScreens()");
                    trace("screenLayer children" + screenLayer.numChildren);
                    
                    removeOldScreen();
                    makeNewScreen();
                }

                
        
        private function removeOldScreen():void
        {
            trace("removeOldScreen"+ screenLayer.getChildAt(0))
            var oldScreen:MovieClip;
            oldScreen = screenLayer.getChildAt(0) as MovieClip;
            screenLayer.removeChild(oldScreen);
        }

        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:
                trace("adding IntroScreen  default");
                    introScreen = new IntroScreen();
                    screenLayer.addChild(introScreen);
                break;
            }
        newScreenName = "";
    }




     }
}