https://stevenpcurtis.medium.com/what-is-the-difference-between-the-liskov-substitution-principle-and-dependency-inversion-principle-7c9d9175e360