We had to resolve some interesting implementation issues in order to provide the functionality described above. All the previously active rendering rules and styles work in conjunction with the variable substitution rendering style. This means that the expressions resulting from variable substitution are rendered exactly as they would be if they occurred by themselves. To achieve this, AsTeR first applies variable substitution and then applies the currently active rendering rules to the result. This added level of complexity is completely transparent to a user of AsTeR , who can continue to add rendering rules and modify styles in the presence of variable substitution.