Issue #7 - Replaced singletons with dependency injection