diff --git a/test/printParse.hs b/test/printParse.hs
--- a/test/printParse.hs
+++ b/test/printParse.hs
@@ -5,6 +5,7 @@
   (Gen, Arbitrary (..), choose, oneof, frequency, elements)
 import Test.QuickCheck.Simple (defaultMain, Test, qcTest)
 
+import Control.Arrow (first)
 import Control.Applicative ((<$>), (<*>))
 import Data.ByteString.Char8 (ByteString, pack)
 import Text.LDAP.Data
@@ -83,17 +84,19 @@
 instance Arbitrary Component where
   arbitrary = component
 
-instance Arbitrary DN where
-  arbitrary = choose (1, 30) >>= list1 arbitrary
+newtype WDN = WDN { unWDN :: DN } deriving (Eq, Show)
 
+instance Arbitrary WDN where
+  arbitrary = (WDN <$>) . list1 arbitrary =<< choose (1, 30)
+
 prop_attributeIso :: Attribute -> Bool
 prop_attributeIso =  isoProp Printer.attribute Parser.attribute
 
 prop_componentIso :: Component -> Bool
 prop_componentIso =  isoProp Printer.component Parser.component
 
-prop_dnIso :: DN -> Bool
-prop_dnIso =  isoProp Printer.dn Parser.dn
+prop_dnIso :: WDN -> Bool
+prop_dnIso =  isoProp (Printer.dn . unWDN) (WDN <$> Parser.dn)
 
 prop_ldifAttrIso :: (AttrType, AttrValue) -> Bool
 prop_ldifAttrIso =
@@ -101,11 +104,11 @@
   (Printer.ldifAttr Printer.ldifEncodeAttrValue)
   (Parser.ldifAttr  Parser.ldifDecodeAttrValue)
 
-prop_openLdapEntryIso :: (DN, [(AttrType, AttrValue)]) -> Bool
+prop_openLdapEntryIso :: (WDN, [(AttrType, AttrValue)]) -> Bool
 prop_openLdapEntryIso =
   isoProp
-  (Printer.openLdapEntry Printer.ldifEncodeAttrValue)
-  (Parser.openLdapEntry  Parser.ldifDecodeAttrValue)
+  (Printer.openLdapEntry Printer.ldifEncodeAttrValue . first unWDN)
+  (first WDN <$> Parser.openLdapEntry  Parser.ldifDecodeAttrValue)
 
 tests :: [Test]
 tests =
diff --git a/text-ldap.cabal b/text-ldap.cabal
--- a/text-ldap.cabal
+++ b/text-ldap.cabal
@@ -1,5 +1,5 @@
 name:                text-ldap
-version:             0.1.1.8
+version:             0.1.1.9
 synopsis:            Parser and Printer for LDAP text data stream
 description:         This package contains Parser and Printer for
                      LDAP text data stream like OpenLDAP backup LDIF.
@@ -11,7 +11,8 @@
 category:            Text
 build-type:          Simple
 cabal-version:       >=1.8
-tested-with:           GHC == 8.0.1
+tested-with:           GHC == 8.2.1, GHC == 8.2.2
+                     , GHC == 8.0.1, GHC == 8.0.2
                      , GHC == 7.10.1, GHC == 7.10.2, GHC == 7.10.3
                      , GHC == 7.8.1, GHC == 7.8.2, GHC == 7.8.3, GHC == 7.8.4
                      , GHC == 7.6.1, GHC == 7.6.2, GHC == 7.6.3
@@ -31,8 +32,10 @@
                        , transformers
                        , attoparsec
                        , dlist
-                       , semigroups
                        , base64-bytestring
+  if impl(ghc < 8)
+    build-depends:       semigroups
+
   hs-source-dirs:        src
   ghc-options:         -Wall
   -- ghc-prof-options:    -prof -fprof-auto
@@ -59,10 +62,11 @@
   build-depends:         base <5
                        , bytestring
                        , random
-                       , semigroups
                        , text-ldap
                        , QuickCheck >=2
                        , quickcheck-simple
+  if impl(ghc < 8)
+    build-depends:       semigroups
 
   type:                exitcode-stdio-1.0
   main-is:             printParse.hs
