now with a working timeout implementation I think