Model behavioral variation as an interface with N implementations and select the right one for the context — instead of branching on a type/flag at every call site.