Refactor with guice

I'm pretty happy with this refactoring and I think it is time to move it into my master branch