problem 1 solution was busting the stack, so used an iterative approach, but now that we track lit beams we can bail out early enough not to bust the stack. performance is the same but it's much nicer.