https://medium.com/@gurpreet.singh_89/exploring-the-fundamentals-of-solid-design-principles-in-software-engineering-86bc43549d98