https://medium.com/@giuseppelepisco/what-are-python-generators-and-why-you-could-need-them-76db756ea674