Enumerations, using the pattern from "Effective Java", with some extensions to support persistence.