RealPython part 1 work up through Chaper 8.