changes factoryMethod and strategy