         
         dragDropDataSource.collectionView(self, deleteDataItemAtIndexPath: existngIndexPath)
         
-        self.animating = true
-        
-        self.performBatchUpdates({ () -> Void in
-            
+        if self.animating {
             self.deleteItems(at: [existngIndexPath])
-            
+        }
+        else {
+            self.animating = true
+            self.performBatchUpdates({ () -> Void in
+                self.deleteItems(at: [existngIndexPath])
             }, completion: { (finished) -> Void in
-                
                 self.animating = false;
-                
                 self.reloadData()
-                
             })
-        
+            
+        }
         
         if let idx = self.draggingPathOfCellBeingDragged {
             if let cell = self.cellForItem(at: idx) {

                    self.animating = true
                    
                    self.performBatchUpdates({ () -> Void in
                        
                            self.moveItem(at: existingIndexPath, to: indexPath)
                        
                        }, completion: { (finished) -> Void in
                            
                            self.animating = false
                            
                            self.reloadData()
                            
                        })

        
        dragDropDataSource.collectionView(self, deleteDataItemAtIndexPath: existngIndexPath)
        
        if self.animating {
            self.deleteItems(at: [existngIndexPath])
        }
        else {
            
            self.animating = true
            self.performBatchUpdates({ () -> Void in
                self.deleteItems(at: [existngIndexPath])
            }, completion: { complete -> Void in
                self.animating = false
                self.reloadData()
            })
        }
        
    }
    
