add timer
add timeout
modify define