necessary ========= delete halfway-built output files when interrupted frosting ======== -k flag for "keep going on error". take a numeric param for how many errors to swallow before aborting. when we've been waiting for commands for more than a second with no output, print some "still waiting for xyz" text if command line for an output changed, no need to even stat the output, just mark it for rebuilding immediately. "explain" mode that shows why we're building a file "one file" mode that builds only outputs of a single file adjust to system load dynamically compute etas on builds using logged timing info how does parallelization fit in?