break subscribers out into a separate module and turn tests into a package