 		}
 		
 		protected function onSuiteCompleted():void {
+			timer.removeEventListener(TimerEvent.TIMER, runNextTest);
 			dispatchEvent(new Event(Event.COMPLETE));
 		}
 				

		
		public function SuiteRunner() {
			timer = new Timer(0, 1);
			timer.addEventListener(TimerEvent.TIMER, runNextTest);
		}
		
		public function run(suite:Class, result:IResult = null):void {
			this.result = result || new Result();
			testRunner = new TestRunner();
			testRunner.addEventListener(Event.COMPLETE, onTestCompleted);
			testClasses = new SuiteIterator(suite);
			
			runNextTest();
		}

	import flash.utils.Timer;

	public class SuiteRunner extends EventDispatcher {
		/** Can be changed at runtime. */
		public static var DEFAULT_TEST_RUNNER:Class = TestRunner;
		
		protected var testRunner:TestRunner;
		protected var suiteRunner:SuiteRunner;
		protected var testClasses:SuiteIterator;
