https://python.plainenglish.io/how-i-stopped-fighting-my-python-code-and-finally-made-it-modular-3e774e158cf3