[WIP] Continue to clean-up the API

The backends now all share the same kind of interface (this was more
or less already the case, but it's much cleaner now).