more simple version. iterations are now mostly independent