Singleton
Factorymethod Pattern