Wip replay old

I like the enums, but I'm really shying away from swapping in a bunch of "if" blocks instead of the switch statement. Switches with fall-thru are fairly idiomatic, but a sequence of mostly-exclusive-but-not-quite if blocks are weird. (In particular, it's a much higher cognitive load to figure out the flow control the if statements can go through here; you need to look through the whole case for somebody resetting "step" instead of just checking for a "break" statement.)