I definitely think this is the best option with the current API, but I'd love to present some other interface if you think it would help.