blockjobs: split interface into public/private, Part 1