update: add timeout & response-type support