Everything in the API runs on any monad in MonadIO (instead of IO itself)