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

        
        dragDropDataSource.collectionView(self, deleteDataItemAtIndexPath: existngIndexPath)
        
        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()
                            
                        })
