Refactor out publisher specific code where possible to avoid repetition of details across 3 separate publishers.