func NewBackgroundHeartbeat(natsClient diegonats.NATSClient, natsAddress, natsUsername, natsPassword string, logger lager.Logger, registration RegistryMessage) ifrit.RunFunc {
	return func(signals <-chan os.Signal, ready chan<- struct{}) error {
		restarter := restart.Restarter{
			Runner: newBackgroundGroup(natsClient, natsAddress, natsUsername, natsPassword, logger, registration),
			Load: func(runner ifrit.Runner, err error) ifrit.Runner {
				return newBackgroundGroup(natsClient, natsAddress, natsUsername, natsPassword, logger, registration)
			},
		}
		// don't wait, start this thing in the background
		close(ready)
		return restarter.Run(signals, make(chan struct{}))
	}
}