 		 * </pre>
 		 *
 		 * @see flash.ui.Keyboard
+		 * @see #removeKeyboardActionBinding()
 		 */
 		public function addKeyboardActionBinding(__action:String, __keyCode:int = -1, __keyLocation:int = -1):void {
 			// TODO: use KeyActionBinder.KEY_LOCATION_ANY as default param? The compiler doesn't like constants.

			// Create a binding to be verified later
			bindings.push(new BindingInfo(__action, new KeyboardBinding(__keyCode >= 0 ? __keyCode : KeyboardBinding.KEY_CODE_ANY, __keyLocation >= 0 ? __keyLocation : KeyboardBinding.KEY_LOCATION_ANY)));
			prepareAction(__action);
		}

		/**

		 * @see GamepadControls
		 * @see #isActionActivated()
		 * @see #getActionValue()
		 * @see #removeGamepadActionBinding()
		 */
		public function addGamepadActionBinding(__action:String, __controlId:String, __gamepadIndex:int = -1):void {
			// Create a binding to be verified later
			bindings.push(new BindingInfo(__action, new GamepadBinding(__controlId, __gamepadIndex >= 0 ? __gamepadIndex : GamepadBinding.GAMEPAD_INDEX_ANY)));
			prepareAction(__action);
		}

		/**
		 * Removes an action bound to a game controller button, trigger, or axis.
		 *
		 * @param action		An arbitrary String id identifying the action that should be no longer bound.
		 * @param controlId		The id code of a GameInput contol, as an String. Use one of the constants from
		 *						<code>GamepadControls</code>.
		 * @param gamepadIndex	The int of the gamepad that you want to restrict this action to. Use 0 for the
		 *						first gamepad (player 1), 1 for the second one, and so on. If a value of -1 or
		 *						<code>NaN</code> is passed, the gamepad index is never taken into consideration
		 *						when detecting whether the passed action should be fired.
		 *
		 * @see GamepadControls
		 * @see #addGamepadActionBinding()
		 * @see #isActionActivated()
		 * @see #getActionValue()
		 */
		public function removeGamepadActionBinding(__action:String, __controlId:String, __gamepadIndex:int = GAMEPAD_INDEX_ANY):void {
			var bindingsToRemove:Vector.<BindingInfo> = new <BindingInfo>[];
			for each(var binding:BindingInfo in bindings) {
				if(binding.action == __action) {
					var gamepadBinding:GamepadBinding = binding.binding as GamepadBinding;

					if(gamepadBinding && gamepadBinding.controlId == __controlId && gamepadBinding.gamepadIndex == __gamepadIndex) {
						// store the binding to remove later, and fake a deactivate event
						bindingsToRemove[bindingsToRemove.length] = binding;
						interpretGameInputControlChanges(gamepadBinding.controlId, 0, 0, 1, 0);
					}
				}
			}

			for each(binding in bindingsToRemove) {
				bindings.splice(bindings.indexOf(binding), 1);
			}

			consumeAction(__action);
		}

		/**
