      */
     override protected function commitCurrentState():void
     {    
+        super.commitCurrentState();
+        
         // Check for selected or not selected
         if (currentState != null)
         {
-            changeFXGSkin = true;
-            invalidateProperties();
-            invalidateSize();
-            invalidateDisplayList();
+            if (currentState == "up")
+                currentStateIconClass = upIconClass;
+            else if (currentState == "down")
+                currentStateIconClass = downIconClass;
+            else if (currentState == "upAndSelected")
+                currentStateIconClass = upSelectedIconClass;
+            else if (currentState == "downAndSelected")
+                currentStateIconClass = downSelectedIconClass;
+            else if (currentState.indexOf("AndSelected") != -1)
+                currentStateIconClass = upSelectedIconClass;
+            else
+                currentStateIconClass = upIconClass;
+                        
+            if (!(iconDisplay is currentStateIconClass))
+            {
+                changeFXGSkin = true;
+                invalidateProperties();
+                invalidateSize();
+                invalidateDisplayList();
+            }
         }
     }
     

    private var currentStateIconClass:Class;
    
    /**
     *  The Class used to create the icon in the unselected state
     */
    protected var backgroundClass:Class;
    
    /**
     *  The Class used to create the icon in the selected state 
     */
    protected var selectedBackgroundClass:Class;
    
    //--------------------------------------------------------------------------
    //

    {
        super.commitProperties();
        
        if (changeFXGSkin)
        {
            changeFXGSkin = false;
            
            if (currentStateIconClass)
            {
                // Remove iconDisplay
                if (iconDisplay != null)
                    removeChild(iconDisplay);
                
                iconDisplay = new currentStateIconClass();  
                
                addChild(iconDisplay);
            }
        }
    }
    
