https://medium.com/geekculture/a-comprehensive-guide-to-oop-fp-and-data-driven-approaches-7ab464c3b9ac