359 make now optional

Fixes #359.

Includes changes from the original PR (#360), with the refactoring/cleanup split out and every so slightly powered up.
Forgive my ignorance, but why is the `ToString` here?