[as2 cs3] multiple tweens -- error

hi everybody,

i have the following problem i´ve been trying to fix for the past two days without any luck…

I´m remaking a main menu for a website where the buttons move up and down regarding which menu item is selected / open…
the different sub-menus are “within” masks
and for moving the menu items i´m using the tween class
all the code is in the 1st frame of the main timeline, besides that there is no code in or frames(so everything in code)

i´ve created a function closeAll which is supposed to close all the menu items , move everything up a certain distance and scale down the masks to “1”.

this goes wrong all the time…
at least, when i use the same “tween time” for all tweens it goes well, if i use different “tween times” for tweens it goes wrong and especially with the masks. after the tweens finish the scale “pops” back to 100%

i´ve tried a number of different solutions yet.
all different “var tw:tween = new tween” in stead of all children of one, the same, tween.
a tween.onMotionChange scale (so no tween at all)
having it wait for tween 1 to finish before starting tween 2
etc etc…

nothing seems to be working,
if i use different “tween times” (which is a must or it´ll look weird since different items need to travel different distances)
sometimes the mask pops to 100% after tweening
but most of all is this very unpredictable, it doesn´t happen every time…

after reading a lot on the web, i suspect it has to do something with the garbagecollector of flash but i´m not at all sure about that…

does anybody have a clue what could be the problem and how i could solve it?
worst case scenario i could do it in timelines i think but that would be such an incredible puzzle i´d like to avoid that.

besides that it might be worth mentioning i have very little experience in as2 but a lot of experience in as3…

this is the function closeAll I´m talking about


C8open = false;
        collectionOpen = false;
        
        for(var i:Number = 5; i<collectionArray.length; i++)
        {    
            tw1= new Tween(collectionArray*,"_y",None.easeOut,collectionArray*._y,collYArray*,eerstehalf,true);
        }
                
        for(var i:Number = 1; i<btnArray.length; i++)            // move the main menu back
        {
            tw1 = new Tween(btnArray*,"_y",None.easeOut,btnArray*._y,btnYArray*+130,eerstehalf,true);
        }
        
        tw1 = new Tween(line1,"_y",None.easeOut,line1._y, 223.5 + 130,eerstehalf,true);
        tw1 = new Tween(line2,"_y",None.easeOut,line2._y, 277.5 + 130,eerstehalf,true);
        tw1 = new Tween(line3,"_y",None.easeOut,line3._y, 334.5 + 130,eerstehalf,true);
                
        tw1 = new Tween(c8line2,"_y",None.easeOut,c8line2._y,226.2,eerstehalf,true);
        tw1 = new Tween(c8line3,"_y",None.easeOut,c8line3._y,243.8,eerstehalf,true);
        
        tw1 = new Tween(collectionMask,"_yscale",None.easeOut,collectionMask._yscale,130,eerstehalf,true);
        tw1 = new Tween(c8Mask,"_yscale",None.easeOut,c8Mask._yscale,c8nul,eerstehalf,true);
         
        tw1.onMotionFinished = function() 
        {
            for(var i:Number = 1; i<btnArray.length; i++)
            {    
                tw1 = new Tween(btnArray*,"_y",Strong.easeOut,btnArray*._y,btnYArray*,eerstehalf,true);
            }
            tw1 = new Tween(line1,"_y",Strong.easeOut,line1._y,223.5,eerstehalf,true);
            tw1 = new Tween(line2,"_y",Strong.easeOut,line2._y,277.5,eerstehalf,true);
            tw1 = new Tween(line3,"_y",Strong.easeOut,line3._y,334.5,eerstehalf,true);
            tw1 = new Tween(collectionMask,"_yscale",Strong.easeOut,collectionMask._yscale,1,eerstehalf,true);
        };

thanks a lot in advance…