Now using a Counter interface to allow plugging different implementations.