Upgrade to:

1. support internal vs external names in templates
2. support vague modularisation of templates
3. support generation of unique names within a template
Use UUIDs rather than state
Support the notion of warnings, tidy up error handler API