 			return Inflector.underscore(Inflector.demodulize(getQualifiedClassName(this).replace('Controller', '')));
 		}
 
+		public function get_url () :void
+		{
+			if (! params.target) params.target = '_blank';
+			redirect_to_url(params.url, params.target);
+		}
+
+		public function process (action_name:String, params:Hash) :void
+		{
+			this.params = params;
+
+			var action:Function;
+			// if action method defined
+			if (hasOwnProperty(action_name))
+			{
+				action = this[action_name]
+			}
+			// else attempt to render view named action_view
+			else
+			{
+				action = function () :void
+				{
+					render(action_name);
+				};
+			}
+
+			if (apply_before_filters(action))
+			{
+				action();
+			}
+		}
+
 		// EXPERIMENTAL!!!
 		// remove this controller and its children from the display list
 		public function remove_from_display_list () :void
 		{
 			if (parent) parent.removeChild(this);
-		}
-
-		public function get_url () :void
-		{
-			if (! params.target) params.target = '_blank';
-			redirect_to_url(params.url, params.target);
-		}
-
-		public function process (action_name:String, params:Hash) :void
-		{
-			this.params = params;
-
-			var action:Function;
-			// if action method defined
-			if (hasOwnProperty(action_name))
-			{
-				action = this[action_name]
-			}
-			// else attempt to render view named action_view
-			else
-			{
-				action = function () :void
-				{
-					render(action_name);
-				};
-			}
-
-			if (before_filter(action))
-			{
-				action();
-			}
 		}
 
 

		// >>> PRIVATE METHODS
		// replaces default context menu with custom, empty menu
		// add items to menu with new_context_menu_item()
		private function create_context_menu () :void
		{
			contextMenu = new ContextMenu();

			var c:ReactionController = new klass();
			container.addChild(c);
			return c;
		}

		// For use ONLY in ReactionController subclasses for static init:
		// extend(prototype.constructor)
		static public function extend (c:Class) :void
		{
			// define before_filter method
			c['before_filter'] = function (...args) :*
			{
				args.unshift(c);
				return ReactionController.append_before_filter.apply(null, args);
			};
		}

		//static public function redirect_to (o:Object) :void
