simplify and clarify shouldwork()