abstract record class now working properly