diff --git a/Network/JMacroRPC/Happstack.hs b/Network/JMacroRPC/Happstack.hs
--- a/Network/JMacroRPC/Happstack.hs
+++ b/Network/JMacroRPC/Happstack.hs
@@ -69,6 +69,7 @@
 import Data.IntMap(IntMap)
 import Data.Aeson
 import qualified Text.Blaze.Html as H
+import Control.Monad
 
 instance (ToJSON b, Monad m, Functor m) => ToJsonRPC (ServerPartT m (Either String b)) (ServerPartT m) where
     toJsonRPC_ f = \ _ -> fmap (fmap toJSON) $ f
@@ -83,7 +84,7 @@
 serveSimpleRpcs rpcs = serveRpcs (const $ return ()) rpcs
 
 -- | This general handler allows explicit culling of conversation state.
-mkConversationPage :: forall m s timestamp. (Monad m, Functor m, MonadIO m) =>
+mkConversationPage :: forall m s timestamp. (Monad m, Functor m, MonadIO m, MonadPlus m) =>
                             IO timestamp -- ^ Get an abstract timestamp
                             -> (IntMap (timestamp,s) -> IO (IntMap (timestamp,s))) -- ^ Cull a map of conversations based on a timestamp
                             -> (JStat -> ServerPartT m Response) -- ^ Take some JMacro Javascript and splice it into some generated page.
@@ -93,10 +94,10 @@
 mkConversationPage getStamp cullMap pageFun emptyState rpcs = (\(rpcPage, mainPage) -> dir "jrpcs"  rpcPage `mappend` mainPage) <$> mkConversationPageGen getStamp cullMap serveRpcs pageFun emptyState rpcs
 
 -- | This simple handler allows conversation state to grow without bounds.
-mkConversationPageNoCulling :: forall m s. (Monad m, Functor m, MonadIO m) => (JStat -> ServerPartT m Response) -> IO s -> [JsonRPC (ServerPartT m) s] -> IO (ServerPartT m Response)
+mkConversationPageNoCulling :: forall m s. (Monad m, Functor m, MonadIO m, MonadPlus m) => (JStat -> ServerPartT m Response) -> IO s -> [JsonRPC (ServerPartT m) s] -> IO (ServerPartT m Response)
 mkConversationPageNoCulling pageFun emptyState rpcs = mkConversationPage (return ()) return pageFun emptyState rpcs
 
 -- | Render a Panel as a @ServerPartT m Response@.
-panelToPage :: (Monad m, Functor m, MonadIO m) => Maybe String -> String -> Panel (ServerPartT m) -> ServerPartT m Response
+panelToPage :: (Monad m, Functor m, MonadIO m, MonadPlus m) => Maybe String -> String -> Panel (ServerPartT m) -> ServerPartT m Response
 panelToPage jqLoc title p = dir "jrpcs" updateHandler `mappend` drawHandler
     where (updateHandler, drawHandler) = panelToPageGen (serveRpcs $ const (return ())) (return . toResponse . H.preEscapedToHtml) jqLoc title p
diff --git a/jmacro-rpc-happstack.cabal b/jmacro-rpc-happstack.cabal
--- a/jmacro-rpc-happstack.cabal
+++ b/jmacro-rpc-happstack.cabal
@@ -1,5 +1,5 @@
 Name:                jmacro-rpc-happstack
-Version:             0.3.1
+Version:             0.3.2
 Homepage:            http://hub.darcs.net/gershomb/jmacro-rpc
 License:             BSD3
 License-file:        LICENSE
