#3 and #4 create map and inferable mapping methods for public usage

Pprotected would allow overriding in a possibly derrived class, I'd say that should be possible in case someone wants to do that.