add better retry on error, timeout nicely