https://mysteryweevil.medium.com/empower-your-projects-understanding-abstraction-and-modules-in-python-bff99badf409