Now supports some colored output.
Calculates all values before printing, so hopefully printing is closer to atomic.