a template parser