lots of changes, introduces guice and many other things