     }
     
     private func setItemViewForCurrentTopView(itemView : UIView){
-        setItemView(itemView, forView: currentTopView)
+        setItemView(itemView, forView: currentTopView, cacheOld: true)
     }
 
     private func setItemViewForCurrentBottomView(itemView : UIView){
-        setItemView(itemView, forView: currentBottomView)
-    }
-    
-    private func setItemView(itemView : UIView, forView view : UIView){
-        clearView(view)
+        setItemView(itemView, forView: currentBottomView, cacheOld: true)
+    }
+
+    private func setItemViewForCurrentTopView(itemView : UIView, cacheOld: Bool){
+        setItemView(itemView, forView: currentTopView, cacheOld: cacheOld)
+    }
+    
+    private func setItemViewForCurrentBottomView(itemView : UIView, cacheOld: Bool){
+        setItemView(itemView, forView: currentBottomView, cacheOld: cacheOld)
+    }
+    
+    private func setItemView(itemView : UIView, forView view : UIView, cacheOld: Bool){
+        clearView(view, cache: cacheOld)
         
         itemView.frame = view.bounds
         view.addSubview(itemView)
     }
     
     private func clearCurrentTopView(){
-        clearView(currentTopView)
+        clearView(currentTopView, cache: true)
     }
     
     private func clearCurrentBottomView(){
-        clearView(currentBottomView)
-    }
-    
-    private func clearView(view : UIView){
+        clearView(currentBottomView, cache: true)
+    }
+
+    private func clearCurrentTopView(cache cache: Bool){
+        clearView(currentTopView, cache: cache)
+    }
+    
+    private func clearCurrentBottomView(cache cache: Bool){
+        clearView(currentBottomView, cache: cache)
+    }
+    
+    private func clearView(view : UIView, cache: Bool){
         
         if let itemView = view.subviews.first {
-            cacheItemView(itemView)
+            if cache {
+                cacheItemView(itemView)
+            }
             itemView.removeFromSuperview()
         }
         


        if let itemsForIdentifier = cachedViews[identifier] {
            if itemsForIdentifier.count < MaxCachedViewsForIdentifier {
//                itemsForIdentifier.append(itemView)
                cachedViews[identifier]?.append(itemView)
            }
        } else {

            numberOfItems = actualDataSource.numberOfItemsInSwipeRevealGalleryView(self)
            
            if numberOfItems > 0 {
                setItemViewForCurrentTopView(actualDataSource.swipeRevealGalleryView(self, viewForItemAtIndex: currentIndex), cacheOld: false)
            }
            
            if numberOfItems > 1 {
                setItemViewForCurrentBottomView(actualDataSource.swipeRevealGalleryView(self, viewForItemAtIndex: currentIndex+1), cacheOld: false)
            }
            
        } else {
            numberOfItems = 0
            clearCurrentTopView(cache: false)
            clearCurrentBottomView(cache: false)
        }
    }

