Each plot has a CvPlot class associated in it. In that class there is a simple variable called m_eImproventType which holds the enumerated value of type ImprovementTypes. In order to make multiple improvements, you'd need to change this to some other data structure (probably a linked list, using their circularly linked-list class). However, you'd ALSO need to change the functions that deal with this. You could easily change getImprovementYieldChanges to include all of the improvements rather than just one, but changing "getImprovemenType" would be more tricky, since you can only return the enumerated value. Perhaps changing this function to allow input of the index of the improvement (say, "getImprovementType(0)", "getImprovementType(1)", "getImprovementType(i)", etc), but then you'd have to change everywhere that getImprovementType is called and get them all, unless you are okay with defaulting to the first in the list.