A do-while looks slightly more efficient here....