rewritten to include passage on how to actually use this as boilerplate