 
 		override public function play():void
 		{
-			// add to scheduler, which will call the evaluate method
-			Scheduler.instance.add(this);
+			addEventListener(Event.ENTER_FRAME, drawSmoke);
 		}
 		
 		override public function stop():void
 		{
-			// remove from the scheduler
-			Scheduler.instance.remove(this);
-		}
-
-		public function evaluate(t:Number) : Boolean
-		{
-			// update smoke simulation on scheduler callback
-			drawSmoke();
-			return false;
+			removeEventListener(Event.ENTER_FRAME, drawSmoke);
 		}
 
 		private function getShape():Shape

			_spool.push(s);
		}

		private function drawSmoke():void
		{
			// create five new smoke particles on each simulation tick	
			for (var i:uint = 0; i<5; ++i) {

package flare.demos
{
	import flare.physics.Particle;
	import flare.physics.Simulation;
	
	import flash.display.Shape;
	import flash.events.Event;
	import flash.utils.Dictionary;

	/**
	 * Demo showcasing use of the physics engine to simulate smoke.
	 * Based on the smoke example from the traer physics library
	 * for processing (http://www.cs.princeton.edu/~traer/physics/).
	 */
	public class Smoke extends Demo
	{
		private var _shapes:Array = new Array();
		private var _spool:Array = new Array();
