Making a modular change to improvementtypes is actually really easy. You can add effects, sometimes modify existing ones and sometimes remove them.
When making a modular change to improvementtypes, what you need to realize is that all the building's effects are still in place. That's it.
Let's say I want to make a workshop increase gildar income by 10% if the city is idle (its production is going to waste). All I need is this:
<ImprovementType InternalName="Workshop">
<GameModifier>
<ModType>ResourceMultiplier</ModType>
<Attribute>Gold</Attribute>
<Value>1</Value>
<PerTurn>1</PerTurn>
<IsProductionQueueEmpty>1</IsProductionQueueEmpty>
<Provides>+10% Gildar when the city is idle</Provides>
<UpgradeComparisonID>3</UpgradeComparisonID>
<UpgradeComparisonTooltipValue>1.1</UpgradeComparisonTooltipValue>
<Calculate InternalName="Calc" ValueOwner="OwnerCity">
<Expression><![CDATA[[IsProductionQueueEmpty] * 0.1]]></Expression>
</Calculate>
<Calculate InternalName="Value" ValueOwner="OwnerCity">
<Expression><![CDATA[[Calc] + 1]]></Expression>
</Calculate>
</GameModifier>
</ImprovementType>
since the Workshop can be upgraded you'll also need to do a similar modifier into the Mason, Mill, Slave Pen and Labour Guild. Remember to keep the <UpgradeComparisonID>3</UpgradeComparisonID> the same. It should be unique for your modifier, ie not the same as one used for those buildings already.
If your intent is to change an existing modifier, or remove it, you should act as if you are counter-acting it. If a building produces 3 gildar per turn and you want it at 0, you need to do a new modifier that removes 3 gildar per turn.