             }
             
             self.setNeedsLayout()
+            self.layoutIfNeeded()
         }
     }
     
     public func reloadView(position: XPosition, item: InfiniteItem, edge: CGFloat) {
         guard self.infiniteDataSource.totalItemCount() > 0 else { return }
-        
+      
+        let convertIndex = self.convertIndex(item.index)
         let bounds = self.bounds
-        let thickness = CGFloat(ceilf(Float(self.infiniteDataSource.thicknessForIndex(item.index))))
-        let view = (self.infiniteDataSource.viewForIndex(item.index))
+        let thickness = CGFloat(ceilf(Float(self.infiniteDataSource.thicknessForIndex(convertIndex))))
+        let view = (self.infiniteDataSource.viewForIndex(convertIndex))
         
         switch position {
         case .Start:

        
        self.scrolling += 1
        self.setContentOffset(self.contentOffset, animated: false)
        UIView.animateKeyframesWithDuration(
            animated ? 0.25 : 0,
            delay: 0,
            options: .BeginFromCurrentState,
            animations: { () -> Void in
                self.bounds = bounds
                animation?()
            }, completion: { finished in

    public func scrollToCenter(index: Int, offset: CGFloat, animated: Bool, animation: (Void -> Void)?, completion: (Void -> Void)?) {
        guard self.infiniteDataSource.totalItemCount() > 0 else { return }
        if self.bounds.isEmpty { return }
      
        self.setNeedsLayout()
        self.layoutIfNeeded()
      
        var bounds = self.bounds
        let visible = bounds.size.width
        
