refactor to get a common BasicRecord that provides JSON encoding and basic data - all other messages extend it. AuditRecord is the first