Checking if the player has invention X shouldn't be too difficult, neither should adding a flag to XML telling if the unit can be a journeyman. There are a few ways to solve that issue. The most important question here is what do we want? Gameplay balancing or historical accuracy and how precisely do we define those? When making an Expert Weaponsmith, assign 100 Blacksmith experience to him to make him a journeyman. It would still be capped at 400 like they normally would. The issue with this approach is that it would screw the Pedia change I made, but I can modify that one, which I likely should anyway. The best way I can think of to do something like that would be to set Journeyman and Expert thresholds in XML for each unit. This would not only allow some units to train faster than others, it would also allow setting Journeyman threshold higher than expert threshold. The expert threshold is max experience meaning journeyman is never reached. We should likely set up defaults and then allow assigning non-default values to each unit as needed. The default values can then depend on iTeachLevel once I implement that one (remember the one telling if the unit can be trained in which level of schoolbuilding). This looks less and less like the modcomp and it adds complexity. However I'm still certain I can do this. What worries me a little bit is the complexity is far greater than I predicted. Not really coding, but performance. Remember this is called for all units every single turn. Maybe the complexity will make me write a cache lookup table like I did for getYieldEquipmentAmount(). I will deal with that if it turns out to be a problem.