                 bundle.representationImageView.removeFromSuperview()
                 
                 if let delegate = self.collectionView!.delegate as? KDRearrangeableCollectionViewDelegate { // if we have a proper data source then we can reload and have the data displayed correctly
-                    bundle.sourceCollectionView.reloadData()
+                    self.collectionView!.reloadData()
                 }
                 
                 self.bundle = nil

    
    
    struct Bundle {
        
        var offset : CGPoint = CGPointZero
        var sourceCell : UICollectionViewCell
        var representationImageView : UIView
        var currentIndexPath : NSIndexPath
        var sourceCollectionView : UICollectionView
        
        init(pointPressed: CGPoint, collectionView : UICollectionView, indexPath : NSIndexPath) {
            
            sourceCollectionView = collectionView
            
            sourceCell = sourceCollectionView.cellForItemAtIndexPath(indexPath) as UICollectionViewCell!
            
            offset = CGPointMake(pointPressed.x - sourceCell.frame.origin.x, pointPressed.y - sourceCell.frame.origin.y)
            
            representationImageView = sourceCell.snapshotViewAfterScreenUpdates(true)
            representationImageView.frame = sourceCell.frame
            
            currentIndexPath = indexPath
        
        }
        
        
    }
    
    var bundle : Bundle?
    
    

        // bundle as a condition inlcudes collectionView and canvas being non nil so it is better to check only for this and unwrap the rest
        if let bundle = self.bundle {
            
            let dragPointOnCanvas = gestureRecognizer.locationInView(bundle.canvas)
            
            
            if gestureRecognizer.state == UIGestureRecognizerState.Began {
                
                bundle.sourceCell.hidden = true
                bundle.canvas.addSubview(bundle.representationImageView)
                
            }
            
