Tidy up the compiler a bit.
Add ! syntax to templates.