Wouldn't it make more sense to have 4 subclasses of Name for the four kinds?