make work thread use listener interface