         }
     }
     
-    public func appendNewPage(with objects: [ListObject]) {
+    public func appendNewPage(_ page: ListPage, with objects: [ListObject]) {
+        self.currentPage = page.number
+        if objects.count > 0 && self.state.isEmpty {
+            self.state.isEmpty = false
+        }
+        if objects.count < page.size {
+            self.state.canLoadMore = false
+        }
+        
         self.lastID = objects.last?.listID
         self.appendObjects(objects, animated: self.appendAnimated)
     }

    
    private func loadPage(_ page: ListPage, completion: @escaping ([ListObject]) -> Void) {
        
        guard state.isLoading == false, state.canLoadMore else { return }
        
        self.state.isLoading = true
        
        self.dataSource?.loadPage(page).start { [weak self] result in


        let page = ListPage(size: pageSize, number: firstPage,  lastID: nil)
        self.loadPage(page) { [weak self] objects in
            self?.appendNewPage(page, with: objects)
        }
    }
    
    public func loadNextPage() {
        guard state.canLoadMore else { return }
        let nextPage = ListPage(size: pageSize, number: currentPage + 1,  lastID: self.lastID)
        self.loadPage(nextPage) { [weak self] objects in
            self?.appendNewPage(nextPage, with: objects)
        }
    }
    
