Your current approach is the only one that would work in 8-bit compatibility mode.
But if you were not in that mode, and for curiosities sake, other than swapping objects, there is only one other method of achieving this .. by using a reference to a string in the object text.
This doesn't actually allow you to change the aliases at runtime, and you would have to allow the player to use jennifer or smith from the beginning of the game, which generally speaking is fine, unless the player is a mind reader or has played the game before.
Adventuron allows dynamic descriptions of objects via the following mechanism:
objects{ /* jennifer is defined as an alias for smith in the vocab section */ jennifer : scenery "{jennifername}" noun="jennifer"; } strings { jennifername : string "Mrs Smith"; } vocabulary { : noun / aliases = [smith, jennifer] } on_command { : if_examine "jennifer" { : print "She is wearing a badge, it says \"Jennifer.\""; : set_string var="jennifer" value="Jennifer"; : press_any_key; : redescribe; } }