implement record funcs