https://mrezkys.medium.com/liskov-substitution-principle-l-in-solid-practical-with-swift-b117ab3ac065