https://medium.com/@mr.errorsama/discovering-the-power-of-object-oriented-programming-in-c-56e96346fdc3