Progress for #50 (interface refactoring)

Not ready for merge yet. Please hold.

xref #50.