Maybe a small digression about Python protocols, and how what you're doing here is creating a "case" protocol (and why that's a powerful way to design things, how you could have more complex cases if you wanted, etc.).