better failure and timeout handling. timeout handling yet far from good...