 			return model.hitTestState;
 		}
 		
+		protected function validateUpState(newValue:*, oldValue:*):void {
+			buttonView.upState = newValue;
+		}
+		
+		protected function validateOverState(newValue:*, oldValue:*):void {
+			buttonView.overState = newValue;
+		}
+
+		protected function validateDownState(newValue:*, oldValue:*):void {
+			buttonView.downState = newValue;
+		}
+
 		protected function validateHitTestState(newValue:*, oldValue:*):void {
 			buttonView.hitTestState = newValue;
+		}
+
+		public function get defaultUpState():DisplayObject {
+			var alias:String = unQualifiedClassName + UP_STATE;
+			return getBitmapByName(alias);
+		}
+		
+		public function get defaultOverState():DisplayObject {
+			var alias:String = unQualifiedClassName + OVER_STATE;
+			return getBitmapByName(alias);
+		}
+
+		public function get defaultDownState():DisplayObject {
+			var alias:String = unQualifiedClassName + DOWN_STATE;
+			return getBitmapByName(alias);
+		}
+
+		public function get defaultHitTestState():DisplayObject {
+			if(width > 0 && height > 0) {
+				var bitmapData:BitmapData = new BitmapData(width, height);
+				return new Bitmap(bitmapData);
+			}
+			
+			return null;
 		}
 
 		public function set buttonView(simpleButton:SimpleButton):void {

			return model.downState;
		}
		
		protected function validateDownState(newValue:*, oldValue:*):void {
			buttonView.downState = newValue;
		}

		public function set hitTestState(hitTestState:DisplayObject):void {
			model.hitTestState = hitTestState;
		}

package laml.display {
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.DisplayObject;
	import flash.display.SimpleButton;
	import flash.events.MouseEvent;
	
	[Event(name='click', type='MouseEvent')]
	[Event(name='mouseDown', type='MouseEvent')]
	[Event(name='mouseMove', type='MouseEvent')]
	[Event(name='mouseOut', type='MouseEvent')]
	[Event(name='mouseOver', type='MouseEvent')]
	[Event(name='mouseUp', type='MouseEvent')]
	public class Button extends Component {
		protected const UP_STATE:String = "UpState";
		protected const OVER_STATE:String = "OverState";
		protected const DOWN_STATE:String = "DownState";
		protected const HIT_TEST_STATE:String = "HitTestState";

		protected var _buttonView:SimpleButton;
		
		override protected function initialize():void { 
			super.initialize();
