more accurate timeout