 		public function layout():Boolean
 		{
 			// this is where the layout is calculated
+			var host:UIBase = _strand as UIBase;
 			var p:ILayoutParent = _strand.getBeadByType(ILayoutParent) as ILayoutParent;
 			var area:UIBase = p.contentView as UIBase;
+			
+			// this layout will use and modify the IViewportMode
+			var viewport:IViewport = _strand.getBeadByType(IViewport) as IViewport;
+			if (viewport) viewportModel = viewport.model;
 			
 			var xpos:Number = 0;
 			var ypos:Number = 0;

			_strand = value;			
		}
		
		private var _numColumns:Number = 4;
		private var _columnWidth:Number = Number.NaN;
		private var _rowHeight:Number = Number.NaN;

				if (testChild && !testChild.visible) realN--;
			}
			
			if (isNaN(useWidth)) useWidth = Math.floor(host.width / numColumns); // + gap
			if (isNaN(useHeight)) {
				// given the width and total number of items, how many rows?
				var numRows:Number = Math.floor(realN/numColumns);
				useHeight = Math.floor(host.height / numRows);
			}
			
			var maxWidth:Number = useWidth;
			var maxHeight:Number = useHeight;
			
			for(var i:int=0; i < n; i++)
			{
