looks great!
would it make sense to abort the loop if too many `discarded`?