Can you follow a simialr pattern here as with {{EmbeddedAmbrosePigProgressNotificationListener}} where this class becomes abstract with a single EmbeddedAmbroseHiveProgressReporter subclass that initializes a InMemoryStatsService() and handles the ScriptStatusServer lifecycle? Then we can have other subclasses that persist data to a remote service with just another impl of StatsWriteService.