https://www.technilesh.com/2021/06/how-to-understand-object-oriented.html