Refactored to Singleton pattern to allow for IoC