start moving on factory pattern
dfsdfsf