https://medium.com/@rohit.p.burde/explaining-object-oriented-programming-using-school-reference-dbd569e3495c