             return false
         }
         
-        if jumpFromIndex != nil && focusHeading != context.focusHeading {
-            // Swapped directions mid jump -- abort
-            jumpFromIndex = nil
-            jumpToIndex = nil
-            jumpToFocusIndex = nil
-        }
-        
         focusHeading = context.focusHeading
         
         if focusHeading == .Left && to.item < buffer {
-            jumpFromIndex = jumpFromIndex ?? to.item
-            jumpToIndex = buffer + count - 1
-            jumpToFocusIndex = to.item + count
+            jump = true
+            manualFocusCell = NSIndexPath(forItem: to.item + count, inSection: 0)
         }
         
         if focusHeading == .Right && to.item >= buffer + count {
-            jumpFromIndex = jumpFromIndex ?? to.item
-            jumpToIndex = buffer
-            jumpToFocusIndex = to.item - count
+            jump = true
+            manualFocusCell = NSIndexPath(forItem: to.item - count, inSection: 0)
         }
         
         return true
     }
-    
-//    public func scrollViewDidScroll(scrollView: UIScrollView) {
-//        guard let jumpIndex = jumpFromIndex else {
-//            return
-//        }
-//        
-//        // TODO: screen frame - cell width plus margins / 2 ?
-//        let desiredOffset = CGFloat(jumpIndex) * (cellWidth + interitemSpacing)
-//        let currentOffset = scrollView.contentOffset.x
-//        
-//        print("looking for \(desiredOffset) currently \(currentOffset)")
-//        
-//        if (focusHeading == .Left  && currentOffset <= desiredOffset) ||
-//            (focusHeading == .Right && currentOffset >= desiredOffset)
-//        {
-//            // Jump!
-//            
-//            jumpFromIndex = nil
-//            
-//            let jumpPath = NSIndexPath(forItem: jumpToIndex!, inSection: 0)
-//            scrollToItemAtIndexPath(jumpPath, atScrollPosition: .Left, animated: false)
-//            
-//            manualFocusCell = NSIndexPath(forItem: jumpToFocusIndex!, inSection: 0)
-//            setNeedsFocusUpdate()
-//        }
-//    }
     
     func cellMetricsCached() -> Bool {
         return cellWidth != 0

    
    /// Cached interitem spacing; set when first cell is requested and expected not to change
    private var interitemSpacing: CGFloat = 0
    
    var jumpFromIndex: Int?
    var jumpToIndex: Int?
    var jumpToFocusIndex: Int?
    var focusHeading: UIFocusHeading?
    var manualFocusCell: NSIndexPath?
    
    public func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

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

        setNeedsFocusUpdate()
    }
    
