add timeout as parameter