Changing from a enum to a hierarchy of classes.