I think it would be more useful to raise the level of abstraction of the data beyond such a fixed usage. For example, the module could have a default config file with the possibility to specify an override file in the new method. The config file would specify all possible column ids each having characterisation columns such as action-to-be-performed, whether derived, whether input and whether included in output. Furthermore, actions for a column could be defined or overridden by including a sub-hash of code references in the instance variable that can also be modified via the "new" method.