                                                   unscaledHeight:Number):void
     {
         super.updateDisplayList(unscaledWidth, unscaledHeight);
+
+        thumbSize = calculateThumbSize();
+        sizeThumb(thumbSize);
+
         positionThumb(valueToPosition(value));
     }
 
     /**
-     *  Adds an eventListener for the updateComplete event so that the
-     *  Slider will correctly position the thumb.
+     *  Adds an eventListener for the updateComplete event so
+     *  that TrackBase will correctly position the thumb.
      */
     override protected function attachBehaviors():void
     {
         super.attachBehaviors();
-        skinObject.addEventListener("updateComplete", skin_updateCompleteHandler);
+        track.addEventListener("updateComplete", track_updateCompleteHandler);
     }
     
     /**

/**
 *  TrackBase is a base class for components with a track
 *  and one or more thumbs such as Slider and ScrollBar. It
 *  declares two required SkinParts, thumb and track. TrackBase
 *  also provides the code for thumb dragging which is shared
 *  by Slider and ScrollBar.
 */
public class TrackBase extends Range
{

     *  the thumb appropriately for their situation.
     */
    protected function positionThumb(thumbPos:Number):void {}
    
    /**
     *  This method sizes the thumb button correctly, given
     *  the thumbSize. Subclasses should override this method to size 
     *  the thumb appropriately for their situation.
     */
    protected function sizeThumb(thumbSize:Number):void {}

    /**
     *  This utility method calculates an appropriate size for the thumb
     *  button, given the current range, pageSize, and trackSize settings.
     *  Subclasses should override this to calculate the correct size in
     *  the units of position.
     * 
     *  @default 0
     */
    protected function calculateThumbSize():Number
    {
        return 0;
    }

    /**
     *  Given a MouseEvent that contains where the thumb was dragged to and
