message model:
 - paragraphs (p, h1, code block, quote, ...)
    - lines
        - parts (inline markup), which can be recursive