refactor Counter && prepare for extracting the start/stop logic