 				stop(getTarget(i));
 		}
 		
+        protected function initialize(target : ISceneNode) : void
+        {
+            // nothing
+        }
+        
 		protected function start(target : ISceneNode) : void
 		{
 			// nothing

			return _viewport;
		}
		
		protected function get scene() : Scene
		{
			return _scene;
		}
		
		public function ScriptController(targetType	: Class = null)
		{
			super(targetType);
			
			initialize();
		}
		
		private function initialize() : void
		{
			var numTargets : uint = this.numTargets;
			
			for (var i : uint = 0; i < numTargets; ++i)
				start(getTarget(i));
		}
		
		override protected function sceneEnterFrameHandler(scene		: Scene,
														   viewport		: Viewport,
														   destination	: BitmapData,

			_viewport = viewport;
			_deltaTime = _lastTime - time;
			_lastTime = time;
			
			var numTargets : uint = this.numTargets;
			
			for (var i : uint = 0; i < numTargets; ++i)
            {
                var target : ISceneNode = getTarget(i);
                
                if (target.scene)
    				update(target);
            }
		}
        
        override protected function targetAddedToSceneHandler(target    : ISceneNode,
                                                              scene     : Scene) : void
        {
            super.targetAddedToSceneHandler(target, scene);
            
            var numTargets : uint = this.numTargets;
            
            for (var i : uint = 0; i < numTargets; ++i)
                start(getTarget(i));
        }
		
		override protected function targetRemovedFromSceneHandler(target	: ISceneNode,
																  scene		: Scene) : void
