 	{
 		return _dropDownController;
 	}
-
-	//----------------------------------
-    //  dropDownControllerClass
-    //----------------------------------
-	
-	private var _dropDownControllerClass:Class = DropDownController;	
-
-	/**
-     *  The class used to create an instance for the <code>dropDownController</code> 
-     *  property. Set this property if you want to use a 
-     *  <code>DropDownController</code> subclass to modify the default mouse, 
-     *  keyboard and focus user interactions.
-     * 
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 1.5
-     *  @productversion Flex 4
-     */
-	public function set dropDownControllerClass(value:Class):void
+	
+	protected function set dropDownController(value:DropDownController):void
 	{
-		if (_dropDownControllerClass == value)
+		if (_dropDownController == value)
 			return;
 			
-		_dropDownControllerClass = value;
-		_dropDownController = new _dropDownControllerClass();
-		initializeDropDownController();
+		_dropDownController = value;
+			
+		_dropDownController.addEventListener(DropDownEvent.OPEN, dropDownController_openHandler);
+		_dropDownController.addEventListener(DropDownEvent.CLOSE, dropDownController_closeHandler);
+			
+		if (openButton)
+			_dropDownController.openButton = openButton;
+		if (dropDown)
+			_dropDownController.dropDown = dropDown;	
 	}
-	
-	/**
-     *  @private
-     */
-	public function get dropDownControllerClass():Class
-	{
-		return _dropDownControllerClass;
-	}
-
 
 	//----------------------------------
     //  prompt

     */
    [SkinPart(required="false")]
    public var dropDown:DisplayObject;
    	
	/**
     *  Constructor. 

    
    /**
     *  Event handler for the <code>dropDownController</code> 
     *  <code>DropDownEvent.CLOSE</code> event. Updates the skin's state.
     * 
     *  @langversion 3.0
     *  @playerversion Flash 10
     *  @playerversion AIR 1.5
     *  @productversion Flex 4
     */
    protected function dropDownController_closeHandler(event:DropDownEvent):void
    {
    	invalidateSkinState();
    	
    	// TODO!! Add logic to handle commitData
    	// if (event.isDefaultPrevented())
    	
    	dispatchEvent(event);
    }
