The problem with using buildings is that if you say requires 10 people to get a building, you put those 10 inside, get the building and then you remove 8 people. The remaining two will use the high grade building. Next you add 2 people to the group, found a new city with 10 people and repeat. If the buildings downgrade, it will involve the same technical difficulties, meaning we gained nothing from using buildings. Also which building should you add to the construction queue? Also by replacing a single building with say 5, we gain a whole lot of buildings in xml. This makes it slower to loop all buildings, meaning it will likely be a slower overall approach. The "depends on population" approach would require more calculations at a certain point, but it would be virtually instant if the variables are stored next to each other in memory.