Removing event listeners problem [AS3]

Hi,
I have created particle effect adding onMouseMove random MC’s to stage.
There are two buttons on stage. On MOUSE_OVER I want to remove event listeners for particle effect and on MOUSE_OUT i am adding back event listeners. It kind of works, but only with delay, please follow link provided to see it (http://testing.fjofjo.net/). You are still able to hover above buttons and eventlisteners are not removed, only when you stop on a button and last MC has been removed from display list - only then hand cursor appears and event listeners are removed. Why it doesn’t happen immediately , as soon as I’m over my buttons? How to remove eventListeners instantly?
here is my code:

import gs.*;
import gs.easing.*;


stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

stage.addEventListener(Event.RESIZE, resizeHandler);
stage.addEventListener(MouseEvent.MOUSE_MOVE, onLoop);

var sW:Number = stage.stageWidth;
var sH:Number = stage.stageHeight;


var back:Sprite = new Back();            // BACKGROUNG IMAGE
addChild(back);


var btn1:MovieClip = new Btn1();        // BUTTON 1
addChild(btn1);
var btn2:MovieClip = new Btn2();        // BUTTON 2
addChild(btn2);
btn1.y = btn2.y = sH + btn1.height*3;        // SETTING Y VALUES FOR BUTTONS OUTSIDE THE STAGE FOR TWEENING


var btn1_y:Number = sH - btn1.height*3;                        // POSITION OF BUTTONS 
var btn2_y:Number = sH - btn1.height*3;                        // AFTER TWEENING TO STAGE

TweenLite.to(btn1, 0.7,{y:btn1_y, ease:Bounce.easeOut});    // TWEENING BUTTONS
TweenLite.to(btn2, 0.7,{y:btn2_y, ease:Bounce.easeOut});    // TO STAGE

btn1.buttonMode = btn2.buttonMode = true;

btn1.addEventListener(MouseEvent.MOUSE_OVER, btnOver);        // ADDING
btn2.addEventListener(MouseEvent.MOUSE_OVER, btnOver);

btn1.addEventListener(MouseEvent.MOUSE_OUT, bntOut);        // LISTENERS
btn2.addEventListener(MouseEvent.MOUSE_OUT, bntOut);

btn1.addEventListener(MouseEvent.MOUSE_UP, btn1Up);            // TO BUTTONS
btn2.addEventListener(MouseEvent.MOUSE_UP, btn2Up);


function btnOver(e:MouseEvent):void {                            // THIS IS THE PROBLEM
    stage.removeEventListener(MouseEvent.MOUSE_MOVE, onLoop);
                                                                // IT WORKS BUT WITH DELAY
}                                                                // IT DOESN'T REMOVE EVENT LISTENERS INSTANTLY
function bntOut(e:MouseEvent):void {                            // BUT ONLY WHEN onLoop FUNCTION IS DONE
    stage.addEventListener(MouseEvent.MOUSE_MOVE, onLoop);        // ONLY WHEN LAST MOVIE CLIP HAS BEEN REMOVED FROM
}                                                                // DISPLAY LIST
function btn1Up(e:MouseEvent):void {                            
    trace("Button 1 was pressed");                                // ALSO YOU CAN'T CLICK THE BUTTON
}                                                                // UNTIL ONLOOP FUNCTION IS DONE
function btn2Up(e:MouseEvent):void {
    trace("Button 2 was pressed");
}


resizeHandler(null);                            // INITIALIZE
function resizeHandler(event:Event):void {
    var sW:Number = stage.stageWidth;
    var sH:Number = stage.stageHeight;
    btn1.x = (sW/2) - btn1.width;                // SETTING BUTTON X AND Y
    btn1.y = btn2.y = sH - btn1.height*3;        // VALUES WHEN RESIZING
    btn2.x = (sW/2) + btn2.width;                // THE STAGE

    back.width = sW;            // X AND Y VALUES
    back.height = sH;            // FOR BACKGROUND IMAGE
    back.x = back.y = 0;        // ON RESIZING
}


var myFont:Font = new Diavlo();

function onLoop(e:MouseEvent):void {
        
        var sp:Sprite = new Sprite();        // HOLDER FOR ARRAY
        sp.x = mouseX;
        sp.y = mouseY;
        addChild(sp);


        var myArray:Array = ["A","a","Ā","B","b","c","d","e","f","g","C","Č","D","E","Ē","F",
                             "G","Ģ","H","I","ī","J","K","Ķ","L","ļ","M","N","O","P","Q","R",
                             "S","T","U","ū","V","W","X","Y","Z","Ī","Ž","Ä","Ö","Ü","ñ","õ",
                             "ç","Ę","į","ų","æ","ð","å","Æ","Ø"];
        var rn:Number = uint(Math.floor(Math.random()*myArray.length));

        var txtFmt:TextFormat = new TextFormat();
        txtFmt.font = myFont.fontName;
        txtFmt.size  = 18;

        var txt:TextField = new TextField();
        txt.defaultTextFormat = txtFmt;
        txt.embedFonts = true;
        txt.text = myArray[rn];
        txt.selectable = false;
        sp.addChild(txt);

        var sw:Number = stage.stageWidth;
        var sh:Number = stage.stageHeight;
        var randX:Number = Math.random()*sw;
        var randY:Number = Math.random()*sh;
        var scaleRand:Number = Math.floor(Math.random()*7);

        sp.scaleX = sp.scaleY = scaleRand;
        TweenLite.to(sp, 2,{x:randX });
        TweenLite.to(sp, 2,{scaleX:.7, scaleY:.7,y:randY, overwrite:false,onComplete:remover});
        TweenLite.to(sp, 0.5,{overwrite:false, alpha:0, delay:0.7});

        function remover():void {
            removeChild(sp);
            sp = null;
    }
}

I have added my FLA too.
Thank you!

P.S I use tweenLite engine.