add socket timeout and timers