Adding Factory Pattern Here.