New typed

Basically updated the code to use `string-template` and pass in options that are mixed in.

cc @jcorbin