Added some dependency injection and a splash of reflection