Sounds good. I'll go down that route (and also add the behavior about a failure in `advance` skipping over the failed item to avoid infinite loops).