Moved contents of step() method to a protected helper method so that it
can be called by child classes without calling overrides of step() in
intermediate classes.