pull out pod-task into its own file; initial support for offer listeners, still incomplete