Refactoring to enable multiple pusher strategies.