JM: pulled cases out into one parameterised method