basic group class implementation