templates are a pain