https://jber595.medium.com/s-o-l-i-d-principles-in-c-your-roadmap-to-writing-clean-and-maintainable-object-oriented-code-3a66348aa807