Refactor push channel code into its own class