         var viewWidth:Number  = unscaledWidth  - paddingLeft - paddingRight;
         var viewHeight:Number = unscaledHeight - paddingTop  - paddingBottom;
 
+		var vAlign:Number;
+		if (verticalAlign == "top")
+			vAlign = 0;
+		else if (verticalAlign == "bottom")
+			vAlign = 1;
+		else // if (verticalAlign == "middle")
+			vAlign = 0.5;
+		
         // measure the label component
-        var textHeight:Number = 0;
+		// text should take up the rest of the space width-wise, but only let it take up
+		// its measured textHeight so we can position it later based on verticalAlign
+		var labelWidth:Number = Math.max(viewWidth, 0);	
+        var labelHeight:Number = 0;
 
         if (label != "")
         {

		{
			case DPIClassification.DPI_320:
			{
				itemMiniumumHeight = 88;
				break;
			}
			case DPIClassification.DPI_240:
			{
				itemMiniumumHeight = 66;
				break;
			}
			default:
			{
				// default PPI160
				itemMiniumumHeight = 44;
				break;
			}
		}

			bottomSeparatorAlpha = .2;
		}
		
		var dataGroup:DataGroup = parent as DataGroup;
		var isLast:Boolean = (dataGroup && (itemIndex == dataGroup.numElements - 1));

			
		// draw separators
		graphics.beginFill(topSeparatorColor, topSeparatorAlpha);
		graphics.drawRect(0, 0, unscaledWidth, 1);
		graphics.endFill();
		
		graphics.beginFill(bottomSeparatorColor, bottomSeparatorAlpha);
		graphics.drawRect(0, unscaledHeight - (isLast ? 0 : 1), unscaledWidth, 1);
		graphics.endFill();
		
		
