What do you think of subclassing instead of dispatching with `if`?