This also splits 'text' into 'text', 'elements', and 'element' to hopefully better communicate structure
Rename "unsafeHtml" to "rawHtml"