 		}
 		
 		
-		private function createListenerRelationship(listener:Function, priority:int):void
+		protected function createListenerRelationship(listener:Function, priority:int):void
 		{
+			// function.length is the number of arguments.
+			if (listener.length != 1)
+				throw new ArgumentError('Listener for native event must declare exactly 1 argument.');
+				
 			// Don't add same listener twice.
 			if (listeners.indexOf(listener) >= 0)
 				return;

		/** @inheritDoc */
		public function addOnce(listener:Function, priority:int = 0):void
		{
			// function.length is the number of arguments.
			if (!listener.length)
				throw new ArgumentError('Listener must declare at least 1 argument when eventClass is specified.');
			
			if (permanentListenerRelationshipExists(listener))
				throw new AmbiguousRelationshipError('You cannot addOnce a listener then adds the same listener without removing the relationship first.');
			
			createListenerRelationship(listener, priority);
			onceListeners[listener] = true;

				remove(onceListener as Function);
			}
		}
	}
}
