Module (represents currently loaded module metadata): name :: Token filename :: string require(Tokens) #exports(list(pairs)) exports = #exports maybe reflection ? maybe dispatch. Note that dispatch should always have a "fallback" dispatcher argument.