building program names at runtime from data values — enables extensible systems where new functionality can be added without modifying the caller.