docs: function ButtonHelper(target, outLabel, overLabel, downLabel, play, hitArea, hitLabel) {
  		if (!target.addEventListener) { return; }
  
  
  	// public properties:
  		/**
  		 * The target for this button helper.
  		 * @property target
  		 * @type MovieClip | Sprite
  		 * @readonly
  		 **/
  		this.target = target;
  
  		/**
  		 * The label name or frame number to display when the user mouses out of the target. Defaults to "over".
  		 * @property overLabel
  		 * @type String | Number
  		 **/
  		this.overLabel = overLabel == null ? "over" : overLabel;
  
  		/**
  		 * The label name or frame number to display when the user mouses over the target. Defaults to "out".
  		 * @property outLabel
  		 * @type String | Number
  		 **/
  		this.outLabel = outLabel == null ? "out" : outLabel;
  
  		/**
  		 * The label name or frame number to display when the user presses on the target. Defaults to "down".
  		 * @property downLabel
  		 * @type String | Number
  		 **/
  		this.downLabel = downLabel == null ? "down" : downLabel;
  
  		/**
  		 * If true, then ButtonHelper will call gotoAndPlay, if false, it will use gotoAndStop. Default is false.
  		 * @property play
  		 * @default false
  		 * @type Boolean
  		 **/
  		this.play = play;
  
  
  	//  private properties
  		/**
  		 * @property _isPressed
  		 * @type Boolean
  		 * @protected
  		 **/
  		this._isPressed = false;
  
  		/**
  		 * @property _isOver
  		 * @type Boolean
  		 * @protected
  		 **/
  		this._isOver = false;
  
  		/**
  		 * @property _enabled
  		 * @type Boolean
  		 * @protected
  		 **/
  		this._enabled = false;
  
  	// setup:
  		target.mouseChildren = false; // prevents issues when children are removed from the display list when state changes.
  		this.enabled = true;
  		this.handleEvent({});
  		if (hitArea) {
  			if (hitLabel) {
  				hitArea.actionsEnabled = false;
  				hitArea.gotoAndStop&&hitArea.gotoAndStop(hitLabel);
  			}
  			target.hitArea = hitArea;
  		}
  	}