Reusable endmovie detector. Isn't there a better way?

I’m working on a fairly large corporate presentation which I suggested to do in Flash instead of the usual (and uncool) Powerpoint one.
There is an aspect of AS3 that I feel unconfortable with though, which is that I haven’t found a way of passing variables (other than the event itself) within the addEventListener declaration.
The whole thing is supposed to be modular, with sections going into Flash scenes and what would be “slides” and other props are movie clips that fire when the timing is right.
To do that I have a very simple function that checks the label on the current clip and fires the next action. Now I have its simplest form, which is only checking for the label “end” and continuing to play the main timeline when the clip is done.

function checkend(lapeli:MovieClip):void 
{
    if (lapeli.currentLabel=="end") 
    {
        this.play();
        trace("this clip is over");
        removeEventListener(Event.ENTER_FRAME,chkchk);
    }
}

I have the removeEventListener inside the function so whenever the condition is met, the listener would be cleared and I can reuse it (and also to preserve system resources).
Then what I placed in the main timeline and worked is the following:


stop();
addEventListener(Event.ENTER_FRAME,chkchk);
function chkchk(event:Event):void
{
    checkend(titlescreen);
}

Where “titlescreen” is the name of one of my MovieClips.
At this moment, the script does what I want it to do, which is to fire again the main timeline when the movieclip is done.

Problems with this:

  1. I want to be able to use different listener names since the whole thing is not just a sequence of slides passing. Four or five dependent movieclips can be on the stage at a given time, each with listeners not only at the end, but sometimes in the middle of their timelines that restart the main timeline, in turn firing other dependent clips or perform actions inside themselves depending on user interaction. But so far I haven’t found a way to pass variables directly to the checkend function. I would like to call it like checkend(movie:MovieClip,listenername:String,flag:String,doaction:String), but I can’t do so in the addEventListener declaration, since functions put there don’t seem to take anything other than the event variable itself.
  2. Since I cannot pass variables, I’m stuck with the chkchk function name I use to refer to the listener. So, in the case I have two movies that coexist, but one of it meets the condition before it kills the listener for both (?). So I need to generate independent listeners and be able to remove them whenever they are not needed without affecting listeners for other dependent movieclips.

any ideas on how to make this code more useful, reusable?

Sorry bout the long thread. Trying to get used to AS3.0, but it makes my head hurt.