reference setTimeout result
applied some stuff from so