this is also fairly generic and could've been placed in DataFormats/Candidate