  In this short paper, we explore a new way to refactor a simple but
tricky-to-parallelize tree-traversal algorithm to harness multicore
parallelism. Crucially, the refactoring draws from some classic techniques from
programming-languages research, such as the continuation-passing-style
transform and defunctionalization. The algorithm we consider faces a
particularly acute granularity-control challenge, owing to the wide range of
inputs it has to deal with. Our solution achieves efficiency from heartbeat
scheduling, a recent approach to automatic granularity control. We present our
solution in a series of individually simple refactoring steps, starting from a
high-level, recursive specification of the algorithm. As such, our approach may
prove useful as a teaching tool, and perhaps be used for one-off
parallelizations, as the technique requires no special compiler support.
