Removing event listeners problem [AS3]

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 ( 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

var btn1:MovieClip = new Btn1();        // BUTTON 1
var btn2:MovieClip = new Btn2();        // BUTTON 2
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, 0.7,{y:btn1_y, ease:Bounce.easeOut});    // TWEENING BUTTONS, 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;

        var myArray:Array = ["A","a","Ā","B","b","c","d","e","f","g","C","Č","D","E","Ē","F",
        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;

        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;, 2,{x:randX });, 2,{scaleX:.7, scaleY:.7,y:randY, overwrite:false,onComplete:remover});, 0.5,{overwrite:false, alpha:0, delay:0.7});

        function remover():void {
            sp = null;

I have added my FLA too.
Thank you!

P.S I use tweenLite engine.