implemented Singleton design pattern