redid the interface, given some more thought