since the generated player group is immutable, it can be cached to
reduce overhead