Why does self override id? What happens if they are different? I don't think there should be two ways to do the same thing.