make this private or protected; we don't want it being manipulated except through the visible functions.

Also, this should me a map<Integer,SplitMember>, rather than that list - that will make all the for loops below collapse to a groups.get(key); Also, no need to store the UUID twice, as the SplitMember holds the UUID also.