source file | parse entries: name, conf, global options | dedupe entries: names, conf, global options | dispatch one future per module | run; token queue; result queue result task, runner task | receive (names, result) | transform back (name, result) | runner task done | write record file file TODO: * dedupe & cache * update tests * update README