make the private.mk mechanism sufficiently general to use elsewhere.