record implemented