First draft
Simplify
Re-factor templates to use generic one