Why use a TaggedEnum instead of a Optional<TaggedBool>? This doesn't seem like it could grow beyond 2-states.