This all doesn't seem too robust - it'd be better if option combinations are validated the same way as the other options (i.e. record the option values in variables, check for invalid combinations opportunistically and at the end).