simpler iterator API