Factory design pattern
factory and strategy