         if (instance == columnHeaderGroup)
         {
             if (grid)
-                columnHeaderGroup.dataGrid = this;
+                initializeDataGridElement(columnHeaderGroup);
             
             columnHeaderGroup.addEventListener(GridEvent.GRID_CLICK, columnHeaderGroup_clickHandler);
             columnHeaderGroup.addEventListener(GridEvent.SEPARATOR_ROLL_OVER, separator_rollOverHandler);

            
            // Event Handlers
            
            grid.removeEventListener(GridEvent.GRID_MOUSE_DOWN, grid_MouseDownHandler);
            grid.removeEventListener(GridEvent.GRID_MOUSE_UP, grid_MouseUpHandler);
            grid.removeEventListener(GridEvent.GRID_ROLL_OVER, grid_RollOverHandler);
            grid.removeEventListener(GridEvent.GRID_ROLL_OUT, grid_RollOutHandler);            
            grid.removeEventListener(GridCaretEvent.CARET_CHANGE, grid_caretChangeHandler);            
            grid.removeEventListener(FlexEvent.VALUE_COMMIT, grid_valueCommitHandler);            
            
            // Cover Properties
            

    /**
     *  @private
     */
    private function initializeDataGridElement(elt:IDataGridElement):void
    {
        if (!elt)
            return;
        
        elt.dataGrid = this;
        elt.nestLevel = grid.nestLevel + 1;
    }
    
    /**
     *  @private
     */
    override protected function partAdded(partName:String, instance:Object):void
    {
        super.partAdded(partName, instance);
