what is a cycle precisely? maybe we should update the standard to have methods for returning the current (stage, step) tuple instead of "cycle"?