 			if(!hitTestState) {
 				hitTestState = upState;
 			}
+			if(!overState) {
+				overState = upState;
+			} 
+			if(!downState) {
+				downState = overState || upState;
+			}
 		}
 		
 		override protected function updateDisplayList(w:Number, h:Number):void {
+			updateSize(w, h);
+			super.updateDisplayList(w, h);
+		}
+		
+		protected function updateSize(w:Number, h:Number):void {
 			buttonView.width = w;
 			buttonView.height = h;
-			super.updateDisplayList(w, h);
 		}
 		
 		public function set upState(upState:DisplayObject):void {

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

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

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