I started implementing the TAC school system, but I ran into a few issues. It's not technical difficulties, but rather what do we want from it? Basically the idea is that buildings and units have an int called iTeachLevel, which is set in XML. A unit can only be trained in a city if the iTeachLevel of the unit is less than or equal to the iTeachLevel of the building with the highest level built in the city in question. Buildings are as follows: 1 Schoolhouse 2 College 3 University If a unit is set to level 3, then it can only be trained at universities while units at level 1 can be trained any of those 3 buildings. Now I start to wonder. Do we really want iTeachLevel in units? That would allow a pioneer at level 1 and a Muslim pioneer at level 3. Wouldn't it make more sense to place iTeachLevel in UnitClassInfo rather than UnitInfo? What should the teach level be for each unit? I looked around a bit and I'm not sure cloning the current needs would be the best. Maybe I should just finish this and deal with the actual XML settings later. Function first, then balance. Any other thoughts anybody would like to share before I actually code this? I want to make it right the first time, which is why I prefer inputs now rather than once I'm done with it. It's never too late, but deciding on the design is better done before I really start to code. Another thing. Adding iTeachLevel around 150 times to XML wasn't something I really wanted to do. I wrote a script to do it for me. I now have a script, which adds line A after lines ending with B in file C (it takes A, B and C as arguments). This adds the default value to all units within a few seconds and appears to be quite useful for any XML additions in the future. Is this a script people are interested in? If so I will clean it up and upload it somewhere. There is one catch though. It's written in bash, which mean it doesn't run natively in windows. However if I recall correctly TortoiseGit installs a bash shell. The same goes for the script, which I used to make XML name duplication asserts. Everything in CvXMLLoadUtilitySet.cpp is coded by a bash script. I can make this one available too if people want it.