         }
     }
 
-    override public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
-        if isTopCell(indexPath) {
-            return topCells[indexPath.row]
-        } else if isFooter(indexPath) {
+    public override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
+        if isFooter(indexPath) {
             let cell = tableView.dequeueReusableCellWithIdentifier(readMoreCellIdentifier, forIndexPath: indexPath)
             cell.separatorInset = UIEdgeInsets(top: 0, left: CGFloat.max, bottom: 0, right: 0) // cf. http://stackoverflow.com/questions/8561774/hide-separator-line-on-one-uitableviewcell
             return cell
+        } else if isTopCell(indexPath) {
+            return topCells[indexPath.row]
         } else {
             let cell = tableView.dequeueReusableCellWithIdentifier(mainCellIdentifier, forIndexPath: indexPath)
             return configureCellClosure(cell: cell, row: indexPath.row - topCells.count)

    private var hidesFooter = false
    private var mainCellCount = 0
    private var allCellCount: Int {
        return topCells.count + mainCellCount + (hidesFooter ? 0 : 1)
    }

    public var configureCellClosure: (cell: UITableViewCell, row: Int) -> UITableViewCell = { cell, row in return cell }

    }

    public func clearData() {
        mainCellCount = 0
        tableView.reloadData()
        updateFooter(true)
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(0.01 * Double(NSEC_PER_SEC))), dispatch_get_main_queue()) {
            if self.tableView(self.tableView, numberOfRowsInSection: 1) > 0  { // Prevent error "row (0) beyond bounds (0) for section (0)."
                self.tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 1), atScrollPosition: .Top, animated: false)
            }
        }
    }

    // MARK: - Private
