Refactor to use DI