 		/** @inheritDoc */
 		public function addOnceWithPriority(listener:Function, priority:int = 0):Function
 		{
-			registerListener(listener, true, priority);
+			registerListenerWithPriority(listener, true, priority);
 			return listener;
 		}
 		
 		/** @inheritDoc */
-		public function remove(listener:Function):Function
-		{
-			if (indexOfListener(listener) == -1) return listener;
-			if (slotsNeedCloning)
-			{
-				slots = slots.slice();
-				slotsNeedCloning = false;
-			}
-			slots.splice(indexOfListener(listener), 1);
-			return listener;
-		}
-		
-		/** @inheritDoc */
-		public function removeAll():void
-		{
-			// Looping backwards is more efficient when removing array items.
-			for (var i:uint = slots.length; i--; )
-			{
-				// This is the "proper" type-safe way, but perhaps not the fastest.
-				// TODO: Test for speed.
-				remove(Slot(slots[i]).listener);
-			}
-		}
-		
-		/** @inheritDoc */
-		public function dispatch(...valueObjects):void
+		override public function dispatch(...valueObjects):void
 		{
 			// Validate value objects against pre-defined value classes.
 			var valueObject:Object;

	 * <br/><br/>
	 * Project home: <a target="_top" href="http://github.com/robertpenner/as3-signals/">http://github.com/robertpenner/as3-signals/</a>
	 */
	public class DeluxeSignal implements ISignalOwner, IPrioritySignal
	{
		protected var _target:Object;
		protected var _valueClasses:Array;
		protected var slots:Array;
		protected var slotsNeedCloning:Boolean = false;
		
		/**
		 * Creates a DeluxeSignal instance to dispatch events on behalf of a target object.

			}
		}
		
		override protected function registerListener(listener:Function, once:Boolean = false):void
		{
			registerListenerWithPriority(listener, once);
		}
		
		protected function registerListenerWithPriority(listener:Function, once:Boolean = false, priority:int = 0):void
		{
			// function.length is the number of arguments.
			if (listener.length < _valueClasses.length)
