The Liskov Substitution Principle — and why you might want to enforce it