https://medium.com/@mindmemoirs/introduction-to-object-oriented-programming-oop-made-simple-1a7a9470aedb