         - previous: The previous section to be presented before this one on the list.
      - returns: AnyChatSection instance based on MessageSectionModel.
     */
-    func section(for message: Message, previous: AnyChatSection? = nil) -> AnyChatSection? {
-        guard let message = message.validated()?.unmanaged else { return nil }
-
-        var sequential = false
-        var separator: Date?
-
-        if let previous = previous, let previousObject = previous.base.object.base as? MessageSectionModel {
-            let previousMessage = previousObject.message
-
-            sequential = isSequential(message: message, previousMessage: previousMessage)
-            separator = daySeparator(message: message, previousMessage: previousMessage)
-        }
-
-        let messageSectionModel = MessageSectionModel(
-            message: message,
-            daySeparator: separator,
-            sequential: sequential
-        )
+    func section(for message: UnmanagedMessage) -> AnyChatSection? {
+        let messageSectionModel = MessageSectionModel(message: message)
 
         return AnyChatSection(MessageSection(
             object: AnyDifferentiable(messageSectionModel),

                if let object = section.object.base as? MessageSectionModel {
                    return
                        object.differenceIdentifier == message.identifier &&
                            !message.isContentEqual(to: object.message)
                }

                return false
            })

            if let index = index {
                var previous: AnyChatSection?

                if index < data.count - 1 {
                    previous = data[index + 1]
                }

                if let newSection = section(for: message.managedObject, previous: previous) {
                    data[index] = newSection
                }
            } else {

        for insertion in insertions {
            guard
                insertion < messagesQuery.count,
                let message = messagesQuery[insertion].validated()?.unmanaged
            else {
                continue
            }
