divide up into multiple templates
Merge pull request #56 from marshallshen/refactor

divide up into multiple templates