https://stackoverflow.com/questions/231767/what-does-the-yield-keyword-do-in-python