options can be generated on the fly