implement timeout and error msg