- substitute enum item values directly into usage sites rather than creating synthetic localparams - substitution handles shadowing of expressions in enum item values - disconnected scopes can reference conflicting enum items