• Layer 1 is low-level and uses ReaderT to hold our application state.
• Layer 2 glues the two layers together using mtl style classes