might be nicer to specify the timeout explicitly