first pass at group functionality