no exception for timeout
keep reference to the timer

avoid garbage collection
moved to function

to simplify the constructor - was a bit messy