Add strategy pattern