         let decorationAttr =  UICollectionViewLayoutAttributes(forDecorationViewOfKind: elementKind, with: indexPath)
         let cellAttr = self.computeLayoutAttributesForCellAtIndexPath(indexPath)
         decorationAttr.frame = cellAttr.frame
+
         decorationAttr.frame.size.height -= TopSiteCellUX.TitleHeight
         decorationAttr.zIndex = -1
         return decorationAttr
     }
 
     override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
+        if cachedAttributes != nil {
+            return cachedAttributes
+        }
         var allAttributes = [UICollectionViewLayoutAttributes]()
         for i in 0 ..< cellCount {
             let indexPath = IndexPath(row: i, section: 0)

            self.collectionView?.setContentOffset(CGPoint.zero, animated: false)
        }
        boundsSize = self.collectionView?.frame.size ?? CGSize.zero
        register(EmptyTopsiteDecorationCell.self, forDecorationViewOfKind: ASHorizontalScrollCellUX.TopSiteEmptyCellIdentifier)
    }


        var numberOfCells = cellCount
        while numberOfCells % horizontalItemsCount != 0 {
            //we need some empty cells dawg.

            let attr = self.layoutAttributesForDecorationView(ofKind: ASHorizontalScrollCellUX.TopSiteEmptyCellIdentifier, at: IndexPath(item: numberOfCells, section: 0))
            allAttributes.append(attr!)
            numberOfCells += 1
        }
        cachedAttributes = allAttributes
        return allAttributes
    }

