     //
     //--------------------------------------------------------------------------
     
-    private function calculateDropLocation(event:DragEvent):DropLocation
-    {
-        // Verify data format
-        if (!enabled || !event.dragSource.hasFormat("itemsByIndex"))
-            return null;
-        
-        // Calculate the drop location
-        var location:DropLocation = grid.layout.calculateDropLocation(event);
-		if (location.dropIndex > dataProvider.length) 
-			location.dropIndex = dataProvider.length;
-		
-		return location;
-    }
-    
+    /**
+    *  @private
+    *  Used in drag n drop methods for drop location / drop indicators.
+    */
+    private var _gridViewLayout:GridViewLayout = null;
+
+
     /**
      *  Creates and instance of the dropIndicator class that is used to
      *  display the visuals of the drop location during a drag and drop

    public function createDropIndicator():DisplayObject
    {
        // Do we have a drop indicator already?
        if (grid.layout.dropIndicator)
            return grid.layout.dropIndicator;
        
        var dropIndicatorInstance:DisplayObject;
        if (dropIndicator)
        {
            dropIndicatorInstance = DisplayObject(createDynamicPartInstance("dropIndicator"));

     */
    public function destroyDropIndicator():DisplayObject
    {
        var dropIndicatorInstance:DisplayObject = _gridViewLayout.dropIndicator;

        if (!dropIndicatorInstance)
            return null;
        
        // Release the reference from the layout
        _gridViewLayout.dropIndicator = null;
        
        // Release it if it's a dynamic skin part
        var count:int = numDynamicParts("dropIndicator");

        for (var i:int = 0; i < count; i++)
        {
            if (dropIndicatorInstance == getDynamicPartAt("dropIndicator", i))
