Properly abstract out the concept of an element which can be converted into a block, and render block macros in a <pre>
Properly handle ]] and }} in links