diff --git a/src/Text/LDAP/Data.hs b/src/Text/LDAP/Data.hs
--- a/src/Text/LDAP/Data.hs
+++ b/src/Text/LDAP/Data.hs
@@ -8,7 +8,9 @@
 -- Portability : unknown
 --
 module Text.LDAP.Data
-       ( Attribute
+       (
+         -- * DN AST
+         Attribute
        , AttrType (..), attrOid
        , AttrValue (..)
 
@@ -17,12 +19,18 @@
        , DN, consDN, unconsDN
 
        , List1
-       , Bound, exact, boundsElems, inBounds, elem', notElem', inSBounds
 
+       , LdifAttrValue (..)
+
+       , -- * Weaken constraint but popular list type
+         DN', toDN', Component'
+
+       , -- * Low-level Charset check interfaces
+         Bound, exact, boundsElems, inBounds, elem', notElem', inSBounds
+
        , ordW8
        , quotation, specialChars
 
-       , LdifAttrValue (..)
        , ldifSafeBounds
        , ldifSafeInitBounds
        ) where
@@ -34,7 +42,7 @@
 import Data.Word (Word8)
 import Data.ByteString (ByteString)
 import Data.Set (fromList, member)
-import Data.List.NonEmpty (NonEmpty ((:|)), reverse)
+import Data.List.NonEmpty (NonEmpty ((:|)), reverse, toList)
 
 
 -- | Not empty list type
@@ -122,6 +130,18 @@
 unconsDN :: DN -> (Component, [Component])
 unconsDN dn = (h, tl)  where (h :| tl) = reverse dn
 
+-- | Type of dn component (rdn), simple list type
+type Component' = [Attribute]
+
+-- | Type of dn, simple list type
+type DN' = [Component']
+
+-- | From 'DN' to 'DN''
+toDN' :: DN -> DN'
+toDN' =  map comp' . toList  where
+  comp' (S a)  = [a]
+  comp' (L as) = toList as
+
 -- | Word8 value of Char
 ordW8 :: Char -> Word8
 ordW8 =  fromIntegral . ord
@@ -143,7 +163,7 @@
   deriving (Eq, Ord, Show)
 
 -- | Char bounds LDIF safe string
-ldifSafeBounds :: [(Char, Char)]
+ldifSafeBounds :: [Bound Char]
 ldifSafeBounds =
   [ ('\x01', '\x09')
   , ('\x0B', '\x0C')
@@ -151,7 +171,7 @@
   ]
 
 -- | Char bounds LDIF safe string first char
-ldifSafeInitBounds :: [(Char, Char)]
+ldifSafeInitBounds :: [Bound Char]
 ldifSafeInitBounds =
   [ ('\x01', '\x09')
   , ('\x0B', '\x0C')
diff --git a/src/Text/LDAP/InternalParser.hs b/src/Text/LDAP/InternalParser.hs
--- a/src/Text/LDAP/InternalParser.hs
+++ b/src/Text/LDAP/InternalParser.hs
@@ -23,8 +23,8 @@
 import Text.LDAP.Data (ordW8, inBounds)
 import qualified Text.LDAP.Data as Data
 
-type LdapParser = Parser
 
+type LdapParser = Parser
 
 satisfyW8 :: (Char -> Bool) -> LdapParser Word8
 satisfyW8 =  (ordW8 <$>) . satisfy
diff --git a/text-ldap.cabal b/text-ldap.cabal
--- a/text-ldap.cabal
+++ b/text-ldap.cabal
@@ -1,6 +1,6 @@
 
 name:                text-ldap
-version:             0.1.0.0
+version:             0.1.1.0
 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.
