maybe it would make sense to collect and simplify the service listener?