add timeout interface