refactor broadcast API