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

No we don't. Wouldn't private be better then?