Hrm - yeah, that seems as if it would help...I guess a recursive scroll through all successor vertices? One could then check to see if all successive vertices generated where in the array of listed vertices, and any leftover would be turned out into a new colony. This doesn't sound terrible efficient....although it may be the only way. I guess infinite looping could be avoided by making this a directed graph....although that would mean that if certain vertices are eliminated, new colonies that should be merged with the old would be created, which I'm not entirely comfortable with. If it were an undirected graph, that sort of algorithm would seem to have the potential to loop back on itself, which worries me a tad. Any suggestions?