added an optional 'step' parameter to counter mode