OK replaced the redundant method calls here with a loop, and now does a ```return``` rather than a ```break``` which hopefully makes it clearer that this exits when there is no more work to do.