used generic itarator