diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,10 @@
 # Changelog for plzwrk
 
+## 0.0.0.5
+
+- Adds bounds for cabal packages
+- Explicity declares `Control.Monad.Fail` in `HSX.hs` to allow automated haddock builds.
+
 ## 0.0.0.4
 
 - Adds `hsx` and `hsx'` for `jsx`-like manipulation.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -38,7 +38,7 @@
 
 ```bash
 username@hostname:~/my-dir$ docker run --rm -it -v $(pwd):/project -w /project terrorjack/asterius
-asterius@hostname:/project$ ahc-cabal update
+asterius@hostname:/project$ ahc-cabal v2-update
 asterius@hostname:/project$ ahc-cabal new-install --constraint "plzwrk +plzwrk-enable-asterius" --installdir <inst-dir> <exec-name>
 asterius@hostname:/project$ cd <inst-dir> && ahc-dist --input-exe <exec-name> --browser --bundle
 ```
diff --git a/plzwrk.cabal b/plzwrk.cabal
--- a/plzwrk.cabal
+++ b/plzwrk.cabal
@@ -7,7 +7,7 @@
 -- hash: 8099ceb0d406f862d89306de053aba4c75999a9e0d74ac6a502458d503e7dcc1
 
 name:           plzwrk
-version:        0.0.0.4
+version:        0.0.0.5
 category:       Web
 synopsis:       A front-end framework
 description:    Please see the README on GitHub at <https://github.com/meeshkan/plzwrk#readme>
@@ -53,13 +53,13 @@
     , aeson >= 1.4.7 && < 1.5
     , bytestring >= 0.10.10 && < 0.11
     , containers >= 0.6.2 && < 0.7
-    , hashable
-    , haskell-src-meta
+    , hashable >= 1.3.0 && < 1.4
+    , haskell-src-meta >= 0.8.5 && < 0.9
     , mtl >= 2.2.2 && < 2.3
-    , parsec
+    , parsec >= 3.1.14 && < 3.2
     , random >= 1.1 && < 1.2
-    , split
-    , template-haskell
+    , split >= 0.2.3 && < 0.3
+    , template-haskell >= 2.14.0 && < 2.16
     , text >= 1.2.3 && < 1.3
     , transformers >= 0.5.6 && < 0.6
     , unordered-containers >= 0.2.10 && < 0.3
diff --git a/src/Web/Framework/Plzwrk/TH/HSX.hs b/src/Web/Framework/Plzwrk/TH/HSX.hs
--- a/src/Web/Framework/Plzwrk/TH/HSX.hs
+++ b/src/Web/Framework/Plzwrk/TH/HSX.hs
@@ -11,6 +11,7 @@
                                                 , (<$)
                                                 )
 import           Control.Monad                  ( void )
+import           Control.Monad.Fail
 import           Data.Char
 import           Data.List                      ( foldl' )
 import           Text.Parsec
@@ -64,27 +65,27 @@
   ws
   return $ HSXHaskellTxtAttribute value
 
+makeBracketed cmd contain = do
+  let start = ("#" <> cmd <> "{")
+  let end = "}#"
+  string start
+  value <- manyTill anyChar (string end)
+  ws
+  return $ if (contain) then start <> value <> end else value
 
 haskellCodeAttr = do
-  string "#c{"
-  value <- manyTill anyChar (string "}#")
-  ws
+  value <- makeBracketed "c" False
   return $ HSXHaskellCodeAttribute value
 
 haskellCodeNode :: Parser HSX
 haskellCodeNode = do
-  string "#e{"
-  value <- manyTill anyChar (string "}#")
-  ws
+  value <- makeBracketed "e" False
   return $ HSXHaskellCode value
 
 haskellTxtNode :: Parser HSX
 haskellTxtNode = do
-  string "#t{"
-  value <- manyTill anyChar (string "}#")
-  ws
+  value <- makeBracketed "t" False
   return $ HSXHaskellText value
-
 
 attribute = do
   name <- many (noneOf "= />")  
