record class implementation