I see from the parameters code that dynamic_options are to be replaced with options as part of workflow buildout. I'm finding lots of use cases where the dynamic_options returned by code from an included module makes some complicated things really easy for users. For example. In the new gene expression tools, each expression experiment is stored as a new Galaxy datatype based on the Bioconductor representation (affybatch, eset etc). Each of those structures has (optional!) accompanying experimental metadata (phenodata) which at the time the affybatch is being created, is in the form of a tab delimited file with a header row. For constructing design and contrast matrices for analyses, the user has to choose one or more of those phenodata columns for that experiment - and the choice typically might be limited to those columns containing *exactly* two values - ie dichotomous contrasts. I have code working that allows the user to choose an input (eg affybatch) experiment file from their history, then to choose from among *only* the dichotomous phenotype columns, and run the analysis - you cannot imagine what a big deal this is compared with trying to teach people to generate design and contrast matrices interactively in R! But of course, these miracles all rely on dynamic_options calling some code included with the tool. What's the best way forward for a situation where we need to obtain this kind of drop down list for a tool, that depends on the choice on a previous page, that will be compatible with workflows in the long-haul? I guess one approach is that when generating the (eg affybatch) metadata, I guess I could create all the option lists I'm going to ever need as additional metadata datastructures that could be used like the options from files are used elsewhere - the catch is that they'd all have to be precomputed rather than being computed on the fly by the tool - is that reasonable or is there some way to allow dynamic computing on the metadata (and it's a little complex, involving parsing the phenodata and constructing a concordance of the values in each column and eg returning only the columns with exactly two values) -- python -c "foo = map(None,'moc.liamg@surazal.ssor'); foo.reverse(); print ''.join(foo)"