Guice implementation and refactor