There is one large enumeration Cmdtype in Command, which contains a set of unique ID's for each derived class of Command. This is done as an enumeration here so that other objects in the program (notably UIObjects) .. can be written with explicit codes to allow them to check what type of command they may be working with. When a new Command object is being written, a new value must be added to this list.