https://medium.com/@mohitgadhavi1/object-oriented-programming-oop-in-javascript-understanding-prototypal-inheritance-cd619b97bafb