03:58:14 newtype SrvM a = SrvM { unSrvM :: ServerPartT (ReaderT Env IO) a } deriving (Monad, MonadReader Env, ServerMonad, FilterMonad Response) 03:58:15 runSrvM env x = ServerPartT . ReaderT $ WebT . ErrorT . FilterT . WriterT . MaybeT . flip runReaderT env . ununWebT . runServerPartT (unSrvM x) 03:58:24 is there a nicer way to achieve this? 03:58:51 the alternate is to ReaderT Env ServerPart a 03:59:20 but that requires writing lots of boilerplate instances (for FilterMonad, ServerMonad instances)