streams, but with generators