not much here yet, but trying to keep it lean and unopinionated since implementations will probably vary a bit