inline group implementation (44 statements vs 84!)