 package flare.animate
 {
-	import flash.display.Shape;
-	import flash.events.Event;
 	import flash.events.TimerEvent;
 	import flash.utils.Timer;
-	
+
 	/**
 	 * Scheduler that oversees animation and time-based processing. Uses an
 	 * internal timer to regularly invoke the current set of scheduled

			if (lock == _Lock) {
				_scheduled = [];
				_ids = {};
				_obj = new Shape();
				_timer = new Timer(0);
				_timer.addEventListener(TimerEvent.TIMER, tick);
			} else {
				throw new Error("Invalid constructor. Use Scheduler.instance.");
			}
		}
		
		/**
		 * Plays the scheduler, allowing it to process events.
		 */
		private function play():void
		{
			if (timerInterval <= 0) {
				if (!_obj.hasEventListener(Event.ENTER_FRAME))
					_obj.addEventListener(Event.ENTER_FRAME, tick);
			} else if (!_timer.running) {
				_timer.start();
			}
		}
		
		/**
		 * Pauses the scheduler, so that events are not processed.
		 */
		private function pause():void
		{
			if (timerInterval <= 0) {
				_obj.removeEventListener(Event.ENTER_FRAME, tick);
			} else {
				_timer.stop();
			}
		}
		
		/**
		 * Adds an object to the scheduling list.
		 * @param item a schedulable object to add

		{
			return _ids[id] != undefined;
		}

		/**
		 * Looks up the scheduled object indicated by the given id, if any.
		 * @param id the id to lookup
