Yeah, that helps. My intuition with `MonadIO` is that I don't think every `Monad` can be lifted into `IO`, hence the typeclass (and it's why there are laws that need to be satisfied). I'm not being nit-picky, moreso trying to understand this as a design philosophy, but I always read the pragma that we should not be trying to create typeclasses everywhere, especially for something pretty small like this that can just be written as a function. Unless I am mistaken, in the `main` method where this is used, `liftScotty` could be inlined with `WCM . lift`?

Now, it's a minute detail as to which is better, but I bring this discussion up because I like using typeclasses, had read they should be kept to a minimum, and then saw you using one here.