     }
 }
 
+// Proxy
+public extension ChatMessagesViewController {
+    func indexPath(of itemId: String) -> IndexPath? {
+        return self.messagesAdapter.indexPath(of: itemId)
+    }
+
+    func refreshContent(completionBlock: (() -> Void)? = nil) {
+        self.messagesAdapter.refreshContent(completionBlock: completionBlock)
+    }
+
+    func scrollToBottom(animated: Bool) {
+        self.collectionView.scrollToBottom(
+            animated: animated,
+            animationDuration: self.style.updatesAnimationDuration
+        )
+    }
+}
+
 extension ChatMessagesViewController {
     public override func collectionView(_ collectionView: UICollectionView,
                                         didEndDisplaying cell: UICollectionViewCell,

        }
    }

    func scroll(toItemId itemId: String,
                position: UICollectionView.ScrollPosition,
                animated: Bool,
                spotlight: Bool) {
        guard let itemIndexPath = self.messagesAdapter.indexPath(of: itemId),
              let rect = self.collectionView.rect(at: itemIndexPath) else { return }



        return collectionView.collectionViewLayout.layoutAttributesForItem(at: indexPath)?.frame
    }

    public func autoLoadMoreContentIfNeeded() {
        guard self.config.autoLoadingEnabled else { return }

        let isCloseToTop = self.collectionView.isCloseToTop(threshold: self.config.autoMarginThreshold)
