Contains all of the work in PR #16, but with all of the code conflicts resolved.
Refs #10.
This change is