     
     
     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 canvas : UIView
     }
-    
     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 pointInCollectionView = gestureRecognizer.locationInView(self.collectionView)
            
            
            if gestureRecognizer.state == UIGestureRecognizerState.Began {
                
                bundle.sourceCell.hidden = true
                bundle.sourceCollectionView.addSubview(bundle.representationImageView)
                
                
            }
            

            if gestureRecognizer.state == UIGestureRecognizerState.Changed {
                
                var imageViewFrame = bundle.representationImageView.frame
                imageViewFrame.origin = CGPointMake(dragPointOnCanvas.x - bundle.offset.x, dragPointOnCanvas.y - bundle.offset.y)
                bundle.representationImageView.frame = imageViewFrame
                
                let dragPointOnCollectionView = gestureRecognizer.locationInView(self.collectionView)
                
                if let indexPath : NSIndexPath = self.collectionView?.indexPathForItemAtPoint(dragPointOnCollectionView) {
                    
                    //self.checkForDraggingAtTheEdgeAndAnimatePaging(df, gestureRecognizer: gestureRecognizer)
                    
