      *  You do not call this method directly. 
      *  Flex calls it automatically when a skin is changed at runtime.
      *
-     *  This method calls the <code>unloadingSkin()</code> method, removes the skin, 
-     *  and clears all part associations.
+     *  This method removes the skin and clears all part associations.
      *
      *  <p>Typically, subclasses of FxComponent do not override this method.</p>
      */
     protected function unloadSkin():void
     {       
-
-        unloadingSkin();
+        skin.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, skin_propertyChangeHandler);
+        
         clearSkinParts();
         removeChild(skin);
         setSkin(null);

     *  Typically, a subclass of FxComponent does not override this method.
     * 
     *  <p>This method instantiates the skin for the component, 
     *  adds the skin as a child of the component, 
     *  resolves all part associations for the skin, and calls the <code>skinLoaded()</code> method.</p>
     */
    protected function loadSkin():void
    {

     *  You do not call this method directly. 
     *  For static parts, Flex calls it automatically when it calls the <code>loadSkin()</code> method. 
     *  For dynamic parts, Flex calls it automatically when it calls 
     *  the <code>createDynamicPartInstance()</code> method. 
     *
     *  <p>Override this function to attach behavior to the part. 
     *  If you want to override behavior on a skin part that is inherited from a base class, 
