do not depend on boost/timer