(to elaborate, since this is now going to be part of our API, we'd like to take more care to naming and interfaces than as it was before)