instead of sleep fixed amount of time, should either have push / wait for events or pulling / keep check every small interval