added Singleton and State