added optional message grouping