documentation!
generalize timevar