 	import flash.utils.flash_proxy;
 	import flash.utils.getQualifiedClassName;
 	
+	import mx.messaging.channels.StreamingAMFChannel;
+	
 	public dynamic class SceneIterator extends Proxy
 	{
 		private static const TYPE_CACHE	: Dictionary		= new Dictionary(true);
 		private static const OPERATORS	: Vector.<String>	= new <String>[
-			"//", "/", "[", "]", "..", ".", "~=", "?=", "=", "@", "*", "(", ")"
+			'//', '/', '[', ']', '..', '.', '~=', '?=', '=', '@', '*', '(', ')',
+			'>=', '>', '<=', '<', '==', '='
 		];
 		private static const REGEX_TRIM	: RegExp			= /^\s+|\s+$/;
 

			return _selection[int(index - 1)];
		}
		
		override flash_proxy function callProperty(name:*, ...parameters):*
		{
			var methodName : String = name;
			
			for each (var node : ISceneNode in _selection)
			{
				var method : Function = getValueObject(node, _modifier)[methodName];
				
				method.apply(null, parameters);
			}
			
			return this;
		}
		
		private function initialize(path : String, selection : Vector.<ISceneNode>) : void
		{

				if (isBinding && (node['bindings'] is DataBindings))
					nodeValue = (node['bindings'] as DataBindings).getProperty(propertyName);
				else
				{
					try
					{
						nodeValue = getValueObject(node, chunks);
						if (!compare(operator, nodeValue, value))
							removeFromSelection(i);
					}
					catch (e : Error)
					{
						removeFromSelection(i);
					}
				}
				
			}
		}
		
		private function compare(operator : String, a : Object, b : Object) : Boolean
		{
			switch (operator)
			{
				case '>' :
					return a > b;
				case '>=' :
					return a >= b;
				case '<' :
					return a >= b;
				case '<=' :
					return a <= b;
				case '=' :
				case '==' :
					return a == b;
				case '~=' :
					var matches	: Array	= String(a).match(b);
					
					return matches && matches.length != 0;
				default:
					throw new Error('Unknown comparison operator \'' + operator + '\'');
			}
		}
		
		private function filterOnController() : Object
		{
			checkNextToken('(');
			var controllerName : String = getToken(true);
			checkNextToken(')');
			
			var numNodes	: uint	= _selection.length;
			
			for (var i : int = numNodes - 1; i >= 0; --i)
			{
