the internal counter should probably be private, no?