part two, refactored maxpopular for examples of usage
part three, adding additional getters, refactored more...