Split the presentation and push logic to make it easier to add different push systems