The primary functions performed by the master module were listed in Section 3.1.3. If needed, the user must provide a routine to read problem-specific parameters in from the parameter file. She must also provide a subroutine for upper bounding if desired, though upper bounds can also be provided explicitly. A good initial upper bound can dramatically decrease the solution time by allowing more variable-fixing and earlier pruning of search tree nodes. If no upper bounding subroutine is available, then the two-phase algorithm, in which a good upper bound is found quickly in the first phase using a reduced set of variables can be advantageous. See Section 3.2.3 for details. The user's only unavoidable obligation during pre-processing is to specify the list of base variables and, if desired, the list of extra variables that are to be active in the root node. Again, we point out that selecting a good set of base variables can make a marked difference in solution speed, especially using the two-phase algorithm.