Adding passthrough of timeout, and attach points in the Run method. Clea...

...ning up timer code. Setting default to 30 seconds, and adding debugging to random numbers ample
nit: space after `//`, also should talk about how to specify a longer timeout (the 3rd parameter)