         
         return rootDataSource.collectionView(collectionView, cellForItemAtIndexPath: NSIndexPath(forItem: adjustedIndex, inSection: 0))
     }
+    
     public func indexPathForPreferredFocusedViewInCollectionView(collectionView: UICollectionView) -> NSIndexPath? {
-        assert(collectionView === self)
         return manualFocusCell
     }
     
-//    public func collectionView(_ collectionView: UICollectionView,
-//        didUpdateFocusInContext context: UICollectionViewFocusUpdateContext,
-//        withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {
-//            
-//    }
-    
     override public func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {
-        guard jumpFromIndex != nil else {
+        guard jump else {
             return
         }
         
-        jumpFromIndex = nil
+        jump = false
         
         let jumpDistance = CGFloat(count) * (cellWidth + interitemSpacing)
         let currentOffset = self.contentOffset.x

            self.setContentOffset(CGPointMake(currentOffset - jumpDistance, self.contentOffset.y), animated: false)
        }

        manualFocusCell = NSIndexPath(forItem: jumpToFocusIndex!, inSection: 0)
        setNeedsFocusUpdate()
    }
    

            return false
        }
        
        focusHeading = context.focusHeading
        
        if focusHeading == .Left && to.item < buffer {
            jump = true
            manualFocusCell = NSIndexPath(forItem: to.item + count, inSection: 0)
        }
        
        if focusHeading == .Right && to.item >= buffer + count {
            jump = true
            manualFocusCell = NSIndexPath(forItem: to.item - count, inSection: 0)
        }
        
        return true
    }
    
    func cellMetricsCached() -> Bool {
        return cellWidth != 0
