run groups recursively