Implemented Factory Pattern
Sigleton Pattern