abstract timers out into their own functions, to make the code easier to understand
md5 fixes