master #20 refactor publisher