diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
-# 0.1.0.0
+# 0.2.0.0
+
+* Change types (the previous version was unusable).
+* Actually return the value returned by the Lucid action.
+
+# 0.1.0.0 (deprecated)
 
 First release.
diff --git a/Spock-lucid.cabal b/Spock-lucid.cabal
--- a/Spock-lucid.cabal
+++ b/Spock-lucid.cabal
@@ -1,5 +1,5 @@
 name:                Spock-lucid
-version:             0.1.0.0
+version:             0.2.0.0
 synopsis:            Lucid support for Spock
 description:
   Lucid support for Spock
@@ -26,6 +26,7 @@
   -- other-extensions:    
   build-depends:       Spock >= 0.9
                      , base >= 4.7 && < 4.10
+                     , blaze-builder
                      , lucid == 2.*
                      , transformers
   ghc-options:         -Wall -fno-warn-unused-do-bind
diff --git a/lib/Web/Spock/Lucid.hs b/lib/Web/Spock/Lucid.hs
--- a/lib/Web/Spock/Lucid.hs
+++ b/lib/Web/Spock/Lucid.hs
@@ -1,24 +1,44 @@
 {-# LANGUAGE
-OverloadedStrings
+CPP,
+OverloadedStrings,
+RankNTypes
   #-}
 
 
 module Web.Spock.Lucid
 (
   lucid,
+  lucidIO,
 )
 where
 
 
-import Control.Monad.Trans.Class
+import Data.Functor.Identity
 import Control.Monad.IO.Class
 import Web.Spock
 import Lucid.Base
+import Blaze.ByteString.Builder
 
+#if !MIN_VERSION_base(4,8,0)
+import Data.Monoid (mempty)
+#endif
 
+
 -- | Render HTML and send as response body. Content-type will be @text/html@.
-lucid :: MonadIO m => HtmlT m a -> ActionCtxT ctx m a
+lucid :: MonadIO m => Html a -> ActionCtxT cxt m a
 lucid x = do
   setHeader "Content-Type" "text/html; charset=utf-8"
-  lazyBytes =<< lift (renderBST x)
+  let Identity (render, a) = runHtmlT x
+  lazyBytes (toLazyByteString (render mempty))
+  return a
 {-# INLINE lucid #-}
+
+-- | Like 'lucid', but for @HtmlT IO@.
+lucidIO :: MonadIO m => HtmlT IO a -> ActionCtxT cxt m a
+lucidIO x = do
+  setHeader "Content-Type" "text/html; charset=utf-8"
+  (render, a) <- liftIO (runHtmlT x)
+  lazyBytes (toLazyByteString (render mempty))
+  return a
+{-# INLINE lucidIO #-}
+
