add timeout functionality to client