Add DI container and tests