Interesting idea and it wouldn't be that hard to implement. We could add a plot pointer to CvUnit and set it to NULL. If the unit has to be a pilgrim, this pointer will point at the plot the unit has to go to. When a unit enters a plot, if the new plot is == pilgrim plot pointer, then the pointer is set to NULL. This pointer can then be used in can*() functions where it returns false if it isn't NULL. This can be canBuild, canJoinCity or whatever we want. The question is if it will be fun if your soldier suddenly becomes a pilgrim and can't attack unless you get him to a plot on the other side of your enemy. At some point we will have an XML file telling about the city types. It would be possible to add a TXT_KEY with a name prefix (which can be empty). On founding, there is code to get a city name. This code can then be modded into attaching the prefix for the type of city in question. This mean all it does is changing the proposed name and the player has full ability to rename as he wants. The AI will always use the defaults. It sounds rather simple to implement once the XML file itself is added.