Add subclasses to perform translation of inputs.
Cleanup some cruft, add docs.