do better dependency injection