- preset-vars is an array since it has to be in order.
- the user-rule code is now generated as a sub-routine so that it can be invoked
  regularly as needed