add better client iteration