filling in more of the record interface and implementation