     import flash.events.TimerEvent;
     }#
 
-    private const MAX_POOL :int = 10;
-    private var timerPool :Array = [];
     private var timers :Object = {};
 
     /**
       * Creates a new timer and returns an unique identifier which can be used to remove the timer.
       */
     private function createTimer (delay:Number, repeatCount:int, closure:Function, args:Array) :uint {
-        var timer:LzKernelTimer = this.timerPool.pop() || new LzKernelTimer();
+        var timer:LzKernelTimer = LzKernelTimer.create();
         this.timers[timer.timerID] = timer;
         timer.delay = delay;
         timer.repeatCount = repeatCount;


  #passthrough {
    private static var idCounter :uint = 0;

    public function LzKernelTimer () {
        super(0);
        this._timerID = LzKernelTimer.idCounter++;
    }

    private var _timerID :uint;

            timer.removeEventListener(TimerEvent.TIMER_COMPLETE, this.timerCompleteHandler);
            timer.reset();
            delete this.timers[id];
            LzKernelTimer.remove(timer);
        }
    }

