Lots of work on defining the interface