     
     //--------------------------------------------------------------------------
     //
-    // Properties
-    //
-    //--------------------------------------------------------------------------
-
-    //---------------------------------
-    // clickOffset
-    //---------------------------------
-    
-    private var _clickOffset:Point;
-    
-    /**
-     *  The point in the local coordinates of 
-     *  the thumb button where the last mouse down event occurred. 
-     *  This property is used by the <code>calculateNewValue()</code> method 
-     *  to determine the value that the thumb button has been dragged to.
-     *
-     *  @return Point object rerpresenting, in the local coordinates of 
-     *  the thumb button, where the last mouse down event occurred. 
+    // Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Convert a track relative x,y pixel location into a value between 
+     *  minimum and maximum inclusive.  
+     * 
+     *  <p>TrackBase subclasses must override this method and perform conversions
+     *  that take their own geometry into account.
+     * 
+     *  For example a vertical slider might compute a value like this:
+     *  <pre>
+     *  return (y / track.height) * (maximum - minimum);
+     *  </pre>
+     *  </p>
+     * 
+     *  <p>By default this method just returns <code>minimum</code>.</p>
+     * 
+     *  @param x The x coordinate of the location relative to the track's origin.
+     *  @param y The y coordinate of the location relative to the track's origin.
+     *  @return A value between minimum and maximum, inclusive.
      *  
      *  @langversion 3.0
      *  @playerversion Flash 10
      *  @playerversion AIR 1.5
      *  @productversion Flex 4
      */
-    protected function get clickOffset():Point
-    {
-        return _clickOffset;
-    }
-
-    //---------------------------------
-    // trackSize
-    //---------------------------------
-    
-    /**
-     *  The size of the logical track. 
-     *  Subclasses need to override this method to return 
-     *  an appropriate value. 
-     *
-     *  <p>Note that this number can 
-     *  represent any system of units, but those units must 
-     *  be consistent with the values returned by the 
-     *  <code>pointToPosition()</code>, <code>calculateThumbSize()</code>, 
-     *  and <code>valueToPosition()</code> methods.</p>
-     *
-     *  @return The size of the logical track. 
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    protected function get trackSize():Number
-    {
-        return 0;
-    }
-    
-    //---------------------------------
-    // thumbSize
-    //---------------------------------
-    
-    private var _thumbSize:Number = 0;
-    
-    /**
-     *  The size of the thumb button on the logical track in the 
-     *  units of the subclass, which must be consistent with 
-     *  <code>trackSize</code> property, and with 
-     *  the <code>pointToPosition()</code> and <code>valueToPosition()</code> methods. 
-     * 
-     *  @default 0
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-    protected function get thumbSize():Number
-    {
-        return _thumbSize;
-    }
-    
-    /**
-     *  @private
-     */
-    protected function set thumbSize(value:Number):void
-    {
-        if (value == _thumbSize)
-            return;
-
-        _thumbSize = value;
-    }
-    
-    //--------------------------------------------------------------------------
-    //
-    // Methods
-    //
-    //--------------------------------------------------------------------------
-
-    /**
-     *  @private
-     */
-    override public function step(increase:Boolean = true):void
+    protected function pointToValue(x:Number, y:Number):Number
+    {
+        return minimum;
+    }
+        
+
+    /**
+     *  @private
+     */
+    override public function changeValueByStep(increase:Boolean = true):void
     {
         var prevValue:Number = this.value;
 
-        super.step(increase);
+        super.changeValueByStep(increase);
         
         if (value != prevValue)
             dispatchEvent(new Event(Event.CHANGE));

     */
    private function thumb_resizeHandler(event:Event):void
    {
        completeTrackLayout();
    }
    
    /**

     */
    private function thumb_updateCompleteHandler(event:Event):void
    {
        updateSkinDisplayList();
        thumb.removeEventListener(FlexEvent.UPDATE_COMPLETE, thumb_updateCompleteHandler);
    }
    
