 
             return object1.messageDate.compare(object2.messageDate) == .orderedDescending
         }
+
+        normalizeDataSorted()
+    }
+
+    /**
+     */
+    internal func normalizeDataSorted() {
+
     }
 
     /**

    func fetchMessages(from oldestMessage: Date?) {
        guard !requestingData, hasMoreData else { return }
        guard let subscription = subscription?.validated() else { return }
        guard let subscriptionDetached = subscription.unmanaged else { return }

        let messages = subscription.fetchMessages(30, lastMessageDate: oldestMessage)
        for message in messages {
            if let section = section(for: message) {
                data.append(section)
            }
        }

        if messages.count > 0 {
            cacheDataSorted()
            onDataChanged?()
        }

        requestingData = true
        MessageManager.getHistory(subscriptionDetached, lastMessageDate: oldestMessage) { [weak self] oldest in
            DispatchQueue.main.async {
                self?.requestingData = false
                self?.hasMoreData = oldest != nil

        - previous: The previous section to be presented before this one on the list.
     - returns: AnyChatSection instance based on MessageSectionModel.
    */
    func section(for message: UnmanagedMessage) -> AnyChatSection? {
        let messageSectionModel = MessageSectionModel(message: message)

        return AnyChatSection(MessageSection(
            object: AnyDifferentiable(messageSectionModel),
