look ma! I actually learned how to template