switching to a more consistent and explicit wrapper api