add reader monad dependency injection bonus