      */
     override protected function partRemoved(partName:String, instance:Object):void
     {
-        if (instance == dropDown)
+    	if (instance == button)
     	{
-    		dropDownInstance = null;
+    		instance.removeEventListener(FlexEvent.BUTTON_DOWN, buttonDownHandler);
     	}
         
         super.partRemoved(partName, instance);
     }
     
     /**
-	 *  @private
-	 */ 
-    override protected function destroyDropDown():void
-    {
-    	super.destroyDropDown();
-    	
-    	dropDown.removeEventListener(IndexChangedEvent.SELECTION_CHANGED, dropDown_selectionChangedHandler);
-    }
-    
+     *  @private
+     */
+    override protected function item_clickHandler(event:MouseEvent):void
+	{
+		super.item_clickHandler(event);
+		closeDropDown(true);
+	}
+    
+    /**
+     *  @private
+     */
+    // TODO (jszeto) Workaround for now until we can fix List so that it 
+    // doesn't listen for keyDown events in the capture phase 
+    override protected function keyDownHandler(event:KeyboardEvent) : void
+	{
+		//trace("DropDownList.keyDownHandler key",event.keyCode);
+		list_keyDownHandler(event);
+	}
+        
     /**
 	 *  @private
 	 */
-    override protected function commitDropDownData():void
-    {
-    	if (dropDown.selectedIndex != selectedIndex)
-    	{
-    		selectedIndex = dropDown.selectedIndex;
-    		dispatchEvent(new Event(Event.CHANGE));
-    	}
-    }
-        
-    /**
-	 *  @private
-	 */
-	override protected function keyDownHandler(event:KeyboardEvent) : void
+	override protected function list_keyDownHandler(event:KeyboardEvent) : void
 	{
-
-		//trace("DropDownList.keyDownHandler key",event.keyCode);
+		//trace("DropDownList.list_keyDownHandler key",event.keyCode);
 		if(!enabled)
             return;
-
-		super.keyDownHandler(event);
         
         if (event.ctrlKey && event.keyCode == Keyboard.DOWN)
         {

 *  @playerversion AIR 1.5
 *  @productversion Flex 4
 */
public class DropDownList extends DropDownBase
{
	
    /**
     *  An optional skin part that holds the prompt or the text of the selectedItem 
     *  

    //  Variables
    //
    //--------------------------------------------------------------------------
	
    private var labelChanged:Boolean = false;
	
	//--------------------------------------------------------------------------
    //
