It preserves the existing interface, but the interface is rapidly drifting from the types, so we should fix that. Perhaps a separate PR, perhaps not?