generalize service selection with helper