diff --git a/specs/Data/Text/ICU/ReplaceSpec.hs b/specs/Data/Text/ICU/ReplaceSpec.hs
new file mode 100644
--- /dev/null
+++ b/specs/Data/Text/ICU/ReplaceSpec.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+
+module Data.Text.ICU.ReplaceSpec where
+
+
+import qualified Data.Text              as T
+import           Data.Text.ICU
+import qualified Data.Text.ICU          as ICU
+import           Data.Text.ICU.Replace
+import           Data.Text.Lazy.Builder
+
+import           Test.Hspec
+
+
+spec :: Spec
+spec = do
+    describe "replace" $ do
+        it "should replace the first match." $
+            replace "a" "b" " aaa" `shouldBe` " baa"
+        it "should include the prefix before the first match." $
+            replace "\\d{2}" "R1" "abc: 10 12" `shouldBe` "abc: R1 12"
+    describe "replaceAll" $ do
+        it "should replace all matches." $
+            replaceAll "a" "b" " aaa" `shouldBe` " bbb"
+        it "should replace all matches with stuff in between." $
+            replaceAll "a" "b" " a a a " `shouldBe` " b b b "
+        it "should include the prefix before the first match." $
+            replaceAll "\\d{2}" "R1" "abc: 10 12" `shouldBe` "abc: R1 R1"
+        it "should include the prefix before the last match." $
+            replaceAll "\\d{2}" "R1" "abc: 10 12 14" `shouldBe` "abc: R1 R1 R1"
+
+    describe "rgroup" $
+        it "should create a Replace that replaces an RE group." $
+            let r = rgroup 1
+            in  replace "a(b)c" r "abcabcabc" `shouldBe` "babcabc"
+    describe "rtext" $
+        it "should create a Replace that replaces with a static Text." $
+            let r = rtext "d"
+            in  replace "a(b)c" r "abcabcabc" `shouldBe` "dabcabc"
+    describe "rstring" $
+        it "should create a Replace that replaces with a static String." $
+            let r = rstring "e"
+            in  replace "a(b)c" r "abcabcabc" `shouldBe` "eabcabc"
+    describe "rfn" $
+        it "should create a Replace that uses a function that returns a Builder." $
+            let r = rfn $ const "f"
+            in  replace "a(b)c" r "abcabcabc" `shouldBe` "fabcabc"
+    describe "rtfn" $
+        it "should create a Replace that uses a function that returns a Text." $
+            let r = rtfn $ const "g"
+            in  replace "a(b)c" r "abcabcabc" `shouldBe` "gabcabc"
+    describe "rbuilder" $
+        it "should create a Replace that replaces with a static Builder." $
+            let r = rbuilder "h"
+            in  replace "a(b)c" r "abcabcabc" `shouldBe` "habcabc"
+
+    describe "parser" $ do
+        it "should create a Replace that has replaces with a static Text." $
+            replace "a(b)c" "xyz" "abcabcabc" `shouldBe` "xyzabcabc"
+        it "should create a Replace that replaces with an RE group." $
+            replace "a(b)c" "$1" "abcabcabc" `shouldBe` "babcabc"
+        it "should create a Replace that replaces with a dollar sign." $
+            replace "a(b)c" "$$" "abcabcabc" `shouldBe` "$abcabc"
+        it "should create a Replace that combines other Replaces." $
+            replace "a(b)c" "$$ hi $1 bye " "abcabcabc" `shouldBe`
+                "$ hi b bye abcabc"
+
+        it "should handle examples in the comments." $ do
+            replaceAll "a" "b" "aaa" `shouldBe` "bbb"
+            replaceAll "ab" "ba" "cdababcd" `shouldBe` "cdbabacd"
+            replaceAll "(.*), (.*)" "$2 $1" "Beeblebrox, Zaphod" `shouldBe`
+                "Zaphod Beeblebrox"
+            replaceAll "4(\\d)" "${1}4" "7458" `shouldBe` "7548"
+            replaceAll "(\\d+\\.\\d+)" "$$$1" "9.99" `shouldBe` "$9.99"
diff --git a/text-regex-replace.cabal b/text-regex-replace.cabal
--- a/text-regex-replace.cabal
+++ b/text-regex-replace.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                text-regex-replace
-version:             0.1.1.0
+version:             0.1.1.1
 synopsis:            Easy replacement when using text-icu regexes.
 description:
   This provides a convenient API for doing replacements off of a regular
@@ -25,7 +25,7 @@
   -- other-modules:       
   -- other-extensions:    
   build-depends:       base       >= 4.7  && <5
-                     , attoparsec >= 0.12 && <0.13
+                     , attoparsec >= 0.12 && <0.14
                      , text       >= 1.2  && <1.3
                      , text-icu   >= 0.7  && <0.8
   hs-source-dirs:      src
@@ -36,6 +36,7 @@
   ghc-options:         -threaded -rtsopts
   hs-source-dirs:      specs
   main-is:             Specs.hs
+  other-modules:       Data.Text.ICU.ReplaceSpec
   build-depends:         base
                        , text-regex-replace
                        , QuickCheck
