refactor and experiment strategy pattern - part 2