Nearly finalized interface, settled several implementation questions.
Compiles, but is very ugly.