diff --git a/Text/Reform/HSP/Common.hs b/Text/Reform/HSP/Common.hs
--- a/Text/Reform/HSP/Common.hs
+++ b/Text/Reform/HSP/Common.hs
@@ -1,15 +1,15 @@
-{-# LANGUAGE FlexibleContexts, FlexibleInstances, MultiParamTypeClasses, ScopedTypeVariables, TypeFamilies, UndecidableInstances, ViewPatterns, OverloadedStrings #-}
-{-# OPTIONS_GHC -F -pgmFhsx2hs #-}
+{-# LANGUAGE FlexibleContexts, FlexibleInstances, MultiParamTypeClasses, ScopedTypeVariables, TypeFamilies, UndecidableInstances, ViewPatterns, OverloadedStrings, QuasiQuotes #-}
 module Text.Reform.HSP.Common where
 
-import Data.List      (intercalate)
-import Data.Monoid    ((<>), mconcat)
-import Data.Text.Lazy (Text, pack)
-import qualified Data.Text as T
+import Data.List                (intercalate)
+import Data.Monoid              ((<>), mconcat)
+import Data.Text.Lazy           (Text, pack)
+import qualified Data.Text      as T
 import Text.Reform.Backend
 import Text.Reform.Core
-import Text.Reform.Generalized as G
-import Text.Reform.Result (FormId, Result(Ok), unitRange)
+import Text.Reform.Generalized  as G
+import Text.Reform.Result      (FormId, Result(Ok), unitRange)
+import Language.Haskell.HSX.QQ (hsx)
 import HSP.XMLGenerator
 import HSP.XML
 
@@ -22,7 +22,7 @@
           -> Form m input error [XMLGenT x (XMLType x)] () text
 inputText getInput initialValue = G.input getInput inputField initialValue
     where
-      inputField i a = [<input type="text" id=i name=i value=a />]
+      inputField i a = [hsx| [<input type="text" id=i name=i value=a />] |]
 
 inputPassword :: (Monad m, FormError error, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text text)) =>
              (input -> Either error text)
@@ -30,7 +30,7 @@
           -> Form m input error [XMLGenT x (XMLType x)] () text
 inputPassword getInput initialValue = G.input getInput inputField initialValue
     where
-      inputField i a = [<input type="password" id=i name=i value=a />]
+      inputField i a = [hsx| [<input type="password" id=i name=i value=a />] |]
 
 inputSubmit :: (Monad m, FormError error, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text text)) =>
              (input -> Either error text)
@@ -38,14 +38,14 @@
           -> Form m input error [XMLGenT x (XMLType x)] () (Maybe text)
 inputSubmit getInput initialValue = G.inputMaybe getInput inputField initialValue
     where
-      inputField i a = [<input type="submit" id=i name=i value=a />]
+      inputField i a = [hsx| [<input type="submit" id=i name=i value=a />] |]
 
 inputReset :: (Monad m, FormError error, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text text)) =>
               text
            -> Form m input error [XMLGenT x (XMLType x)] () ()
 inputReset lbl = G.inputNoData inputField lbl
     where
-      inputField i a = [<input type="reset" id=i name=i value=a />]
+      inputField i a = [hsx| [<input type="reset" id=i name=i value=a />] |]
 
 inputHidden :: (Monad m, FormError error, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text text)) =>
              (input -> Either error text)
@@ -53,14 +53,14 @@
           -> Form m input error [XMLGenT x (XMLType x)] () text
 inputHidden getInput initialValue = G.input getInput inputField initialValue
     where
-      inputField i a = [<input type="hidden" id=i name=i value=a />]
+      inputField i a = [hsx| [<input type="hidden" id=i name=i value=a />] |]
 
 inputButton :: (Monad m, FormError error, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text text)) =>
              text
           -> Form m input error [XMLGenT x (XMLType x)] () ()
 inputButton label = G.inputNoData inputField label
     where
-      inputField i a = [<input type="button" id=i name=i value=a />]
+      inputField i a = [hsx| [<input type="button" id=i name=i value=a />] |]
 
 textarea :: (Monad m, FormError error, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsChild x text) =>
             (input -> Either error text)
@@ -70,7 +70,7 @@
          -> Form m input error [XMLGenT x (XMLType x)] () text
 textarea getInput cols rows initialValue = G.input getInput textareaView initialValue
     where
-      textareaView i txt = [<textarea rows=rows cols=cols id=i name=i><% txt %></textarea>]
+      textareaView i txt = [hsx| [<textarea rows=rows cols=cols id=i name=i><% txt %></textarea>] |]
 
 -- | Create an @\<input type=\"file\"\>@ element
 --
@@ -79,7 +79,7 @@
              Form m input error [XMLGenT x (XMLType x)] () (FileType input)
 inputFile = G.inputFile fileView
     where
-      fileView i = [<input type="file" name=i id=i />]
+      fileView i = [hsx| [<input type="file" name=i id=i />] |]
 
 -- | Create a @\<button type=\"submit\"\>@ element
 buttonSubmit :: ( Monad m, FormError error, XMLGenerator x, StringType x ~ Text, EmbedAsChild x children , EmbedAsAttr x (Attr Text FormId), EmbedAsAttr x (Attr Text text)) =>
@@ -89,7 +89,7 @@
              -> Form m input error [XMLGenT x (XMLType x)] () (Maybe text)
 buttonSubmit getInput text c = G.inputMaybe getInput inputField text
     where
-      inputField i a = [<button type="submit" id=i name=i value=a><% c %></button>]
+      inputField i a = [hsx| [<button type="submit" id=i name=i value=a><% c %></button>] |]
 
 buttonReset :: ( Monad m, FormError error, XMLGenerator x, StringType x ~ Text, EmbedAsChild x children , EmbedAsAttr x (Attr Text FormId)
                 ) =>
@@ -97,7 +97,7 @@
              -> Form m input error [XMLGenT x (XMLType x)] () ()
 buttonReset c = G.inputNoData inputField Nothing
     where
-      inputField i a = [<button type="reset" id=i name=i><% c %></button>]
+      inputField i a = [hsx| [<button type="reset" id=i name=i><% c %></button>] |]
 
 button :: ( Monad m, FormError error, XMLGenerator x, StringType x ~ Text, EmbedAsChild x children , EmbedAsAttr x (Attr Text FormId)
                 ) =>
@@ -105,14 +105,14 @@
              -> Form m input error [XMLGenT x (XMLType x)] () ()
 button c = G.inputNoData inputField Nothing
     where
-      inputField i a = [<button type="button" id=i name=i><% c %></button>]
+      inputField i a = [hsx| [<button type="button" id=i name=i><% c %></button>] |]
 
 label :: (Monad m, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId), EmbedAsChild x c) =>
          c
       -> Form m input error [XMLGenT x (XMLType x)] () ()
 label c = G.label mkLabel
     where
-      mkLabel i = [<label for=i><% c %></label>]
+      mkLabel i = [hsx| [<label for=i><% c %></label>] |]
 
 -- FIXME: should this use inputMaybe?
 inputCheckbox :: forall x error input m. (Monad m, FormInput input, FormError error, ErrorInputType error ~ input, XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text FormId)) =>
@@ -131,7 +131,7 @@
                  (Left  (e :: error) ) -> mkCheckbox i False
     where
       mkCheckbox i checked =
-          return ( View $ const $ [<input type="checkbox" id=i name=i value=i (if checked then [("checked" := "checked") :: Attr Text Text] else []) />]
+          return ( View $ const $ [hsx| [<input type="checkbox" id=i name=i value=i (if checked then [("checked" := "checked") :: Attr Text Text] else []) />] |]
                  , return $ Ok (Proved { proofs   = ()
                                        , pos      = unitRange i
                                        , unProved = if checked then True else False
@@ -146,10 +146,10 @@
     G.inputMulti choices mkCheckboxes isChecked
     where
       mkCheckboxes nm choices' = concatMap (mkCheckbox nm) choices'
-      mkCheckbox nm (i, val, lbl, checked) =
+      mkCheckbox nm (i, val, lbl, checked) = [hsx|
              [ <input type="checkbox" id=i name=nm value=(pack $ show val) (if checked then [("checked" := "checked") :: Attr Text Text] else []) />
              , <label for=i><% lbl %></label>
-             ]
+             ] |]
 
 inputRadio :: (Functor m, Monad m, FormError error, ErrorInputType error ~ input, FormInput input, XMLGenerator x, StringType x ~ Text, EmbedAsChild x lbl, EmbedAsAttr x (Attr Text FormId)) =>
               [(a, lbl)]  -- ^ value, label, initially checked
@@ -159,11 +159,11 @@
     G.inputChoice isDefault choices mkRadios
     where
       mkRadios nm choices' = concatMap (mkRadio nm) choices'
-      mkRadio nm (i, val, lbl, checked) =
+      mkRadio nm (i, val, lbl, checked) = [hsx|
              [ <input type="radio" id=i name=nm value=(pack $ show val) (if checked then [("checked" := "checked") :: Attr Text Text] else []) />
              , <label for=i><% lbl %></label>
              , <br />
-             ]
+             ] |]
 
 inputRadioForms :: forall m x error input lbl proof a. (Functor m, Monad m, FormError error, ErrorInputType error ~ input, FormInput input, XMLGenerator x, StringType x ~ Text, EmbedAsChild x lbl, EmbedAsAttr x (Attr Text FormId)) =>
                    [(Form m input error [XMLGenT x (XMLType x)] proof a, lbl)]  -- ^ value, label, initially checked
@@ -206,13 +206,13 @@
           let iviews = iviewsExtract choices' in
           (concatMap (mkRadio nm iviews) choices')
 
-      mkRadio nm iviews (i, val, iview, view, lbl, checked) =
+      mkRadio nm iviews (i, val, iview, view, lbl, checked) = [hsx|
              [ <div>
                 <input type="radio" onclick=(onclick nm iview iviews) id=i name=nm value=(pack $ show val) (if checked then [("checked" := "checked") :: Attr Text Text] else []) />
                <label for=i><% lbl %></label>
                <div id=iview (if checked then [] else [("style" := "display:none;") :: Attr Text Text])><% view %></div>
               </div>
-             ]
+             ] |]
 
 select :: (Functor m, Monad m, FormError error, ErrorInputType error ~ input, FormInput input, XMLGenerator x, StringType x ~ Text, EmbedAsChild x lbl, EmbedAsAttr x (Attr Text FormId)) =>
               [(a, lbl)]  -- ^ value, label
@@ -221,16 +221,16 @@
 select choices isDefault  =
     G.inputChoice isDefault choices mkSelect
     where
-      mkSelect nm choices' =
+      mkSelect nm choices' = [hsx|
           [<select name=nm>
             <% mapM mkOption choices' %>
            </select>
-          ]
+          ] |]
 
-      mkOption (_, val, lbl, selected) =
+      mkOption (_, val, lbl, selected) = [hsx|
           <option value=val (if selected then [("selected" := "selected") :: Attr Text Text] else []) >
            <% lbl %>
-          </option>
+          </option> |]
 
 selectMultiple :: (Functor m, Monad m, FormError error, ErrorInputType error ~ input, FormInput input, XMLGenerator x, StringType x ~ Text, EmbedAsChild x lbl, EmbedAsAttr x (Attr Text FormId)) =>
                   [(a, lbl)]  -- ^ value, label, initially checked
@@ -239,15 +239,15 @@
 selectMultiple choices isSelected =
     G.inputMulti choices mkSelect isSelected
     where
-      mkSelect nm choices' =
+      mkSelect nm choices' = [hsx|
           [<select name=nm multiple="multiple">
             <% mapM mkOption choices' %>
            </select>
-          ]
-      mkOption (_, val, lbl, selected) =
+          ]  |]
+      mkOption (_, val, lbl, selected) = [hsx|
           <option value=val (if selected then [("selected" := "selected") :: Attr Text Text] else [])>
            <% lbl %>
-          </option>
+          </option> |]
 {-
 inputMultiSelectOptGroup :: (Functor m, XMLGenerator x, StringType x ~ Text, EmbedAsChild x groupLbl, EmbedAsChild x lbl, EmbedAsAttr x (Attr Text FormId), FormError error, ErrorInputType error ~ input, FormInput input, Monad m) =>
                    [(groupLbl, [(a, lbl, Bool)])]  -- ^ value, label, initially checked
@@ -275,40 +275,40 @@
 errorList = G.errors mkErrors
     where
       mkErrors []   = []
-      mkErrors errs = [<ul class="reform-error-list"><% mapM mkError errs %></ul>]
-      mkError e     = <li><% e %></li>
+      mkErrors errs = [hsx| [<ul class="reform-error-list"><% mapM mkError errs %></ul>] |]
+      mkError e     = [hsx| <li><% e %></li> |]
 
 childErrorList :: (Monad m, XMLGenerator x, StringType x ~ Text, EmbedAsChild x error) =>
              Form m input error [XMLGenT x (XMLType x)] () ()
 childErrorList = G.childErrors mkErrors
     where
       mkErrors []   = []
-      mkErrors errs = [<ul class="reform-error-list"><% mapM mkError errs %></ul>]
-      mkError e     = <li><% e %></li>
+      mkErrors errs = [hsx| [<ul class="reform-error-list"><% mapM mkError errs %></ul>] |]
+      mkError e     = [hsx| <li><% e %></li> |]
 
 
 br :: (Monad m, XMLGenerator x, StringType x ~ Text) => Form m input error [XMLGenT x (XMLType x)] () ()
-br = view [<br />]
+br = view [hsx| [<br />] |]
 
 fieldset :: (Monad m, Functor m, XMLGenerator x, StringType x ~ Text, EmbedAsChild x c) =>
             Form m input error c proof a
          -> Form m input error [XMLGenT x (XMLType x)] proof a
-fieldset frm = mapView (\xml -> [<fieldset class="reform"><% xml %></fieldset>]) frm
+fieldset frm = mapView (\xml -> [hsx| [<fieldset class="reform"><% xml %></fieldset>] |]) frm
 
 ol :: (Monad m, Functor m, XMLGenerator x, StringType x ~ Text, EmbedAsChild x c) =>
       Form m input error c proof a
    -> Form m input error [XMLGenT x (XMLType x)] proof a
-ol frm = mapView (\xml -> [<ol class="reform"><% xml %></ol>]) frm
+ol frm = mapView (\xml -> [hsx| [<ol class="reform"><% xml %></ol>] |]) frm
 
 ul :: (Monad m, Functor m, XMLGenerator x, StringType x ~ Text, EmbedAsChild x c) =>
       Form m input error c proof a
    -> Form m input error [XMLGenT x (XMLType x)] proof a
-ul frm = mapView (\xml -> [<ul class="reform"><% xml %></ul>]) frm
+ul frm = mapView (\xml -> [hsx| [<ul class="reform"><% xml %></ul>] |]) frm
 
 li :: (Monad m, Functor m, XMLGenerator x, StringType x ~ Text, EmbedAsChild x c) =>
       Form m input error c proof a
    -> Form m input error [XMLGenT x (XMLType x)] proof a
-li frm = mapView (\xml -> [<li class="reform"><% xml %></li>]) frm
+li frm = mapView (\xml -> [hsx| [<li class="reform"><% xml %></li>] |]) frm
 
 -- | create @\<form action=action method=\"POST\" enctype=\"multipart/form-data\"\>@
 form :: (XMLGenerator x, StringType x ~ Text, EmbedAsAttr x (Attr Text action)) =>
@@ -317,14 +317,15 @@
      -> [XMLGenT x (XMLType x)] -- ^ children
      -> [XMLGenT x (XMLType x)]
 form action hidden children
-    = [ <form action=action method="POST" enctype="multipart/form-data">
+    = [hsx|
+      [ <form action=action method="POST" enctype="multipart/form-data">
          <% mapM mkHidden hidden %>
          <% children %>
         </form>
-      ]
+      ] |]
     where
       mkHidden (name, value) =
-          <input type="hidden" name=name value=value />
+          [hsx| <input type="hidden" name=name value=value /> |]
 
 setAttrs :: (EmbedAsAttr x attr, XMLGenerator x, StringType x ~ Text, Monad m, Functor m) =>
             Form m input error [GenXML x] proof a
diff --git a/reform-hsp.cabal b/reform-hsp.cabal
--- a/reform-hsp.cabal
+++ b/reform-hsp.cabal
@@ -1,5 +1,5 @@
 Name:                reform-hsp
-Version:             0.2.5
+Version:             0.2.6
 Synopsis:            Add support for using HSP with Reform
 Description:         Reform is a library for building and validating forms using applicative functors. This package add support for using reform with HSP.
 Homepage:            http://www.happstack.com/
@@ -13,9 +13,9 @@
 Cabal-version:       >=1.6
 
 source-repository head
-    type:     darcs
+    type:     git
     subdir:   reform-hsp
-    location: http://hub.darcs.net/stepcut/reform
+    location: https://github.com/Happstack/reform.git
 
 Library
   Exposed-modules:     Text.Reform.HSP.Common
@@ -23,5 +23,6 @@
                        Text.Reform.HSP.Text
   Build-depends:       base   > 4    && <5,
                        hsp    >= 0.9 && < 0.11,
+                       hsx2hs >= 0.13 && < 0.14,
                        reform >= 0.2.1 && < 0.3,
                        text   >= 0.11 && < 1.3
