abstract record store refactor