https://mysteryweevil.medium.com/master-defining-classes-in-python-a-comprehensive-guide-22337b78a94f