Updated with Singleton and Module patterns