Candidate redux74

see #3961
and
#6678

supersedes the latter

CMS coding rules require all member data to be private