Added some documentation and tarted up the DI story