use more accurate timer