 		protected function get inferredMinHeight():Number {
 			var result:Number = 0;
 			children.forEach(function(child:Layoutable, index:int, items:Array):void {
-				result = Math.max(result, child.minHeight);
+				if(!child.excludeFromLayout) {
+					result = Math.max(result, child.minHeight);
+				}
 			});
 			return result + verticalPadding;
 		}

		protected function get inferredMinWidth():Number {
			var result:Number = 0;
			children.forEach(function(child:Layoutable, index:int, items:Array):void {
				result = Math.max(result, child.minWidth);
			});
			return result + horizontalPadding;
		}

			return model.visible;
		}
		
		public function set mask(mask:Layoutable):void {
			model.mask = mask;	
		}
		
		public function get mask():Layoutable {
			return model.mask;
		}
		
		public function set mouseChildren(mouseChildren:Boolean):void {
			model.mouseChildren = mouseChildren;
		}
		
		public function get mouseChildren():Boolean {
			return model.mouseChildren;
		}
		
		protected function validateMask(newValue:*, oldValue:*):void {
			if(newValue) {
				trace(">> updating mask with: " + viewPath(), "and", viewPath(newValue.view));
				view.mask = newValue.view;
			}
			else if(oldValue) {
				view.mask = null;
			}
		}
		
		private function viewPath(v:DisplayObject=null):String {
			v = (v) ? v : view;
			var path:String = v.name;
			while(v && v.parent) {
				path = v.parent.name + '/' + path;
				v = v.parent;
			}
			return '/' + path;
		}
		
		protected function validateMouseChildren(newValue:*, oldValue:*):void {
