https://medium.com/@nielsijpelaar/an-introduction-to-object-oriented-programming-oop-in-python-a-two-part-journey-7c83f1fc7ca3