add tag push message feature
refactor to remove the duplicated code between tag and single push