https://tomas-svojanovsky.medium.com/python-intermediate-series-part-3-unlocking-the-magic-of-iterators-302495bee7d7