     {
         super.commitProperties();
         
+		if (selectedItemChanged)
+        {
+        	// Retry applying the value in case the dataProvider is set
+            selectedItem = selectedItem;
+            selectedItemChanged = false;
+            selectedIndexChanged = false;
+        }
+
         if (selectedIndexChanged)
         {
-            // TODO: Currently hard-coded to require a selection. This should be fixed.
-            if (selectedIndex == -1)
-            {
-                selectedIndex = 0;
-            }
-            
-            if (dataProvider)
-                applyDataToLabelElement(dataProvider.getItemAt(selectedIndex));
+        	// Retry applying the value in case the dataProvider is set
+            selectedIndex = selectedIndex;
             selectedIndexChanged = false;
-            
-            dispatchEvent(new Event("change"));
-        }
+        }   
         
-        if (labelFunctionChanged)
-        {
-        	// TODO!! Update the label element 
-        	labelFunctionChanged = false;
-        	applyDataToLabelElement(dataProvider.getItemAt(selectedIndex));
-        }
-
-    }
+        if (labelChanged)
+		{
+			labelChanged = false;
+			if (labelElement)
+	    	{
+	    		if (selectedItem)
+	    			labelElement.text = LabelUtil.itemToLabel(selectedItem, labelField, labelFunction);
+	    		else
+	    			labelElement.text = "";
+	    	}
+		}
+        
+        // TODO (jszeto) Add call to valueCommit after selection changed
+
+    }
+                                                
     
     /**
 	 *  @private

    {
    	super.partAdded(partName, instance);
 
 		if (partName == "dropDown")
 			dropDownInstance = dropDown;
    }
    
    /**

            bInKeyDown = false;*/

        }  
	}
    
    //--------------------------------------------------------------------------
