work towards an em-like iteration