reword some things
threadFactory should not be shared but reused in more places, prefer newTimer over just timer to infer a new timer will be returned