Use generic type for service data to avoid casting all over