diff --git a/src/Data/Text/Normal/NFC.hs b/src/Data/Text/Normal/NFC.hs
--- a/src/Data/Text/Normal/NFC.hs
+++ b/src/Data/Text/Normal/NFC.hs
@@ -34,7 +34,7 @@
     readsPrec i = map (first fromText) . readsPrec i
 
 instance Monoid Normal where
-    mappend (Normal t1) (Normal t2) = Normal $ t1 <> t2
+    mappend (Normal t1) (Normal t2) = fromText $ t1 <> t2
     mempty = Normal mempty
 
 instance IsString Normal where
diff --git a/src/Data/Text/Normal/NFKC.hs b/src/Data/Text/Normal/NFKC.hs
--- a/src/Data/Text/Normal/NFKC.hs
+++ b/src/Data/Text/Normal/NFKC.hs
@@ -35,7 +35,7 @@
     readsPrec i = map (first fromText) . readsPrec i
 
 instance Monoid Normal where
-    mappend (Normal t1) (Normal t2) = Normal $ t1 <> t2
+    mappend (Normal t1) (Normal t2) = fromText $ t1 <> t2
     mempty = Normal mempty
 
 instance IsString Normal where
diff --git a/tests/main.hs b/tests/main.hs
new file mode 100644
--- /dev/null
+++ b/tests/main.hs
@@ -0,0 +1,12 @@
+import qualified NFC
+import qualified NFD
+import qualified NFKC
+import qualified NFKD
+import Test.Hspec
+
+main :: IO ()
+main = hspec $ do
+    NFC.specs
+    NFD.specs
+    NFKC.specs
+    NFKD.specs
diff --git a/text-normal.cabal b/text-normal.cabal
--- a/text-normal.cabal
+++ b/text-normal.cabal
@@ -1,5 +1,5 @@
 name:                text-normal
-version:             0.2.0.0
+version:             0.2.1.0
 synopsis:            Unicode-normalized text
 description:
   This package provides types and functions for normalizing and comparing
@@ -34,4 +34,11 @@
                        Data.Text.Normal.NFKD
   build-depends:       base >=4.6 && <5, deepseq, text, text-icu
   hs-source-dirs:      src
+  default-language:    Haskell2010
+
+test-suite main
+  build-depends:       base, hspec, QuickCheck, quickcheck-instances, text-normal
+  hs-source-dirs:      tests
+  main-is:             main.hs
+  type:                exitcode-stdio-1.0
   default-language:    Haskell2010
