         if (currentState != null)
         {
             var currentStateIconClass:Class = upIconClass;
+            var isSelected:Boolean = false;
+            
             if (currentState == "down")
+            {
                 currentStateIconClass = downIconClass;
+            }
             else if (currentState == "upAndSelected")
+            {
                 currentStateIconClass = upSelectedIconClass;
+                isSelected = true;
+            }
             else if (currentState == "downAndSelected")
+            {
                 currentStateIconClass = downSelectedIconClass;
+                isSelected = true;
+            }
             else if (currentState.indexOf("AndSelected") != -1)
+            {
                 currentStateIconClass = upSelectedIconClass;
+                isSelected = true;
+            }
             
             setIcon(currentStateIconClass);
+            
+            // swap symbol based on selection state
+            var symbolObj:DisplayObject = (symbolIcon && (symbolIcon is DisplayObject))
+                ? DisplayObject(symbolIcon) : null;
+            var hasSymbol:Boolean = (symbolObj) && contains(symbolObj);
+            
+            if (hasSymbol && !isSelected)
+            {
+                removeChild(DisplayObject(symbolObj));
+                invalidateDisplayList();
+            }
+            else if (!hasSymbol && isSelected)
+            {
+                symbolIcon = new symbolIconClass();
+                
+                addChild(DisplayObject(symbolIcon));
+                invalidateDisplayList();
+            }
         }
     }
 

     */
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
    {
        super.updateDisplayList(unscaledWidth, unscaledHeight);
        
        // TODO (jszeto) Does this need to go into a seperate DisplayObject to avoid it from getting 
        // clobbered by subclasses?
        // Draw a transparent hit area
        graphics.clear();
        graphics.beginFill(0,0);
        graphics.drawRect(0,0,unscaledWidth, unscaledHeight);
        graphics.endFill();
    }
}
}
        // downIconClass,
        // downSelectedIconClass
        useIconStyle = false;
        useChromeColor = true;
        useSymbolColor = true;
    }
    
    /**
