 		 */		
 		public function mapTo(...objectListOrFunction):NativeMappedSignal
 		{
-			if (objectListOrFunction.length == 1 && objectListOrFunction[0] is Function)
-			{
-				_propertyFilterFunction = objectListOrFunction[0] as Function;
+			if (isArgumentListAFunction(objectListOrFunction))
+			{
+				_mappingFunction = objectListOrFunction[0] as Function;
 				
-				if (_propertyFilterFunction.length > 1)
+				if (hasFunctionMoreThanOneArgument(_mappingFunction))
 				{	
-					throw new ArgumentError('Mapping function has ' + _propertyFilterFunction.length + ' arguments but it needs zero or one of type Event');
+					throw new ArgumentError('Mapping function has ' + _mappingFunction.length 
+						+ ' arguments but it needs zero or one of type Event');
 				}
 			}
 			else
 			{
-				_propertyFilterFunction = function ():Object { return objectListOrFunction; };
+				_mappingFunction = function ():Object { return objectListOrFunction; };
 			}
 			
 			return this
+		}
+		
+		private function isArgumentListAFunction(argList:Array):Boolean
+		{
+			return argList.length == 1 && argList[0] is Function
+		}
+		
+		private function hasFunctionMoreThanOneArgument(f:Function):Boolean
+		{
+			return f.length > 1
 		}
 		
 		/**

		 * MAKE SURE to also override <code>setPropertyFilterFunction(...)</code> if it should not be allowed.
		 *
		 * @parameter eventFromTarget the event that was dispatched from target.
		 * @return An array with value gathered from <code>eventFromTarget</code>.
		 * 				The default implemetation uses <code>propertyFilterFunction</code> if it is set.
		 * 				Otherwise it returns [] if <code>valueClasses.length > 0</code> or throws an ArgumentError.
		 *
		 *
		 * @see #setPropertyFilterFunction()
		 *
		 * @internal
		 * This function gets called by dispatch to recieve the needed property-values from <code>eventFromTarget</code>.
		 * It has to return an array that matches length and types of valueClasses, wich is checked by super.dispatch.apply(null,[returned array]) afterwards.
		 * */
		protected function filterPropertyArguments (eventFromTarget:Event):Object 
		{
			if (_propertyFilterFunction != null) 
			{
				if (propertyFilterFunctionWantsEvent)
				{
					return _propertyFilterFunction(eventFromTarget);
				}
				else
				{
					return _propertyFilterFunction();
				}
			} 
			else if (valueClasses.length == 0) 

			}
		}

		private function areValueObjectValidForMapping(valueObjects:Array):Boolean
		{
			return valueObjects.length == 1 && valueObjects[0] is _eventClass;
		}
		
		private function dispatchMappedData(mappedData:Object):void
		{
			if (mappedData is Array)
			{
				if (shouldArrayBePassedWithoutUnrolling)
				{
					super.dispatch.call(null, mappedData);
				}
				else
				{
					super.dispatch.apply(null, mappedData);
				}
			}
			else
			{
				super.dispatch.call(null, mappedData);
			}
		}
		
		private function get shouldArrayBePassedWithoutUnrolling():Boolean
		{
			return _valueClasses.length == 1 && _valueClasses[0] == Array;
		}
		
		protected function get propertyFilterFunctionWantsEvent():Boolean
		{
			return _mappingFunction.length == 1;
		}
		
		protected function get propertyFilterFunctionExists():Boolean
		{
			return _mappingFunction != null
		}
		
		/**
