 				// clone re-dispatched event
 				if (event.target)
 				{
+					//todo can we get rid of this somehow?
 					valueObjects[0] = event = event.clone();
 				}
 				event.target = this.target;

		/** @inheritDoc */
		public function set valueClasses(value:Array):void
		{
			// Clone so the Array cannot be affected from outside.
			_valueClasses = value ? value.slice() : [];
			for (var i:int = _valueClasses.length; i--; )
			{
				if (!(_valueClasses[i] is Class))
				{
					throw new ArgumentError('Invalid valueClasses argument: item at index ' + i
						+ ' should be a Class but was:<' + _valueClasses[i] + '>.');
				}
			}
		}

				var argumentString:String = (listener.length == 1) ? 'argument' : 'arguments';
				throw new ArgumentError('Listener has '+listener.length+' '+argumentString+' but it needs at least '+_valueClasses.length+' to match the given value classes.');
			}

			//todo absolutely need to get rid of this
			//todo replace with flyweight
			var listenerBox:Object = { listener:listener, once:once, priority:priority };
			// Process the first listener as quickly as possible.
			if (!listenerBoxes.length)
