I'm pretty sure that it can be done in less to 3 calls to functions on a collection (even if an iterator)