refactor league service to be more flexible