do not block if there is no receiver
refactor