diff --git a/Clckwrks/Page/API.hs b/Clckwrks/Page/API.hs
--- a/Clckwrks/Page/API.hs
+++ b/Clckwrks/Page/API.hs
@@ -28,6 +28,7 @@
 import Clckwrks.Page.URL    ( PageURL(ViewPageSlug))
 import Clckwrks.URL         (ClckURL(..))
 import Control.Applicative  ((<$>))
+import Control.Monad.Fail   (MonadFail)
 import Control.Monad.State  (get)
 import Control.Monad.Trans  (MonadIO)
 import qualified Data.Text  as T
@@ -90,7 +91,7 @@
 getBlogTitle :: PageM T.Text
 getBlogTitle = query GetBlogTitle
 
-extractExcerpt :: (MonadIO m, Functor m, Happstack m) =>
+extractExcerpt :: (MonadIO m, MonadFail m, Functor m, Happstack m) =>
                   Page
                -> ClckT url m Content
 extractExcerpt Page{..} =
diff --git a/Clckwrks/Page/Atom.hs b/Clckwrks/Page/Atom.hs
--- a/Clckwrks/Page/Atom.hs
+++ b/Clckwrks/Page/Atom.hs
@@ -1,13 +1,14 @@
-{-# LANGUAGE RecordWildCards, OverloadedStrings, QuasiQuotes #-}
+{-# LANGUAGE FlexibleInstances, RecordWildCards, OverloadedStrings, QuasiQuotes #-}
 module Clckwrks.Page.Atom where
 
-import Control.Monad.Trans     (liftIO)
+import Control.Monad.Trans     (lift, liftIO)
 import Clckwrks.Monad          (Clck, Content(..), query, withAbs)
 import Clckwrks.Page.Acid
 import Clckwrks.Page.Monad     (PageM, markupToContent)
 import Clckwrks.Page.Types
 import Clckwrks.ProfileData.Acid
 import Clckwrks.Page.URL
+import Control.Monad.Fail      (MonadFail(fail))
 import Data.Maybe              (fromMaybe)
 import Data.Monoid             ((<>))
 import Data.String             (fromString)
@@ -18,11 +19,12 @@
 import Data.Time.Clock.POSIX   (posixSecondsToUTCTime)
 import Data.Time.Format        (formatTime)
 import Data.UUID               (toString)
-import Happstack.Server        (Happstack, Response, ok, toResponseBS)
+import Happstack.Server        (Happstack, Response, ok, ServerPartT, toResponseBS)
 import HSP.XMLGenerator
 import HSP.XML                 (XML, cdata, renderXML, fromStringLit)
 import Language.Haskell.HSX.QQ (hsx)
 import Data.Time.Locale.Compat (defaultTimeLocale)
+import Prelude hiding (fail)
 import Web.Routes              (showURL)
 
 atom :: FeedConfig  -- ^ feed configuration
diff --git a/Clckwrks/Page/Monad.hs b/Clckwrks/Page/Monad.hs
--- a/Clckwrks/Page/Monad.hs
+++ b/Clckwrks/Page/Monad.hs
@@ -3,6 +3,7 @@
 
 import Control.Applicative           ((<$>))
 import Control.Monad                 (foldM)
+import Control.Monad.Fail            (MonadFail(fail))
 import Control.Monad.Reader          (MonadReader(ask,local), ReaderT(runReaderT))
 import Control.Monad.State           (StateT, put, get, modify)
 import Control.Monad.Trans           (MonadIO(liftIO))
@@ -23,10 +24,17 @@
 import Happstack.Server              (Happstack, Input, ServerPartT)
 import HSP.XMLGenerator
 import HSP.XML
+import Prelude hiding (fail)
 import Text.Reform                   (CommonFormError, FormError(..))
 import Web.Plugins.Core              (Plugin(..), getConfig, getPluginsSt, getPluginRouteFn)
 import Web.Routes                    (RouteT(..), showURL, withRouteT)
 
+instance MonadFail m => MonadFail (ClckT url m) where
+    fail = lift . fail
+
+instance MonadFail (ServerPartT IO) where
+    fail = lift . fail
+
 data PageConfig = PageConfig
     { pageState        :: AcidState PageState
     , pageClckURL      :: ClckURL -> [(T.Text, Maybe T.Text)] -> T.Text
@@ -62,7 +70,7 @@
     where
       flattenURL _ = \u p -> showClckURL u p
 
-clckT2PageT :: (Functor m, MonadIO m, Typeable url1) =>
+clckT2PageT :: (Functor m, MonadIO m, MonadFail m, Typeable url1) =>
              ClckT url1 m a
           -> PageT m a
 clckT2PageT m =
@@ -110,7 +118,7 @@
 
 -- | convert 'Markup' to 'Content' that can be embedded. Generally by running the pre-processors needed.
 -- markupToContent :: (Functor m, MonadIO m, Happstack m) => Markup -> ClckT url m Content
-markupToContent :: (Functor m, MonadIO m, Happstack m) =>
+markupToContent :: (Functor m, MonadIO m, MonadFail m, Happstack m) =>
                    Markup
                 -> ClckT url m Content
 markupToContent Markup{..} =
diff --git a/clckwrks-plugin-page.cabal b/clckwrks-plugin-page.cabal
--- a/clckwrks-plugin-page.cabal
+++ b/clckwrks-plugin-page.cabal
@@ -1,5 +1,5 @@
 name:                clckwrks-plugin-page
-version:             0.4.3.15
+version:             0.4.3.16
 synopsis:            support for CMS/Blogging in clckwrks
 description:         This provides two similar concepts Pages and Posts. Both allow
                      you to create page content by editting pages in the browser. A Post
@@ -46,7 +46,7 @@
   other-modules:
                        Clckwrks.Page.Verbatim
   build-depends:       base                   >= 4.3 && < 4.13,
-                       acid-state             >= 0.12 && < 0.15,
+                       acid-state             >= 0.12 && < 0.16,
                        aeson                  (>= 0.4  && < 0.10) || (>= 0.11 && < 1.5),
                        attoparsec             >= 0.10 && < 0.14,
                        clckwrks               >= 0.24 && < 0.25,
