They're already like that, but the current implementation makes each sequence or macro into its own user type, with implementation-language source in the database. Instead, it would be better (and would solve #1) to store them more simply, as whitespace-delimited moteIDs, that are analyzed for placeholder types by the operation of the macro or sequence type code. Then we've got a new base type, a list of motes, which can be used for macro and sequence definitions, as well as explicit argument lists, and other stuff, like being the argument of a MAP or FOREACH kind of operator.