First attempt at an API for #17 - need to use it to see if it's actually useful