First refactor of the interface, looking good