         view.frame = self.bounds;
     }
     
-    private func cacheItemView(itemView : UIView){
+    func cacheItemView(itemView : UIView){
         let identifier = NSStringFromClass(itemView.dynamicType)
 
         if let itemsForIdentifier = cachedViews[identifier] {

    
    func detectedPanGesture(gestureRecognizer : UIPanGestureRecognizer) {
        
        let locationInView = gestureRecognizer.locationInView(currentTopView)
     
        switch gestureRecognizer.state {
            
        case .Began:
            
            if !isAnimating && CGRectContainsPoint(currentTopView.bounds, locationInView){
                currentBottomView.userInteractionEnabled = false
                animator.removeAllBehaviors()
                itemBehavior = nil
                attachmentBehavior = UIAttachmentBehavior(item: currentTopView, offsetFromCenter: UIOffsetMake(locationInView.x - currentTopView.bounds.size.width/2, locationInView.y - currentTopView.bounds.size.height/2), attachedToAnchor: gestureRecognizer.locationInView(self))
                animator.addBehavior(attachmentBehavior!)
                isDragging = true
                

// MARK: Operations on views
////////////////////////////////////////////////////////////////////
    
    func disableUserInteractionForUnderlyingViews(){
        currentBottomView.userInteractionEnabled = false
    }
    
    func switchViews(){
        let tempView = currentBottomView
        currentBottomView = currentTopView
        currentTopView = tempView
