seems like a strange requirement for the caller.  why not have an internal loop?