remove copy/paste into a strategy pattern