use a blueprint to enhance embedability/reuseability/modularity; fixes #25

Fixes #25.
CC: @rajivm @dlindquist for review

(The test suite passes locally; clearly our Travis setup doesn't seem to work on branches for some reason.)