Slightly better commenting, total time about 5.5 hours