add factory, Prototype. Singleton design patterns