Adding DI container (needs refactor)