work in progress with timeouts