diff --git a/examples/colorizeProgs/ColorizeSourceCode.hs b/examples/colorizeProgs/ColorizeSourceCode.hs
--- a/examples/colorizeProgs/ColorizeSourceCode.hs
+++ b/examples/colorizeProgs/ColorizeSourceCode.hs
@@ -37,27 +37,27 @@
 
 -- ------------------------------------------------------------
 
-data Process    	= P { inFilter    :: String -> String
-			    , tokenRE	  :: Regex
-			    , markupRE	  :: Regex -> Regex
-                	    , formatToken :: (String, String) -> String
-                	    , formatDoc   :: [String] -> String
-			    , outFilter   :: String -> String
-                	    , input       :: Handle
-                	    , output      :: Handle
-			    , inputFile	  :: String
-                	    }
+data Process            = P { inFilter    :: String -> String
+                            , tokenRE     :: Regex
+                            , markupRE    :: Regex -> Regex
+                            , formatToken :: (String, String) -> String
+                            , formatDoc   :: [String] -> String
+                            , outFilter   :: String -> String
+                            , input       :: Handle
+                            , output      :: Handle
+                            , inputFile   :: String
+                            }
 
-defaultProcess  	= P { inFilter    = id
-			    , tokenRE	  = plainRE
-			    , markupRE    = id
-                	    , formatToken = uncurry (++)
-                	    , formatDoc   = unlines
-			    , outFilter   = id
-                	    , input       = stdin
-                	    , output      = stdout
-			    , inputFile   = " "
-                	    }
+defaultProcess          = P { inFilter    = id
+                            , tokenRE     = plainRE
+                            , markupRE    = id
+                            , formatToken = uncurry (++)
+                            , formatDoc   = unlines
+                            , outFilter   = id
+                            , input       = stdin
+                            , output      = stdout
+                            , inputFile   = " "
+                            }
 
 -- ------------------------------------------------------------
 
@@ -68,7 +68,7 @@
                           s <- hGetContents (input p)
                           hPutStr (output p) (process p s)
                           hFlush (output p)
-			  hClose (output p)
+                          hClose (output p)
                           exitWith ExitSuccess
 
 options                 :: [OptDescr (String, String)]
@@ -85,11 +85,11 @@
                           , Option "n"  ["number"]  (NoArg ("number",  "1"))    "with line numbers"
                           , Option "t"  ["tabs"]    (NoArg ("tabs",    "1"))    "substitute tabs by blanks"
                           , Option "m"  ["markup"]  (NoArg ("markup",  "1"))    "text contains embedded markup"
-			  , Option "e"  ["erefs"]   (NoArg ("erefs",   "1"))	"resolve HTML entity refs before processing"
+                          , Option "e"  ["erefs"]   (NoArg ("erefs",   "1"))    "resolve HTML entity refs before processing"
                           , Option "o"  ["output"]  (ReqArg ((,) "output")      "FILE") "output file, \"-\" stands for stdout"
                           , Option "s"  ["scan"]    (NoArg ("scan",    "1"))    "just scan input, for testing"
                           , Option "x"  ["html"]    (NoArg ("html",    "1"))    "html output"
-			  , Option "f"  ["full"]    (NoArg ("full",    "1"))    "full HTML document with header and css"
+                          , Option "f"  ["full"]    (NoArg ("full",    "1"))    "full HTML document with header and css"
                           ]
 
 exitErr                 :: String -> IO a
@@ -105,9 +105,9 @@
     | otherwise                 = do
                                   inp <- openFile fn ReadMode
                                   evalOpts opts (defaultProcess { input = inp
-								, inputFile = fn
-								}
-						)
+                                                                , inputFile = fn
+                                                                }
+                                                )
     where
     (fn:fns)                    = files
 
@@ -138,15 +138,15 @@
 evalOpt ("pplass", "1") p       = return $ p { tokenRE     = pplassRE  }
 evalOpt ("plain",  "1") p       = return $ p { tokenRE     = plainRE   }
 evalOpt ("scan",   "1") p       = return $ p { tokenRE     = plainRE
-					     , formatToken = uncurry formatTok
+                                             , formatToken = uncurry formatTok
                                              , formatDoc   = formatHList                        }
-evalOpt ("number", "1") p       = return $ p { formatDoc   = numberLines >>> formatDoc p	}
-evalOpt ("tabs",   "1") p       = return $ p { inFilter    = inFilter p >>> substTabs		}
-evalOpt ("erefs",  "1") p	= return $ p { inFilter    = resolveHtmlEntities >>> inFilter p	}
-evalOpt ("markup", "1") p	= return $ p { markupRE    = addMarkup				}
+evalOpt ("number", "1") p       = return $ p { formatDoc   = numberLines >>> formatDoc p        }
+evalOpt ("tabs",   "1") p       = return $ p { inFilter    = inFilter p >>> substTabs           }
+evalOpt ("erefs",  "1") p       = return $ p { inFilter    = resolveHtmlEntities >>> inFilter p }
+evalOpt ("markup", "1") p       = return $ p { markupRE    = addMarkup                          }
 evalOpt ("html",   "1") p       = return $ p { formatToken = formatHtmlTok
-                                             , formatDoc   = formatHtmlDoc			}
-evalOpt ("full",   "1") p       = return $ p { outFilter   = outFilter p >>> fullHtml (inputFile p)	}
+                                             , formatDoc   = formatHtmlDoc                      }
+evalOpt ("full",   "1") p       = return $ p { outFilter   = outFilter p >>> fullHtml (inputFile p)     }
 
 usage                   :: IO ()
 usage                   = hPutStrLn stderr use
@@ -158,18 +158,18 @@
 
 process         :: Process -> String -> String
 process p       = inFilter p
-		  >>> tokenizeSubexRE (markupRE p (tokenRE p))
+                  >>> tokenizeSubexRE (markupRE p (tokenRE p))
                   >>> map (formatToken p)
                   >>> concat
                   >>> lines
                   >>> formatDoc p
-	          >>> outFilter p
+                  >>> outFilter p
 
-addMarkup	:: Regex -> Regex
-addMarkup	= mkElse (parseRegex . mkLE $ markupT)
+addMarkup       :: Regex -> Regex
+addMarkup       = mkElse (parseRegex . mkLE $ markupT)
 
-tokenizeLines	:: String -> [(String, String)] 
-tokenizeLines	= map (\ l -> ("",l ++ "\n")) . lines
+tokenizeLines   :: String -> [(String, String)]
+tokenizeLines   = map (\ l -> ("",l ++ "\n")) . lines
 
 numberLines     :: [String] -> [String]
 numberLines     = zipWith addNum [1..]
@@ -182,22 +182,22 @@
                           . (replicate l ' ' ++)
                           . show
 
-substTabs	:: String -> String
-substTabs	= subs 0
+substTabs       :: String -> String
+substTabs       = subs 0
 
-subs _ ""	= ""
+subs _ ""       = ""
 subs i (x:xs)
-    | x == '\t'	= replicate (8 - (i `mod` 8)) ' ' ++ subs 0 xs
+    | x == '\t' = replicate (8 - (i `mod` 8)) ' ' ++ subs 0 xs
     | x == '\n' = x : subs 0 xs
-    | otherwise	= x : subs (i+1) xs
+    | otherwise = x : subs (i+1) xs
 
 -- ------------------------------------------------------------
 
-resolveHtmlEntities	:: String -> String
-resolveHtmlEntities	= sed (replaceEntity . drop 1 . init) "&\\i\\c*;"
-			  where
-			  replaceEntity	e = maybe ("&" ++ e ++ ";") ((:[]) . toEnum)
-					    . lookup e $ xhtmlEntities
+resolveHtmlEntities     :: String -> String
+resolveHtmlEntities     = sed (replaceEntity . drop 1 . init) "&\\i\\c*;"
+                          where
+                          replaceEntity e = maybe ("&" ++ e ++ ";") ((:[]) . toEnum)
+                                            . lookup e $ xhtmlEntities
 
 -- ------------------------------------------------------------
 
@@ -211,35 +211,35 @@
                   >>> ("<div class=\"codeblock\">" :)
                   >>> (++ ["</div>"])
                   >>> unlines
-		  where
-		  preserveEmptyLines ""	= "&nbsp;"
-		  preserveEmptyLines l  = l
+                  where
+                  preserveEmptyLines "" = "&nbsp;"
+                  preserveEmptyLines l  = l
 
 formatHtmlTok   :: (String, String) -> String
 formatHtmlTok (m, t)
-    | m == "markup"	= t
-    | otherwise		= colorizeTokens m (escapeText >>> sed (const "&nbsp;") " " $ t)
+    | m == "markup"     = t
+    | otherwise         = colorizeTokens m (escapeText >>> sed (const "&nbsp;") " " $ t)
 
 escapeText      :: String -> String
 escapeText      = concat . runLA (xshow (mkText >>> escapeHtmlDoc))
 
 
-fullHtml	:: String -> String -> String
-fullHtml fn s	= unlines
-		  [ "<html>"
-		  , "<head>"
-		  , "<title>" ++ fn ++ "</title>"
-		  , "<style>"
-		  , css
-		  , "</style>"
-		  , "</head>"
-		  , "<body>"
-		  , s
-		  , "</body>"
-		  , "</html>"
-		  ]
+fullHtml        :: String -> String -> String
+fullHtml fn s   = unlines
+                  [ "<html>"
+                  , "<head>"
+                  , "<title>" ++ fn ++ "</title>"
+                  , "<style>"
+                  , css
+                  , "</style>"
+                  , "</head>"
+                  , "<body>"
+                  , s
+                  , "</body>"
+                  , "</html>"
+                  ]
 
-css		:: String
+css             :: String
 css             = unlines
                   [ ".typename          { color: #0000dd; }"
                   , ".varname           { color: #000000; }"
@@ -263,10 +263,10 @@
                   , ".tclproc           { color: #FF6000; }"
                   , ".tclvar            { color: #0000CD; }"
                   , ".tclcomment        { color: #c80000; }"
-		  , ""
-		  , ".linenr            { color: #909090; padding-right: 2em; }"
-		  , "div.codeline       { font-family: monospace; width: 100%; white-space: pre; border-width: 1px; border-style: solid; border-color: transparent; padding-left: 0.3em; }"
-		  , "div.codeline:hover { background-color:#ddddff; color:#c80000; border-width: 1px; border-style: solid; border-color: #c80000; }"
+                  , ""
+                  , ".linenr            { color: #909090; padding-right: 2em; }"
+                  , "div.codeline       { font-family: monospace; width: 100%; white-space: pre; border-width: 1px; border-style: solid; border-color: transparent; padding-left: 0.3em; }"
+                  , "div.codeline:hover { background-color:#ddddff; color:#c80000; border-width: 1px; border-style: solid; border-color: #c80000; }"
 
                   ]
 
@@ -276,24 +276,24 @@
 colorizeTokens tok
     | tok `elem` [ "comment"
                  , "keyword"
-		 , "keyglyph"
+                 , "keyglyph"
                  , "typekeyword"
                  , "varname", "typename", "labelname", "instancename", "globalname"
                  , "opname"
-		 , "par"
+                 , "par"
                  , "operator"
                  , "strconst", "charconst"
-		 , "bnfnt", "bnfmeta"
-		 , "cppcommand"
-		 , "specialword"
+                 , "bnfnt", "bnfmeta"
+                 , "cppcommand"
+                 , "specialword"
                  ]
-                        	= wrap
+                                = wrap
     | tok == "longcomment"      = wrap' "comment" . mlc
-    | tok == "bnfterminal"	= wrap . drop 1 . init
-    -- | tok == "markupstart"	= (("<span class=\"" ) ++) . (++ ("\">")) . drop 4 . init
+    | tok == "bnfterminal"      = wrap . drop 1 . init
+    -- | tok == "markupstart"   = (("<span class=\"" ) ++) . (++ ("\">")) . drop 4 . init
     -- | tok == "markupend"        = const "</span>"
-    | null tok			= const ""
-    | otherwise         	= id
+    | null tok                  = const ""
+    | otherwise                 = id
     where
     wrap       = wrap' tok
     wrap' tok' = (("<span class=\"" ++ tok' ++ "\">") ++) . (++ "</span>")
@@ -303,9 +303,9 @@
 
 buildRegex              :: [(String, String)] -> Regex
 buildRegex              = foldr1 mkElse . map (uncurry mkBr') . map (second parseRegex)
-			  where
-			  mkBr' ""	= id
-			  mkBr' l       = mkBr l
+                          where
+                          mkBr' ""      = id
+                          mkBr' l       = mkBr l
 
 
 buildKeywords           :: [String] -> String
@@ -314,10 +314,10 @@
 untilRE                 :: String -> String
 untilRE re              = "(\\A{" ++ "\\}\\A" ++ re ++ "\\A)" ++ re
 
-mkLE			:: (String, String) -> String
-mkLE (l, re)		= "({" ++ l ++ "}(" ++ re ++ "))"
+mkLE                    :: (String, String) -> String
+mkLE (l, re)            = "({" ++ l ++ "}(" ++ re ++ "))"
 
-ws1RE			= "\\s+"
+ws1RE                   = "\\s+"
 ws1RE'                  = "[ \t]+"
 ws0RE                   = "[ \t]*"
 
@@ -325,38 +325,38 @@
   charconst, number,
   par, xxx              :: (String, String)
 
--- markupS			= ("markupstart",	"<[a-zA-Z0-9]+>"	)
--- markupE			= ("markupend",		"</[a-zA-Z0-9]+>"	)
+-- markupS                      = ("markupstart",       "<[a-zA-Z0-9]+>"        )
+-- markupE                      = ("markupend",         "</[a-zA-Z0-9]+>"       )
 markupT                 = ("markup",            ( "</?" ++ xname ++ "(" ++ xattr ++ ")*" ++ "\\s*>"
-						  ++ "|" ++
-						  "&" ++ xname ++ ";"
-						)
-			  )
-			  where
-			  xname = "[A-Za-z][-_:A-Za-z0-9]*"
-			  xattr = ws1RE ++ xname ++ eq ++ "(" ++ dq ++ "|" ++ sq ++ ")"
-			  eq    = "\\s*=\\s*"
-			  dq    = "\"[^\"]*\""
-			  sq    = "\'[^\']*\'"
+                                                  ++ "|" ++
+                                                  "&" ++ xname ++ ";"
+                                                )
+                          )
+                          where
+                          xname = "[A-Za-z][-_:A-Za-z0-9]*"
+                          xattr = ws1RE ++ xname ++ eq ++ "(" ++ dq ++ "|" ++ sq ++ ")"
+                          eq    = "\\s*=\\s*"
+                          dq    = "\"[^\"]*\""
+                          sq    = "\'[^\']*\'"
 
 ws                      = ("ws",                ws1RE           )
 ws'                     = ("ws",                ws1RE'          )
-javacmt1                = ("comment",           "//.*"	 	)
+javacmt1                = ("comment",           "//.*"          )
 javacmt                 = ("longcomment",       "/\\*" ++ untilRE "\\*/"        )
-shcmt1                  = ("comment",           "#.*"	 	)
-strconst                = ("strconst",		"\"([^\"\\\\\n\r]|\\\\.)*\""    )
-charconst               = ("charconst",		"\'([^\'\\\\\n\r]|\\\\.)*\'"    )
+shcmt1                  = ("comment",           "#.*"           )
+strconst                = ("strconst",          "\"([^\"\\\\\n\r]|\\\\.)*\""    )
+charconst               = ("charconst",         "\'([^\'\\\\\n\r]|\\\\.)*\'"    )
 number                  = ("number",            "[0-9]+(\\.[0-9]*([eE][-+]?[0-9]+)?)?"  )
 par                     = ("par",               "[\\(\\)\\[\\]\\{\\}]"          )
 xxx                     = ("xxx",               "."     )
 
 -- ------------------------------------------------------------
 
-plainRE			:: Regex
-plainRE			= buildRegex
-			  [ ("xxx",             "[^<&\n]+"		)
-			  , ("xxx",             "[<&\n]"		)
-			  ]
+plainRE                 :: Regex
+plainRE                 = buildRegex
+                          [ ("xxx",             "[^<&\n]+"              )
+                          , ("xxx",             "[<&\n]"                )
+                          ]
 
 -- ------------------------------------------------------------
 
@@ -367,26 +367,26 @@
                           , ("longcomment",     "\\{" ++ untilRE "-\\}" )
                           , ("keyword",         buildKeywords
                                                 [ "case", "class"
-						, "data", "default", "deriving", "do"
-						, "else"
-						, "forall"
-						, "if", "import", "in"
-						, "infix", "infixl", "infixr"
-						, "instance"
-						, "let"
-						, "module"
-						, "newtype"
-						, "of"
-						, "qualified"
-						, "then", "type"
-						, "where"
-						, "_"
-						, "as", "ccall", "foreign", "hiding", "proc", "safe", "unsafe"
+                                                , "data", "default", "deriving", "do"
+                                                , "else"
+                                                , "forall"
+                                                , "if", "import", "in"
+                                                , "infix", "infixl", "infixr"
+                                                , "instance"
+                                                , "let"
+                                                , "module"
+                                                , "newtype"
+                                                , "of"
+                                                , "qualified"
+                                                , "then", "type"
+                                                , "where"
+                                                , "_"
+                                                , "as", "ccall", "foreign", "hiding", "proc", "safe", "unsafe"
                                                 ]
-			    )
-			  , ("keyglyph",        buildKeywords
-			                        ["\\.\\.","::","=","\\\\","\\|","<-","->","-<","@","~","=>","!",",",";"]
-			    )
+                            )
+                          , ("keyglyph",        buildKeywords
+                                                ["\\.\\.","::","=","\\\\","\\|","<-","->","-<","@","~","=>","!",",",";"]
+                            )
                           , ("varname"  ,       varname )
                           , ("typename",        "[A-Z_][a-zA-Z0-9_]*[']*"       )
                           , ("opname",          "`" ++ varname ++ "`"           )
@@ -394,7 +394,7 @@
                           , charconst
                           , number
                           , par
-			  , ("operator",        "[-!#$%&\\*\\+./<=>\\?@\\\\^\\|~]+")
+                          , ("operator",        "[-!#$%&\\*\\+./<=>\\?@\\\\^\\|~]+")
                           , xxx
                           ]
                         where
@@ -436,13 +436,13 @@
                                         , "true"
                                         , "void"
                                         ]       )
-			  , ("labelname",	"(" ++ varname ++ "{\\}default):"		)
-			  , ("",		( mkLE ("keyword", "break|continue")
-			                          ++ mkLE ws ++
-						  mkLE ("labelname", varname)
-						)
-			    )
-                          , ("varname",         varname			)
+                          , ("labelname",       "(" ++ varname ++ "{\\}default):"               )
+                          , ("",                ( mkLE ("keyword", "break|continue")
+                                                  ++ mkLE ws ++
+                                                  mkLE ("labelname", varname)
+                                                )
+                            )
+                          , ("varname",         varname                 )
                           , ("typename",        "[A-Z][a-zA-Z0-9_]*"    )
                           , strconst
                           , charconst
@@ -453,25 +453,25 @@
                           , xxx
                           ]
                           where
-			  varname = "[a-z][a-zA-Z0-9_]*"
+                          varname = "[a-z][a-zA-Z0-9_]*"
 
 -- ------------------------------------------------------------
 
-bnfRE			= buildRegex
-			  [ ws
-			  , ("bnfnt"		, "[A-Z][a-zA-Z0-9_]*"	)
-			  , ("bnfterminal",	"\"([^\"\\\\\n\r]|\\\\.)*\""	)
-			  , ("bnfmeta",		buildKeywords
-			                        [ "\\["
-						, "\\]"
-						, "::="
-						, "\\|"
-						, "\\{"
-						, "\\}"
-						]
-			    )
-			  , xxx
-			  ]
+bnfRE                   = buildRegex
+                          [ ws
+                          , ("bnfnt"            , "[A-Z][a-zA-Z0-9_]*"  )
+                          , ("bnfterminal",     "\"([^\"\\\\\n\r]|\\\\.)*\""    )
+                          , ("bnfmeta",         buildKeywords
+                                                [ "\\["
+                                                , "\\]"
+                                                , "::="
+                                                , "\\|"
+                                                , "\\{"
+                                                , "\\}"
+                                                ]
+                            )
+                          , xxx
+                          ]
 
 -- ------------------------------------------------------------
 
@@ -482,63 +482,63 @@
                           , javacmt
                           , ("keyword", buildKeywords
                                         [ "asm" , "auto"
-					, "break"
-					, "case" , "catch" , "class" , "const" , "continue"
-					, "default" , "delete" , "do"
-					, "else" , "extern" 
-					, "for" , "friend"
-					, "goto"
-					, "if" , "inline"
-					, "new"
-					, "operator" , "overload"
-					, "private" , "protected" , "public"
-					, "register" , "return"
-					, "sizeof" , "static" , "switch"
-					, "template" , "this" , "typedef" , "throw" , "try"
-					, "virtual" , "volatile"
-					, "while"
-					]
-			    )
+                                        , "break"
+                                        , "case" , "catch" , "class" , "const" , "continue"
+                                        , "default" , "delete" , "do"
+                                        , "else" , "extern"
+                                        , "for" , "friend"
+                                        , "goto"
+                                        , "if" , "inline"
+                                        , "new"
+                                        , "operator" , "overload"
+                                        , "private" , "protected" , "public"
+                                        , "register" , "return"
+                                        , "sizeof" , "static" , "switch"
+                                        , "template" , "this" , "typedef" , "throw" , "try"
+                                        , "virtual" , "volatile"
+                                        , "while"
+                                        ]
+                            )
                           , ("typekeyword",
                                         buildKeywords
                                         [ "char"
-					, "double"
-					, "enum"
-					, "float"
-					, "int"
-					, "long"
-					, "short"
-					, "signed"
-					, "struct"
-					, "union"
-					, "unsigned"
-					, "void"
-					]
-			    )
-			  , ("cppcommand",	( "#" ++ ws0RE ++ "("
-						  ++
+                                        , "double"
+                                        , "enum"
+                                        , "float"
+                                        , "int"
+                                        , "long"
+                                        , "short"
+                                        , "signed"
+                                        , "struct"
+                                        , "union"
+                                        , "unsigned"
+                                        , "void"
+                                        ]
+                            )
+                          , ("cppcommand",      ( "#" ++ ws0RE ++ "("
+                                                  ++
                                                   buildKeywords
-						  [ "define"
-						  , "else"
-						  , "endif"
-						  , "if"
-						  , "ifdef"
-						  , "ifndef"
-						  , "(include[ \t].*)"
-						  , "undef"
-						  ]
-						  ++ ")"
-						)
-			    )
-			  , ("specialword",	buildKeywords
+                                                  [ "define"
+                                                  , "else"
+                                                  , "endif"
+                                                  , "if"
+                                                  , "ifdef"
+                                                  , "ifndef"
+                                                  , "(include[ \t].*)"
+                                                  , "undef"
+                                                  ]
+                                                  ++ ")"
+                                                )
+                            )
+                          , ("specialword",     buildKeywords
                                                 [ "assert"
-						, "exit"
-						, "free"
-						, "main"
-						, "malloc"
-						]
-			    )
-                          , ("varname",         varname			)
+                                                , "exit"
+                                                , "free"
+                                                , "main"
+                                                , "malloc"
+                                                ]
+                            )
+                          , ("varname",         varname                 )
                           , ("typename",        "[A-Z][a-zA-Z0-9_]*"    )
                           , strconst
                           , charconst
@@ -549,114 +549,114 @@
                           , xxx
                           ]
                           where
-			  varname = "[a-z][a-zA-Z0-9_]*"
+                          varname = "[a-z][a-zA-Z0-9_]*"
 
 -- ------------------------------------------------------------
 
-shRE			= buildRegex
-			  [ ws
-			  , shcmt1
-			  , ("keyword",		buildKeywords
-			                        [ "alias"
-						, "break" , "bg"
-						, "case" , "cd" , "continue"
-						, "declare" , "do" , "done"
-						, "echo" , "elif" , "else" , "env" , "esac" , "eval" , "exec" , "exit" , "export"
-						, "false" , "fg" , "fi" , "for" , "function"
-						, "if" , "in"
-						, "jobs"
-						, "kill"
-						, "local"
-						, "pwd"
-						, "return"
-						, "set" , "shift"
-						, "test" , "then" , "trap" , "true"
-						, "unalias" , "unset"
-						, "while" , "wait"
-						]
-			    )
-                          , ("varname",         "[A-Za-z_][a-zA-Z0-9_]*"    	)
-                          , ("operator",        "[-+!%&=\\\\\\*\\?~|<>:@$]+" 	)
-			  , ("operator",        "[\\(\\)\\[\\]\\{\\}]+"   	)
+shRE                    = buildRegex
+                          [ ws
+                          , shcmt1
+                          , ("keyword",         buildKeywords
+                                                [ "alias"
+                                                , "break" , "bg"
+                                                , "case" , "cd" , "continue"
+                                                , "declare" , "do" , "done"
+                                                , "echo" , "elif" , "else" , "env" , "esac" , "eval" , "exec" , "exit" , "export"
+                                                , "false" , "fg" , "fi" , "for" , "function"
+                                                , "if" , "in"
+                                                , "jobs"
+                                                , "kill"
+                                                , "local"
+                                                , "pwd"
+                                                , "return"
+                                                , "set" , "shift"
+                                                , "test" , "then" , "trap" , "true"
+                                                , "unalias" , "unset"
+                                                , "while" , "wait"
+                                                ]
+                            )
+                          , ("varname",         "[A-Za-z_][a-zA-Z0-9_]*"        )
+                          , ("operator",        "[-+!%&=\\\\\\*\\?~|<>:@$]+"    )
+                          , ("operator",        "[\\(\\)\\[\\]\\{\\}]+"         )
                           , strconst
                           , charconst
-			  , xxx
-			  ]
+                          , xxx
+                          ]
 
 -- ------------------------------------------------------------
 
-rubyRE			= buildRegex
-			  [ ws
-			  , rubycmt
-			  , ("keyword",		buildKeywords
-			                        [ "begin" , "break"
-						, "catch" , "case" , "class"
-						, "def" , "do"
-						, "else" , "elif" , "end" , "ensure"
-						, "false" , "for"
-						, "if" , "in" , "include" , "initialize"
-						, "loop"
-						, "module"
-						, "new" , "nil"
-						, "raise" , "require" , "rescue"
-						, "self"
-						, "then" , "true" , "type"
-						, "until"
-						, "when" , "while"
-						, "yield"
-						]
-			    )
-			  , ("typename",	"[A-Z][A-Za-z0-9]*"	)
-                          , ("varname",         "[A-Za-z_][a-zA-Z0-9_]*(!|\\?)?"    	)
-                          , ("instancename",    "(@{1,2}|$)[A-Za-z_][a-zA-Z0-9_]*" 	)
-			  , ("strconst",        "%[qQx]\\{.*\\}"	)
-			  , ("strconst",        "#\\{.*\\}"	)
-			  , ("strconst",	":[a-z][A-Za-z0-9]*"	)
-			  , strconst
-			  , charconst
-			  , regex
-			  , xxx
-			  ]
+rubyRE                  = buildRegex
+                          [ ws
+                          , rubycmt
+                          , ("keyword",         buildKeywords
+                                                [ "begin" , "break"
+                                                , "catch" , "case" , "class"
+                                                , "def" , "do"
+                                                , "else" , "elif" , "end" , "ensure"
+                                                , "false" , "for"
+                                                , "if" , "in" , "include" , "initialize"
+                                                , "loop"
+                                                , "module"
+                                                , "new" , "nil"
+                                                , "raise" , "require" , "rescue"
+                                                , "self"
+                                                , "then" , "true" , "type"
+                                                , "until"
+                                                , "when" , "while"
+                                                , "yield"
+                                                ]
+                            )
+                          , ("typename",        "[A-Z][A-Za-z0-9]*"     )
+                          , ("varname",         "[A-Za-z_][a-zA-Z0-9_]*(!|\\?)?"        )
+                          , ("instancename",    "(@{1,2}|$)[A-Za-z_][a-zA-Z0-9_]*"      )
+                          , ("strconst",        "%[qQx]\\{.*\\}"        )
+                          , ("strconst",        "#\\{.*\\}"     )
+                          , ("strconst",        ":[a-z][A-Za-z0-9]*"    )
+                          , strconst
+                          , charconst
+                          , regex
+                          , xxx
+                          ]
                         where
-			rubycmt                = ("comment",    "#(.{\\}\\{)*" )
-			regex                  = ("strconst",	"/([^/\\\\\n\r]|\\\\.)*/"    )
+                        rubycmt                = ("comment",    "#(.{\\}\\{)*" )
+                        regex                  = ("strconst",   "/([^/\\\\\n\r]|\\\\.)*/"    )
 
 -- ------------------------------------------------------------
 
 pplRE                   :: Regex
-pplRE               	= buildRegex
+pplRE                   = buildRegex
                           [ ws
                           , ("comment",         "(-)- .*"       )
                           , ("keyword",         buildKeywords
                                                 [ "and"
-						, "begin"
-						, "div" , "do"
-						, "else" , "elseif" , "endif" , "endwhile" , "end"
-						, "function"
-						, "if"
-						, "max" , "min" , "mod"
-						, "not"
-						, "of" , "or"
-						, "procedure"
-						, "repeat"
-						, "return"
-						, "then"
-						, "until"
-						, "var"
-						, "while"
-						, "xor"
-						]
-			    )
-			  , ("typekeyword",     buildKeywords
+                                                , "begin"
+                                                , "div" , "do"
+                                                , "else" , "elseif" , "endif" , "endwhile" , "end"
+                                                , "function"
+                                                , "if"
+                                                , "max" , "min" , "mod"
+                                                , "not"
+                                                , "of" , "or"
+                                                , "procedure"
+                                                , "repeat"
+                                                , "return"
+                                                , "then"
+                                                , "until"
+                                                , "var"
+                                                , "while"
+                                                , "xor"
+                                                ]
+                            )
+                          , ("typekeyword",     buildKeywords
                                                 [ "boolean"
-						, "false" , "float"
-						, "int"
-						, "list"
-						, "picture"
-						, "string"
-						, "true"
-						]
-			    )
+                                                , "false" , "float"
+                                                , "int"
+                                                , "list"
+                                                , "picture"
+                                                , "string"
+                                                , "true"
+                                                ]
+                            )
                           , ("varname",        "[A-Za-z_][a-zA-Z0-9_]*"         )
                           , strconst
                           , number
@@ -666,30 +666,30 @@
 -- ------------------------------------------------------------
 
 pplassRE                :: Regex
-pplassRE               	= buildRegex
+pplassRE                = buildRegex
                           [ ws
                           , ("comment",         "(-)- .*"       )
                           , ("keyword",         buildKeywords
                                                 [ "loadi" , "loadf"
-						, "loads" , "emptyl"
-						, "undef" , "load"
-						]
-			    )
+                                                , "loads" , "emptyl"
+                                                , "undef" , "load"
+                                                ]
+                            )
                           , ("typename",        buildKeywords
                                                 [ "store"
-						, "pop"
-						]
-			    )
+                                                , "pop"
+                                                ]
+                            )
                           , ("typekeyword",     buildKeywords
                                                 [ "jmp"
-						, "brfalse"
-						, "brtrue"
-						, "pushj"
-						, "popj"
-						, "svc"
-						]
-			    )
-			  , ("labelname",	"(l[0-9]+:?)|([se]?_[A-Za-z0-9]*:?)"	)
+                                                , "brfalse"
+                                                , "brtrue"
+                                                , "pushj"
+                                                , "popj"
+                                                , "svc"
+                                                ]
+                            )
+                          , ("labelname",       "(l[0-9]+:?)|([se]?_[A-Za-z0-9]*:?)"    )
                           , ("varname",        "[A-Za-z_][a-zA-Z0-9_]*"         )
                           , strconst
                           , xxx
diff --git a/examples/performance/Makefile b/examples/performance/Makefile
--- a/examples/performance/Makefile
+++ b/examples/performance/Makefile
@@ -1,10 +1,10 @@
-PKGFLAGS	= 
+PKGFLAGS	=
 GHCFLAGS	= -Wall -O2
 GHC		= ghc $(GHCFLAGS) $(PKGFLAGS)
 
 CNT		= 3
 
-ropts		= +RTS -s -RTS 
+ropts		= +RTS -s -RTS
 
 prog		= ./REtest
 prog2		= ./Lines
diff --git a/examples/performance/REtest.hs b/examples/performance/REtest.hs
--- a/examples/performance/REtest.hs
+++ b/examples/performance/REtest.hs
@@ -6,43 +6,42 @@
 where
 
 import Text.Regex.XMLSchema.String
--- import Control.Monad.State.Strict hiding (when)
+
 import Control.Arrow
 
-import Data.List
 import Data.Maybe
 
-import System.IO			-- import the IO and commandline option stuff
+import System.IO                        -- import the IO and commandline option stuff
 import System.Environment
 
 -- ----------------------------------------
 
-main	:: IO ()
+main    :: IO ()
 main
     = do
       p  <- getProgName
       al <- getArgs
       let i = if null al
-	      then 4
-	      else (read . head $ al)::Int
+              then 4
+              else (read . head $ al)::Int
       main' p i
     where
     main' p' = fromMaybe main1 . lookup (pn p') $ mpt
-    mpt = [ ("REtest",	   main1)
-	  , ("Copy",       main2 "copy"     (:[]))
-	  , ("Lines",      main2 "lines"    lines)
-	  , ("RElines",    main2 "relines"  relines)
-	  , ("SElines",    main2 "selines'" relines')
-	  , ("Words",      main2 "words"    words)
-	  , ("REwords",    main2 "rewords"  rewords)
-	  , ("SEwords",    main2 "sewords"  rewords')
-	  ]
+    mpt = [ ("REtest",     main1)
+          , ("Copy",       main2 "copy"     (:[]))
+          , ("Lines",      main2 "lines"    lines)
+          , ("RElines",    main2 "relines"  relines)
+          , ("SElines",    main2 "selines'" relines')
+          , ("Words",      main2 "words"    words)
+          , ("REwords",    main2 "rewords"  rewords)
+          , ("SEwords",    main2 "sewords"  rewords')
+          ]
 
 -- ----------------------------------------
 
 -- generate a document containing a binary tree of 2^i leafs (= 2^(i-1) XML elements)
 
-main1	:: Int -> IO ()
+main1   :: Int -> IO ()
 main1 i
     = do
       genDoc i "REtest.hs" (fn i)
@@ -52,7 +51,7 @@
 
 -- read a document containing a binary tree of 2^i leafs
 
-main2	:: String -> (String -> [String]) -> Int -> IO ()
+main2   :: String -> (String -> [String]) -> Int -> IO ()
 main2 ext lines' i
     = do
       hPutStrLn stderr "start processing"
@@ -65,33 +64,33 @@
       hClose h
       hPutStrLn stderr "end  processing"
 
-relines		:: String -> [String]
-relines		= tokenize ".*"
+relines         :: String -> [String]
+relines         = tokenize ".*"
 
-relines'	:: String -> [String]
-relines'	= tokenizeSubex "({line}.*)" >>> map snd
+relines'        :: String -> [String]
+relines'        = tokenizeSubex "({line}.*)" >>> map snd
 
-rewords		:: String -> [String]
-rewords		= tokenize "\\S+"
+rewords         :: String -> [String]
+rewords         = tokenize "\\S+"
 
-rewords'	:: String -> [String]
-rewords'	= tokenizeSubex "({word}\\S+)" >>> map snd
+rewords'        :: String -> [String]
+rewords'        = tokenizeSubex "({word}\\S+)" >>> map snd
 
 -- ----------------------------------------
 
-pn	:: String -> String
-pn	= reverse . takeWhile (/= '/') . reverse
+pn      :: String -> String
+pn      = reverse . takeWhile (/= '/') . reverse
 
-fn	:: Int -> String
-fn	= ("lines-" ++) . (++ ".txt") . reverse . take 4 . reverse . ((replicate 4 '0') ++ ) . show
+fn      :: Int -> String
+fn      = ("lines-" ++) . (++ ".txt") . reverse . take 4 . reverse . ((replicate 4 '0') ++ ) . show
 
 -- ----------------------------------------
 
-genDoc		:: Int -> String -> String -> IO ()
+genDoc          :: Int -> String -> String -> IO ()
 genDoc d inp outp
                 = do
-		  s <- readFile inp
-		  let s' = take (2^d) . concat . repeat $ s
-		  writeFile outp s'
+                  s <- readFile inp
+                  let s' = take (2^d) . concat . repeat $ s
+                  writeFile outp s'
 
 -- ----------------------------------------
diff --git a/examples/test/Main.hs b/examples/test/Main.hs
--- a/examples/test/Main.hs
+++ b/examples/test/Main.hs
@@ -12,235 +12,235 @@
 
 -- ------------------------------------------------------------
 
-parseTests		:: Test
+parseTests              :: Test
 parseTests
     = TestLabel "parse tests" $
       TestList $
       map parseTest $ tests
     where
     parseTest (re, rep)
-	= TestCase $
-	  assertEqual (show re ++ " must be parsed as " ++ show rep)
+        = TestCase $
+          assertEqual (show re ++ " must be parsed as " ++ show rep)
                       rep
-		      (show . parseRegex $ re)
+                      (show . parseRegex $ re)
 
-    tests = [ ("",		"()")
-	    , (".",		".")
-	    , (".*",		"(.*)")
-	    , ("\\a",		"\\a")
-	    , ("\\A",           "\\A")
-	    , ("(())",		"()")
-	    , ("(a*)*",		"(a*)")
-	    , ("(a*)+",		"(a*)")
-	    , ("(a+)*",		"(a*)")
-	    , ("(a+)+",		"(a+)")
-	    , ("(a?){2,}",		"(a*)")
-	    , ("((a?){2,}){0,}",	"(a*)")
-	    , ("((a?){2,}){3,}",	"(a*)")
-	    , ("(a{0,}){2,}",		"(a*)")
-	    , ("(a{2,}){3,}",		"(a{6,})")
-	    , ("[9-0]",			"{empty char range}")
-	    , ("[0-9]",			"[0-9]")
-	    , ("[0-99-0]",		"[0-9]")
-	    , ("[abc]",			"[a-c]")
-	    , ("[\0-\1114111]",		"\\a")
-	    , ("[\0-\1114111]|[0-9]",	"\\a")
-	    , ("[\0-\1114110]",		"[&#0;-&#1114110;]"	)
+    tests = [ ("",              "()")
+            , (".",             ".")
+            , (".*",            "(.*)")
+            , ("\\a",           "\\a")
+            , ("\\A",           "\\A")
+            , ("(())",          "()")
+            , ("(a*)*",         "(a*)")
+            , ("(a*)+",         "(a*)")
+            , ("(a+)*",         "(a*)")
+            , ("(a+)+",         "(a+)")
+            , ("(a?){2,}",              "(a*)")
+            , ("((a?){2,}){0,}",        "(a*)")
+            , ("((a?){2,}){3,}",        "(a*)")
+            , ("(a{0,}){2,}",           "(a*)")
+            , ("(a{2,}){3,}",           "(a{6,})")
+            , ("[9-0]",                 "{empty char range}")
+            , ("[0-9]",                 "[0-9]")
+            , ("[0-99-0]",              "[0-9]")
+            , ("[abc]",                 "[a-c]")
+            , ("[\0-\1114111]",         "\\a")
+            , ("[\0-\1114111]|[0-9]",   "\\a")
+            , ("[\0-\1114110]",         "[&#0;-&#1114110;]"     )
             , ("[abc-[b]]",             "[ac]" )
-	    , ("a|b|c|d",		"[a-d]"	)
-	    , ("(a|b)|c",		"[a-c]"	)
-	    , ("a|(b|c)",		"[a-c]"	)
-	    , ("abc",                   "(a(bc))"	)				-- seq is right ass
-	    , ("a*{^}b*",               "((a*){^}(b*))"	)				-- extension: exor
-	    , ("a*{^}b*{^}c*",          "((a*){^}((b*){^}(c*)))")
-	    , ("a*{&}b*",               "((a*){&}(b*))"	)				-- extension: intersection
-	    , ("a*{&}b*{&}c*",          "((a*){&}((b*){&}(c*)))")
-	    , ("a*{\\}b*",              "((a*){\\}(b*))"	)			-- extension: set difference
-	    , ("a*{\\}b*{\\}c*",        "(((a*){\\}(b*)){\\}(c*))"	)
-	    , ("(a|b)*{\\}(.*aa.*)",	"(([ab]*){\\}((.*)(a(a(.*)))))"	)
-	    , ("({1}a+)",               "({1}(a+))"	)				-- extension: labeled subexpressions
-	    , ("({1}({2}({3}a)))",	"({1}({2}({3}a)))"	)
-	    , ("({1}do){|}({2}[a-z]+)", "(({1}(do)){|}({2}([a-z]+)))"	)		-- deterministic choice of submatches
-	    , ("a{:}b{:}c",             "(a{:}(b{:}c))"	)				-- interleave
-	    ]
+            , ("a|b|c|d",               "[a-d]" )
+            , ("(a|b)|c",               "[a-c]" )
+            , ("a|(b|c)",               "[a-c]" )
+            , ("abc",                   "(a(bc))"       )                               -- seq is right ass
+            , ("a*{^}b*",               "((a*){^}(b*))" )                               -- extension: exor
+            , ("a*{^}b*{^}c*",          "((a*){^}((b*){^}(c*)))")
+            , ("a*{&}b*",               "((a*){&}(b*))" )                               -- extension: intersection
+            , ("a*{&}b*{&}c*",          "((a*){&}((b*){&}(c*)))")
+            , ("a*{\\}b*",              "((a*){\\}(b*))"        )                       -- extension: set difference
+            , ("a*{\\}b*{\\}c*",        "(((a*){\\}(b*)){\\}(c*))"      )
+            , ("(a|b)*{\\}(.*aa.*)",    "(([ab]*){\\}((.*)(a(a(.*)))))" )
+            , ("({1}a+)",               "({1}(a+))"     )                               -- extension: labeled subexpressions
+            , ("({1}({2}({3}a)))",      "({1}({2}({3}a)))"      )
+            , ("({1}do){|}({2}[a-z]+)", "(({1}(do)){|}({2}([a-z]+)))"   )               -- deterministic choice of submatches
+            , ("a{:}b{:}c",             "(a{:}(b{:}c))" )                               -- interleave
+            ]
 
-simpleMatchTests	:: Test
+simpleMatchTests        :: Test
 simpleMatchTests
     = TestLabel "simple match tests" $
       TestList $
       concatMap matchTest $ tests
     where
     matchTest (re, ok, er)
-	= map (matchOK re) ok
-	  ++
-	  map (matchErr re) er
-    matchOK  re s	= TestCase $ assertBool (show s ++ " must match "     ++ show re)      (match re s)
-    matchErr re s	= TestCase $ assertBool (show s ++ " must not match " ++ show re) (not (match re s))
+        = map (matchOK re) ok
+          ++
+          map (matchErr re) er
+    matchOK  re s       = TestCase $ assertBool (show s ++ " must match "     ++ show re)      (match re s)
+    matchErr re s       = TestCase $ assertBool (show s ++ " must not match " ++ show re) (not (match re s))
 
     tests = [ ( ""
-	      ,	[""]
-	      ,	["a"]
-	      )
-	    , ( "a"
-	      ,	["a"]
-	      ,	["", "b", "ab"]
-	      )
-	    , ( "()"
-	      ,	[""]
-	      ,	["a"]
-	      )
-	    , ( "ab"
-	      ,	["ab"]
-	      ,	["", "b", "abc"]
-	      )
-	    , ( "."
-	      , [".","a","\0","\1114111"]
-	      , ["\n","\r","",".."]
-	      )
-	    , ( "\\a"
-	      , [".","a","\n","\r","\0","\1114111"]
-	      , ["",".."]
-	      )
-	    , ( "\\A"
-	      , ["",".","a","\n","\r","\0","\1114111",".."]
-	      , []
-	      )
-	    , ( "a*"
-	      ,	["", "a", "aa"]
-	      ,	["b", "ab", "aab"]
-	      )
-	    , ( "a+"
-	      ,	["a", "aa", "aaa"]
-	      ,	["", "b", "ab"]
-	      )
-	    , ( "a?"
-	      ,	["", "a"]
-	      ,	["b", "ab"]
-	      )
-	    , ( "a{2}"
-	      ,	["aa"]
-	      ,	["", "a", "aaa"]
-	      )
-	    , ( "a{2,}"
-	      ,	["aa","aaa"]
-	      ,	["", "a", "aaab"]
-	      )
-	    , ( "a{2,4}"
-	      ,	["aa", "aaa", "aaaa"]
-	      ,	["", "a", "aaaaa", "ab"]
-	      )
-	    , ( "a|b"
-	      ,	["a", "b"]
-	      ,	["", "c", "ab", "abc"]
-	      )
-	    , ( "[0-9]"
-	      ,	["0", "5", "9"]
-	      ,	["", "a", "00"]
-	      )
-	    , ( "[^0-9]"
-	      ,	["a"]
-	      ,	["", "0", "9", "00"])
-	    , ( "\32"
-	      ,	[" "]
-	      ,	[]
-	      )
-	    , ( "[\0-\1114111]"
-	      ,	["\0","\1114111","a"]
-	      ,	["","aaa"]
-	      )
-	    , ( "[^\0-\1114111]"
-	      ,	[]
-	      ,	["","aaa","\0","\1114111","a"]
-	      )
-	    , ( ".*a.*|.*b.*|.*c.*"
-	      , ["a", "abc", "acdc"]
-	      , ["", "dddd"]
-	      )
-	    , ( ".*a.*{&}.*b.*{&}.*c.*"
-	      , ["abc", "abcd", "abcabcd"]
-	      , ["", "a", "bc", "acdc", "dddd"]
-	      )
-	    , ( ".*a.*{&}.*b.*{&}.*c.*{&}.{3}"		-- all permutations of "abc"
-	      , ["abc", "acb", "bac", "bca", "cab", "cba"]
-	      , ["", "a", "bc", "acd", "aaaa", "aba"]
-	      )
-	    , ( ".*a.*{&}.*b.*{&}.*c.*"			-- all words containing at least 1 a, 1 b and 1 c
-	      , ["abc", "acb", "bac", "bca", "cab", "cba", "abcd", "abcabc"]
-	      , ["", "a", "bc", "acd", "aaaa"]
-	      )
-	    , ( ".*a.*{^}.*b.*"				-- all words containing at least 1 a or 1 b but not both a's and b's
-	      , ["a", "b", "ac", "bc", "aaaa", "bbb", "aacc", "ccbb", "acdc"]
-	      , ["", "ab", "abc", "dddd"]
-	      )
-	    , ( "/[*](.*{\\}(.*[*]/.*))[*]/"		-- single line C comment of form /*...*/, but without any */ in the comment body
-							-- this is the way to specify none greedy expessions
-							-- if multy line comment are required, substitute .* by \A, so newlines are allowed
-	      , ["/**/","/***/","/*x*/","/*///*/"]
-	      , ["", "/", "/*", "/*/", "/**/*/", "/*xxx*/xxx*/"]
-	      )
-	    , ( "a{:}b{:}c"
-	      , ["abc", "acb", "bac", "bca", "cab", "cba"]
-	      , ["", "a", "ab", "abcc", "abca", "aba"]
-	      )
-	    ]
+              , [""]
+              , ["a"]
+              )
+            , ( "a"
+              , ["a"]
+              , ["", "b", "ab"]
+              )
+            , ( "()"
+              , [""]
+              , ["a"]
+              )
+            , ( "ab"
+              , ["ab"]
+              , ["", "b", "abc"]
+              )
+            , ( "."
+              , [".","a","\0","\1114111"]
+              , ["\n","\r","",".."]
+              )
+            , ( "\\a"
+              , [".","a","\n","\r","\0","\1114111"]
+              , ["",".."]
+              )
+            , ( "\\A"
+              , ["",".","a","\n","\r","\0","\1114111",".."]
+              , []
+              )
+            , ( "a*"
+              , ["", "a", "aa"]
+              , ["b", "ab", "aab"]
+              )
+            , ( "a+"
+              , ["a", "aa", "aaa"]
+              , ["", "b", "ab"]
+              )
+            , ( "a?"
+              , ["", "a"]
+              , ["b", "ab"]
+              )
+            , ( "a{2}"
+              , ["aa"]
+              , ["", "a", "aaa"]
+              )
+            , ( "a{2,}"
+              , ["aa","aaa"]
+              , ["", "a", "aaab"]
+              )
+            , ( "a{2,4}"
+              , ["aa", "aaa", "aaaa"]
+              , ["", "a", "aaaaa", "ab"]
+              )
+            , ( "a|b"
+              , ["a", "b"]
+              , ["", "c", "ab", "abc"]
+              )
+            , ( "[0-9]"
+              , ["0", "5", "9"]
+              , ["", "a", "00"]
+              )
+            , ( "[^0-9]"
+              , ["a"]
+              , ["", "0", "9", "00"])
+            , ( "\32"
+              , [" "]
+              , []
+              )
+            , ( "[\0-\1114111]"
+              , ["\0","\1114111","a"]
+              , ["","aaa"]
+              )
+            , ( "[^\0-\1114111]"
+              , []
+              , ["","aaa","\0","\1114111","a"]
+              )
+            , ( ".*a.*|.*b.*|.*c.*"
+              , ["a", "abc", "acdc"]
+              , ["", "dddd"]
+              )
+            , ( ".*a.*{&}.*b.*{&}.*c.*"
+              , ["abc", "abcd", "abcabcd"]
+              , ["", "a", "bc", "acdc", "dddd"]
+              )
+            , ( ".*a.*{&}.*b.*{&}.*c.*{&}.{3}"          -- all permutations of "abc"
+              , ["abc", "acb", "bac", "bca", "cab", "cba"]
+              , ["", "a", "bc", "acd", "aaaa", "aba"]
+              )
+            , ( ".*a.*{&}.*b.*{&}.*c.*"                 -- all words containing at least 1 a, 1 b and 1 c
+              , ["abc", "acb", "bac", "bca", "cab", "cba", "abcd", "abcabc"]
+              , ["", "a", "bc", "acd", "aaaa"]
+              )
+            , ( ".*a.*{^}.*b.*"                         -- all words containing at least 1 a or 1 b but not both a's and b's
+              , ["a", "b", "ac", "bc", "aaaa", "bbb", "aacc", "ccbb", "acdc"]
+              , ["", "ab", "abc", "dddd"]
+              )
+            , ( "/[*](.*{\\}(.*[*]/.*))[*]/"            -- single line C comment of form /*...*/, but without any */ in the comment body
+                                                        -- this is the way to specify none greedy expessions
+                                                        -- if multy line comment are required, substitute .* by \A, so newlines are allowed
+              , ["/**/","/***/","/*x*/","/*///*/"]
+              , ["", "/", "/*", "/*/", "/**/*/", "/*xxx*/xxx*/"]
+              )
+            , ( "a{:}b{:}c"
+              , ["abc", "acb", "bac", "bca", "cab", "cba"]
+              , ["", "a", "ab", "abcc", "abca", "aba"]
+              )
+            ]
 
 -- ------------------------------------------------------------
 
-simpleSplitTests	:: Test
+simpleSplitTests        :: Test
 simpleSplitTests
     = TestLabel "simple split tests" $
       TestList $
       map splitTest $ tests
     where
     splitTest (re, inp, tok)
-	= TestCase $
-	  assertEqual ("split " ++ show re ++ show inp ++ " = (" ++ show tok ++ ", ... )")
-		      tok
-		      (fst (split re inp))
-    tests = [ ("",	"a",	""	)
-	    , ("a*b",	"abc",	"ab"	)
-	    , ("a*",	"bc",	""	)
-	    , ("a+",	"bc",	""	)
-	    , ("a{2}",	"aaa",	"aa"	)
-	    , ("a{2,}",	"aaa",	"aaa"	)
-	    , ("a|b",	"ab",	"a"	)
-	    , ("a|b*",	"bbba",	"bbb"	)
-	    , ("abc",	"abcd",	"abc"	)
-	    ]
+        = TestCase $
+          assertEqual ("split " ++ show re ++ show inp ++ " = (" ++ show tok ++ ", ... )")
+                      tok
+                      (fst (split re inp))
+    tests = [ ("",      "a",    ""      )
+            , ("a*b",   "abc",  "ab"    )
+            , ("a*",    "bc",   ""      )
+            , ("a+",    "bc",   ""      )
+            , ("a{2}",  "aaa",  "aa"    )
+            , ("a{2,}", "aaa",  "aaa"   )
+            , ("a|b",   "ab",   "a"     )
+            , ("a|b*",  "bbba", "bbb"   )
+            , ("abc",   "abcd", "abc"   )
+            ]
 
 -- ------------------------------------------------------------
 
-simpleTokenTests	:: Test
+simpleTokenTests        :: Test
 simpleTokenTests
     = TestLabel "simple token tests" $
       TestList $
       map tokenTest $ tests
     where
     tokenTest (re, inp, toks)
-	= TestCase $
-	  assertEqual ("tokenize " ++ show re ++ " " ++ show inp ++ " = " ++ show toks)
-		      toks
-		      (tokenize re inp)
-    tests = [ ("",	"",	[]	)
-	    , ("a",	"aba",	["a", "a"]	)
-	    , ("a",	"b",	[]	)
-	    , ("a",	"ba",	["a"]	)
-	    , ("a*",	"a",	["a"]	)
-	    , ("a*",	"ba",	["","a"]	)
-	    , ("a*",	"aba",	["a", "a"]	)
-	    , ("a*",	"abba",	["a", "", "a"]	)
-	    , ("a+",	"abba",	["a", "a"]	)
-	    , ("a*b",	"abba",	["ab", "b"]	)
-	    , (".*",    "a\n\nb",	["a", "", "b"]	)
-	    , (".*",    "a\n\nb\n",	["a", "", "b"]	)
-	    , ("\\w+",	"a\n\nb\n",	["a", "b"]	)
-	    , ("\\w|ab",	"aaa\n\nabc\n",	["a", "a", "a", "ab", "c"]	)
-	    , ("\\w|ab",	"aaa abc",	["a", "a", "a", "ab", "c"]	)
-	    ]
+        = TestCase $
+          assertEqual ("tokenize " ++ show re ++ " " ++ show inp ++ " = " ++ show toks)
+                      toks
+                      (tokenize re inp)
+    tests = [ ("",      "",     []      )
+            , ("a",     "aba",  ["a", "a"]      )
+            , ("a",     "b",    []      )
+            , ("a",     "ba",   ["a"]   )
+            , ("a*",    "a",    ["a"]   )
+            , ("a*",    "ba",   ["","a"]        )
+            , ("a*",    "aba",  ["a", "a"]      )
+            , ("a*",    "abba", ["a", "", "a"]  )
+            , ("a+",    "abba", ["a", "a"]      )
+            , ("a*b",   "abba", ["ab", "b"]     )
+            , (".*",    "a\n\nb",       ["a", "", "b"]  )
+            , (".*",    "a\n\nb\n",     ["a", "", "b"]  )
+            , ("\\w+",  "a\n\nb\n",     ["a", "b"]      )
+            , ("\\w|ab",        "aaa\n\nabc\n", ["a", "a", "a", "ab", "c"]      )
+            , ("\\w|ab",        "aaa abc",      ["a", "a", "a", "ab", "c"]      )
+            ]
 
 -- ------------------------------------------------------------
 
-allTests	:: Test
+allTests        :: Test
 allTests
     = TestList
       [ parseTests
@@ -249,16 +249,16 @@
       , simpleTokenTests
       ]
 
-main	:: IO ()
+main    :: IO ()
 main
     = do
       c <- runTestTT allTests
       putStrLn $ show c
       let errs = errors c
-	  fails = failures c
+          fails = failures c
       System.exitWith (codeGet errs fails)
 
-codeGet	:: Int -> Int -> ExitCode
+codeGet :: Int -> Int -> ExitCode
 codeGet errs fails
     | fails > 0       = ExitFailure 2
     | errs > 0        = ExitFailure 1
@@ -266,35 +266,35 @@
 
 -- ------------------------------------------------------------
 
-deltaTrc		:: Regex -> String -> [(String, Regex)]
-deltaTrc re ""		= [("", re)]
-deltaTrc re s@(c:cs)	=  (s,  re)
-			   :
-			   ( if isZero re'
-			     then [("",re')]
-			     else deltaTrc re' cs
-			   )
+deltaTrc                :: Regex -> String -> [(String, Regex)]
+deltaTrc re ""          = [("", re)]
+deltaTrc re s@(c:cs)    =  (s,  re)
+                           :
+                           ( if isZero re'
+                             then [("",re')]
+                             else deltaTrc re' cs
+                           )
                           where
-			  re' = delta1 re c
+                          re' = delta1 re c
 
-matchTrc		:: String -> String -> (Bool, [(String, Regex)])
-matchTrc re		= ( parseRegex >>> deltaTrc$ re )
-			  >>>
-			  ( (last >>> snd >>> nullable) &&& id )
-			   
-							     
-trcMatch		:: String -> String -> IO()
-trcMatch re		= putStrLn . showTrc . matchTrc re
+matchTrc                :: String -> String -> (Bool, [(String, Regex)])
+matchTrc re             = ( parseRegex >>> deltaTrc$ re )
+                          >>>
+                          ( (last >>> snd >>> nullable) &&& id )
+
+
+trcMatch                :: String -> String -> IO()
+trcMatch re             = putStrLn . showTrc . matchTrc re
                           where
-			  showTrc =
-			      ( (show >>> (++ "\n"))
-				***
-				(concatMap ( ((++ "\t") *** (show >>> (++"\n")))
-					     >>> uncurry (++)
-					   )
-				)
-			      )
-			      >>>
-			      uncurry (flip (++))
+                          showTrc =
+                              ( (show >>> (++ "\n"))
+                                ***
+                                (concatMap ( ((++ "\t") *** (show >>> (++"\n")))
+                                             >>> uncurry (++)
+                                           )
+                                )
+                              )
+                              >>>
+                              uncurry (flip (++))
 
 -- ------------------------------------------------------------
diff --git a/regex-xmlschema.cabal b/regex-xmlschema.cabal
--- a/regex-xmlschema.cabal
+++ b/regex-xmlschema.cabal
@@ -1,5 +1,5 @@
 Name:          regex-xmlschema
-Version:       0.1.4
+Version:       0.1.5
 Synopsis:      A regular expression library for W3C XML Schema regular expressions
 Description:   This library supports full W3C XML Schema regular expressions
                inclusive all Unicode character sets and blocks.
diff --git a/src/Text/Regex/XMLSchema/String.hs b/src/Text/Regex/XMLSchema/String.hs
--- a/src/Text/Regex/XMLSchema/String.hs
+++ b/src/Text/Regex/XMLSchema/String.hs
@@ -64,7 +64,7 @@
     , isZero
     , errRegex
 
-    , parseRegex	-- re-export of Text.Regex.XMLSchema.String.RegexParser
+    , parseRegex        -- re-export of Text.Regex.XMLSchema.String.RegexParser
     )
 where
 
@@ -83,11 +83,11 @@
 -- @Nothing@ is returned in case there is no matching prefix,
 -- else the pair of prefix and rest is returned
 
-splitRE		:: (Eq l, Show l) => GenRegex l -> String -> Maybe (String, String)
+splitRE         :: (Eq l, Show l) => GenRegex l -> String -> Maybe (String, String)
 splitRE re input
-    		= do
-		  (sms, rest) <- splitWithRegex re input
-		  return (snd . head $ sms, rest)
+                = do
+                  (sms, rest) <- splitWithRegex re input
+                  return (snd . head $ sms, rest)
 
 -- | convenient function for 'splitRE'
 --
@@ -98,8 +98,8 @@
 -- > split "a+"  "bc"  = ("", "bc")
 -- > split "["   "abc" = ("", "abc")
 
-split		:: String -> String -> (String, String)
-split re input	= fromMaybe ("", input)
+split           :: String -> String -> (String, String)
+split re input  = fromMaybe ("", input)
                   . (splitRE . parseRegex $ re) $ input
 
 -- ------------------------------------------------------------
@@ -111,11 +111,11 @@
 -- else the list of pairs of labels and submatches and the
 -- rest is returned
 
-splitSubexRE	:: (Eq l, Show l) => GenRegex l -> String -> Maybe ([(l, String)], String)
+splitSubexRE    :: (Eq l, Show l) => GenRegex l -> String -> Maybe ([(l, String)], String)
 splitSubexRE re input
-    		= do
-		  (sms, rest) <- splitWithRegex re input
-		  return (map (first fromJust) . drop 1 $ sms, rest)
+                = do
+                  (sms, rest) <- splitWithRegex re input
+                  return (map (first fromJust) . drop 1 $ sms, rest)
 
 -- | convenient function for 'splitSubex'
 --
@@ -140,35 +140,35 @@
 -- > splitSubex "["         "abc" = ([], "abc")                        -- syntax error
 
 
-splitSubex	:: String -> String -> ([(String,String)], String)
+splitSubex      :: String -> String -> ([(String,String)], String)
 splitSubex re inp
-		= fromMaybe ([], inp) . (splitSubexRE . parseRegex $ re) $ inp
+                = fromMaybe ([], inp) . (splitSubexRE . parseRegex $ re) $ inp
 
 -- ------------------------------------------------------------
 
 -- | The function, that does the real work for 'tokenize'
 
-tokenizeRE	:: (Eq l, Show l) => GenRegex l -> String -> [String]
+tokenizeRE      :: (Eq l, Show l) => GenRegex l -> String -> [String]
 tokenizeRE re
     = token''
     where
-    re1		= mkDiff re mkUnit
+    re1         = mkDiff re mkUnit
     token''     = token' re  fcs
-    token1''	= token' re1 fcs
+    token1''    = token' re1 fcs
     fcs         = firstChars re
 
-    -- token'	:: (Eq l, Show l) => GenRegex l -> CharSet -> String -> [String]
+    -- token'   :: (Eq l, Show l) => GenRegex l -> CharSet -> String -> [String]
     token' re' fcs' inp
-	| null inp	= []
-	| otherwise	= evalRes . splitWithRegexCS re' fcs' $ inp
-	where
-	evalRes Nothing	= token'' (tail inp)		-- re does not match any prefix
-	evalRes (Just (toks, rest))
-	    | null tok	= tok : token'' (tail rest)	-- re is nullable and only the empty prefix matches
-							-- discard one char and try again
-	    | otherwise = tok : token1'' rest		-- real token found, next token must not be empty
-	    where
-	    tok = snd . head $ toks
+        | null inp      = []
+        | otherwise     = evalRes . splitWithRegexCS re' fcs' $ inp
+        where
+        evalRes Nothing = token'' (tail inp)            -- re does not match any prefix
+        evalRes (Just (toks, rest))
+            | null tok  = tok : token'' (tail rest)     -- re is nullable and only the empty prefix matches
+                                                        -- discard one char and try again
+            | otherwise = tok : token1'' rest           -- real token found, next token must not be empty
+            where
+            tok = snd . head $ toks
 
 -- | split a string into tokens (words) by giving a regular expression
 -- which all tokens must match.
@@ -208,8 +208,8 @@
 -- >
 -- > tokenize "[^ \t\n\r]*"    = words
 
-tokenize	:: String -> String -> [String]
-tokenize	= tokenizeRE . parseRegex
+tokenize        :: String -> String -> [String]
+tokenize        = tokenizeRE . parseRegex
 
 -- ------------------------------------------------------------
 
@@ -225,41 +225,41 @@
 --
 -- > concat . map (either id id) . tokenizeRE' re == id
 
-tokenizeRE'	:: (Eq l, Show l) => GenRegex l -> String -> [Either String String]
+tokenizeRE'     :: (Eq l, Show l) => GenRegex l -> String -> [Either String String]
 tokenizeRE' re
     = token'' ""
     where
-    re1		= mkDiff re mkUnit
+    re1         = mkDiff re mkUnit
     token''     = token' re  fcs
-    token1''	= token' re1 fcs
+    token1''    = token' re1 fcs
     fcs         = firstChars re
 
-    -- token'	:: (Eq l, Show l) => GenRegex l -> CharSet -> String -> String -> [Either String String]
+    -- token'   :: (Eq l, Show l) => GenRegex l -> CharSet -> String -> String -> [Either String String]
     token' re' fcs' unmatched inp
-	| null inp	= addUnmatched []
-	| otherwise	= evalRes . splitWithRegexCS re' fcs' $ inp
-	where
-	addUnmatched
-	    | null unmatched	= id
-	    | otherwise		= ((Left . reverse $ unmatched) :)
+        | null inp      = addUnmatched []
+        | otherwise     = evalRes . splitWithRegexCS re' fcs' $ inp
+        where
+        addUnmatched
+            | null unmatched    = id
+            | otherwise         = ((Left . reverse $ unmatched) :)
 
-        addMatched t		= addUnmatched . ((Right t) :)
+        addMatched t            = addUnmatched . ((Right t) :)
 
-	evalRes Nothing	= token'' ((head inp) : unmatched) (tail inp)			-- re does not match any prefix
+        evalRes Nothing = token'' ((head inp) : unmatched) (tail inp)                   -- re does not match any prefix
 
-	evalRes (Just (toks, rest))
-	    | null tok	= addMatched tok $ token'' (take 1 rest) (tail rest)		-- re is nullable and only the empty prefix matches
-											-- discard one char and try again
-	    | otherwise = addMatched tok $ token1'' "" rest				-- real token found, next token must not be empty
-	    where
-	    tok = snd . head $ toks
+        evalRes (Just (toks, rest))
+            | null tok  = addMatched tok $ token'' (take 1 rest) (tail rest)            -- re is nullable and only the empty prefix matches
+                                                                                        -- discard one char and try again
+            | otherwise = addMatched tok $ token1'' "" rest                             -- real token found, next token must not be empty
+            where
+            tok = snd . head $ toks
 
 -- | convenient function for 'tokenizeRE''
 --
 -- When the regular expression parses as Zero, @[Left input]@ is returned, that means no tokens are found
 
-tokenize'	:: String -> String -> [Either String String]
-tokenize'	= tokenizeRE' . parseRegex
+tokenize'       :: String -> String -> [Either String String]
+tokenize'       = tokenizeRE' . parseRegex
 
 -- ------------------------------------------------------------
 
@@ -277,27 +277,27 @@
 -- All none matching chars are discarded. If the given regex contains syntax errors,
 -- @Nothing@ is returned
 
-tokenizeSubexRE	:: (Eq l, Show l) => GenRegex l -> String -> [(l, String)]
+tokenizeSubexRE :: (Eq l, Show l) => GenRegex l -> String -> [(l, String)]
 tokenizeSubexRE re
     = token''
     where
-    re1		= mkDiff re mkUnit
+    re1         = mkDiff re mkUnit
     token''     = token' re  fcs
-    token1''	= token' re1 fcs
+    token1''    = token' re1 fcs
     fcs         = firstChars re
 
-    -- token'	:: (Eq l, Show l) => GenRegex l -> CharSet -> String -> [(l,String)]
+    -- token'   :: (Eq l, Show l) => GenRegex l -> CharSet -> String -> [(l,String)]
     token' re' fcs' inp
-	| null inp	= []
-	| otherwise	= evalRes . splitWithRegexCS re' fcs' $ inp
-	where
-	evalRes Nothing	= token'' (tail inp)		-- re does not match any prefix
-	evalRes (Just (toks, rest))
-	    | null tok	= res ++ token'' (tail rest)	-- re is nullable and only the empty prefix matches
-	    | otherwise	= res ++ token1'' rest		-- token found, tokenize the rest
-	    where
-	    res = map (first fromJust) . tail $ toks
-	    tok = snd . head $ toks
+        | null inp      = []
+        | otherwise     = evalRes . splitWithRegexCS re' fcs' $ inp
+        where
+        evalRes Nothing = token'' (tail inp)            -- re does not match any prefix
+        evalRes (Just (toks, rest))
+            | null tok  = res ++ token'' (tail rest)    -- re is nullable and only the empty prefix matches
+            | otherwise = res ++ token1'' rest          -- token found, tokenize the rest
+            where
+            res = map (first fromJust) . tail $ toks
+            tok = snd . head $ toks
 
 -- | convenient function for 'tokenizeSubexRE' a string
 --
@@ -323,8 +323,8 @@
 -- >                  "12 34.56"      = [("real","12"),("n","12"),("f","")
 -- >                                    ,("real","34.56"),("n","34"),("f","56")]
 
-tokenizeSubex	:: String -> String -> [(String,String)]
-tokenizeSubex	= tokenizeSubexRE . parseRegex
+tokenizeSubex   :: String -> String -> [(String,String)]
+tokenizeSubex   = tokenizeSubexRE . parseRegex
 
 -- ------------------------------------------------------------
 
@@ -333,8 +333,8 @@
 -- All matching tokens are edited by the 1. argument, the editing function,
 -- all other chars remain as they are
 
-sedRE		:: (Eq l, Show l) => (String -> String) ->  GenRegex l -> String -> String
-sedRE edit re	= concatMap (either id edit) . tokenizeRE' re
+sedRE           :: (Eq l, Show l) => (String -> String) ->  GenRegex l -> String -> String
+sedRE edit re   = concatMap (either id edit) . tokenizeRE' re
 
 -- | convenient function for 'sedRE'
 --
@@ -344,15 +344,15 @@
 -- > sed (\ x -> x ++ x) "a" "xax"     = "xaax"
 -- > sed undefined       "[" "xxx"     = "xxx"
 
-sed		:: (String -> String) -> String -> String -> String
-sed edit	= sedRE edit . parseRegex
+sed             :: (String -> String) -> String -> String -> String
+sed edit        = sedRE edit . parseRegex
 
 -- ------------------------------------------------------------
 
 -- | match a string with a regular expression
 
-matchRE		:: (Eq l, Show l) => GenRegex l -> String -> Bool
-matchRE		= matchWithRegex
+matchRE         :: (Eq l, Show l) => GenRegex l -> String -> Bool
+matchRE         = matchWithRegex
 
 -- | convenient function for 'matchRE'
 --
@@ -362,16 +362,16 @@
 -- > match "x" "xxx"  = False
 -- > match "[" "xxx"  = False
 
-match		:: String -> String -> Bool
-match		= matchWithRegex . parseRegex
+match           :: String -> String -> Bool
+match           = matchWithRegex . parseRegex
 
 -- ------------------------------------------------------------
 
 -- | match a string with a regular expression
 -- and extract subexpression matches
 
-matchSubexRE		:: (Eq l, Show l) => GenRegex l -> String -> [(l, String)]
-matchSubexRE re		= map (first fromJust) . fromMaybe [] . matchWithRegex' re
+matchSubexRE            :: (Eq l, Show l) => GenRegex l -> String -> [(l, String)]
+matchSubexRE re         = map (first fromJust) . fromMaybe [] . matchWithRegex' re
 
 -- | convenient function for 'matchRE'
 --
@@ -382,8 +382,8 @@
 -- > matchSubex "({w}[0-9]+)x({h}[0-9]+)" "800x600"  = [("w","800"),("h","600")]
 -- > matchSubex "[" "xxx"                            = []
 
-matchSubex		:: String -> String -> [(String, String)]
-matchSubex		= matchSubexRE . parseRegex
+matchSubex              :: String -> String -> [(String, String)]
+matchSubex              = matchSubexRE . parseRegex
 
 -- ------------------------------------------------------------
 
@@ -403,20 +403,20 @@
 -- > grep "\\<a" ["x a b", " ax ", " xa ", "xab"]   => ["x a b", " ax "]
 -- > grep "a\\>" ["x a b", " ax ", " xa ", "xab"]   => ["x a b", " xa "]
 
-grep			:: String -> [String] -> [String]
-grep re			= filter (matchRE re')
-			  where
-			  re' = mkSeqs . concat $ [ startContext
-						  , (:[]) . parseRegex $ re2
-						  , endContext
-						  ]
-			  (startContext, re1)
-			      | "^"   `isPrefixOf` re	= ([],                       tail   re)
-			      | "\\<" `isPrefixOf` re	= ([parseRegex "(\\A\\W)?"], drop 2 re)
-			      | otherwise		= ([mkStar mkDot],                  re)
-			  (endContext, re2)
-			      | "$"   `isSuffixOf` re1  = ([],                       init          re1)
-			      | "\\>" `isSuffixOf` re1  = ([parseRegex "(\\W\\A)?"], init . init $ re1)
-			      | otherwise               = ([mkStar mkDot],                         re1)
+grep                    :: String -> [String] -> [String]
+grep re                 = filter (matchRE re')
+                          where
+                          re' = mkSeqs . concat $ [ startContext
+                                                  , (:[]) . parseRegex $ re2
+                                                  , endContext
+                                                  ]
+                          (startContext, re1)
+                              | "^"   `isPrefixOf` re   = ([],                       tail   re)
+                              | "\\<" `isPrefixOf` re   = ([parseRegex "(\\A\\W)?"], drop 2 re)
+                              | otherwise               = ([mkStar mkDot],                  re)
+                          (endContext, re2)
+                              | "$"   `isSuffixOf` re1  = ([],                       init          re1)
+                              | "\\>" `isSuffixOf` re1  = ([parseRegex "(\\W\\A)?"], init . init $ re1)
+                              | otherwise               = ([mkStar mkDot],                         re1)
 
 -- ------------------------------------------------------------
diff --git a/src/Text/Regex/XMLSchema/String/Regex.hs b/src/Text/Regex/XMLSchema/String/Regex.hs
--- a/src/Text/Regex/XMLSchema/String/Regex.hs
+++ b/src/Text/Regex/XMLSchema/String/Regex.hs
@@ -64,7 +64,6 @@
     )
 where
 
-import Data.Maybe
 import Data.List        -- ( intercalate )
 
 import Text.Regex.XMLSchema.String.CharSet
diff --git a/src/Text/Regex/XMLSchema/String/RegexParser.hs b/src/Text/Regex/XMLSchema/String/RegexParser.hs
--- a/src/Text/Regex/XMLSchema/String/RegexParser.hs
+++ b/src/Text/Regex/XMLSchema/String/RegexParser.hs
@@ -71,7 +71,7 @@
     where
     branchList1
         = do
-          char '|'
+          _ <- char '|'
           orElseList
 
 orElseList      :: Parser Regex
@@ -84,7 +84,7 @@
     where
     orElseList1
         = do
-          try (string "{|}")
+          _ <- try (string "{|}")
           interleaveList
 
 interleaveList  :: Parser Regex
@@ -97,7 +97,7 @@
     where
     interleaveList1
         = do
-          try (string "{:}")
+          _ <- try (string "{:}")
           exorList
 
 exorList        :: Parser Regex
@@ -109,7 +109,7 @@
     where
     exorList1
         = do
-          try (string "{^}")
+          _ <- try (string "{^}")
           diffList
 
 diffList        :: Parser Regex
@@ -121,7 +121,7 @@
     where
     diffList1
         = do
-          try (string "{\\}")
+          _ <- try (string "{\\}")
           intersectList
 
 intersectList   :: Parser Regex
@@ -133,7 +133,7 @@
     where
     intersectList1
         = do
-          try (string "{&}")
+          _ <- try (string "{&}")
           seqList
 
 seqList         :: Parser Regex
@@ -163,9 +163,9 @@
         return $ mkRep 1 r )
       <|>
       try ( do
-            char '{'
+            _ <- char '{'
             res <- quantity r
-            char '}'
+            _ <- char '}'
             return res
           )
       <|>
@@ -255,11 +255,11 @@
         return $ mkSym . fromJust . lookup c $ pm )
       <|>
       ( do                      -- extension: \a represents the whole alphabet inclusive newline chars: \a == .|\n|\r
-        char 'a'
+        _ <- char 'a'
         return mkDot )
       <|>
       ( do                      -- extension: \A represents all words: \A == \a* or \A == (.|\n|\r)*
-        char 'A'
+        _ <- char 'A'
         return mkAll )
     where
     es = map fst pm
@@ -284,7 +284,7 @@
 catEsc  :: Parser Regex
 catEsc
     = do
-      char 'p'
+      _ <- char 'p'
       s <- between (char '{') (char '}') charProp
       return $ mkSym s
 
@@ -432,7 +432,7 @@
 
 xmlCharIncDash  :: Parser Regex
 xmlCharIncDash
-    = try ( do				-- dash is only allowed if not followed by a [, else charGroup differences do not parse correctly
+    = try ( do                          -- dash is only allowed if not followed by a [, else charGroup differences do not parse correctly
             _ <- char '-'
             notFollowedBy (char '[')
             return $ mkSym1 '-'
@@ -453,7 +453,7 @@
 wildCardEsc     :: Parser Regex
 wildCardEsc
     = do
-      char '.'
+      _ <- char '.'
       return . mkSym . compCS $ stringCS "\n\r"
 
 
diff --git a/src/Text/Regex/XMLSchema/String/Unicode/Blocks.hs b/src/Text/Regex/XMLSchema/String/Unicode/Blocks.hs
--- a/src/Text/Regex/XMLSchema/String/Unicode/Blocks.hs
+++ b/src/Text/Regex/XMLSchema/String/Unicode/Blocks.hs
@@ -25,203 +25,203 @@
 
 codeBlocks :: [(String, (Char, Char))]
 codeBlocks =
-    [ ( "BasicLatin",	( '\x0000', '\x007F') )
-    , ( "Latin-1Supplement",	( '\x0080', '\x00FF') )
-    , ( "LatinExtended-A",	( '\x0100', '\x017F') )
-    , ( "LatinExtended-B",	( '\x0180', '\x024F') )
-    , ( "IPAExtensions",	( '\x0250', '\x02AF') )
-    , ( "SpacingModifierLetters",	( '\x02B0', '\x02FF') )
-    , ( "CombiningDiacriticalMarks",	( '\x0300', '\x036F') )
-    , ( "GreekandCoptic",	( '\x0370', '\x03FF') )
-    , ( "Cyrillic",	( '\x0400', '\x04FF') )
-    , ( "CyrillicSupplement",	( '\x0500', '\x052F') )
-    , ( "Armenian",	( '\x0530', '\x058F') )
-    , ( "Hebrew",	( '\x0590', '\x05FF') )
-    , ( "Arabic",	( '\x0600', '\x06FF') )
-    , ( "Syriac",	( '\x0700', '\x074F') )
-    , ( "ArabicSupplement",	( '\x0750', '\x077F') )
-    , ( "Thaana",	( '\x0780', '\x07BF') )
-    , ( "NKo",	( '\x07C0', '\x07FF') )
-    , ( "Samaritan",	( '\x0800', '\x083F') )
-    , ( "Devanagari",	( '\x0900', '\x097F') )
-    , ( "Bengali",	( '\x0980', '\x09FF') )
-    , ( "Gurmukhi",	( '\x0A00', '\x0A7F') )
-    , ( "Gujarati",	( '\x0A80', '\x0AFF') )
-    , ( "Oriya",	( '\x0B00', '\x0B7F') )
-    , ( "Tamil",	( '\x0B80', '\x0BFF') )
-    , ( "Telugu",	( '\x0C00', '\x0C7F') )
-    , ( "Kannada",	( '\x0C80', '\x0CFF') )
-    , ( "Malayalam",	( '\x0D00', '\x0D7F') )
-    , ( "Sinhala",	( '\x0D80', '\x0DFF') )
-    , ( "Thai",	( '\x0E00', '\x0E7F') )
-    , ( "Lao",	( '\x0E80', '\x0EFF') )
-    , ( "Tibetan",	( '\x0F00', '\x0FFF') )
-    , ( "Myanmar",	( '\x1000', '\x109F') )
-    , ( "Georgian",	( '\x10A0', '\x10FF') )
-    , ( "HangulJamo",	( '\x1100', '\x11FF') )
-    , ( "Ethiopic",	( '\x1200', '\x137F') )
-    , ( "EthiopicSupplement",	( '\x1380', '\x139F') )
-    , ( "Cherokee",	( '\x13A0', '\x13FF') )
-    , ( "UnifiedCanadianAboriginalSyllabics",	( '\x1400', '\x167F') )
-    , ( "Ogham",	( '\x1680', '\x169F') )
-    , ( "Runic",	( '\x16A0', '\x16FF') )
-    , ( "Tagalog",	( '\x1700', '\x171F') )
-    , ( "Hanunoo",	( '\x1720', '\x173F') )
-    , ( "Buhid",	( '\x1740', '\x175F') )
-    , ( "Tagbanwa",	( '\x1760', '\x177F') )
-    , ( "Khmer",	( '\x1780', '\x17FF') )
-    , ( "Mongolian",	( '\x1800', '\x18AF') )
-    , ( "UnifiedCanadianAboriginalSyllabicsExtended",	( '\x18B0', '\x18FF') )
-    , ( "Limbu",	( '\x1900', '\x194F') )
-    , ( "TaiLe",	( '\x1950', '\x197F') )
-    , ( "NewTaiLue",	( '\x1980', '\x19DF') )
-    , ( "KhmerSymbols",	( '\x19E0', '\x19FF') )
-    , ( "Buginese",	( '\x1A00', '\x1A1F') )
-    , ( "TaiTham",	( '\x1A20', '\x1AAF') )
-    , ( "Balinese",	( '\x1B00', '\x1B7F') )
-    , ( "Sundanese",	( '\x1B80', '\x1BBF') )
-    , ( "Lepcha",	( '\x1C00', '\x1C4F') )
-    , ( "OlChiki",	( '\x1C50', '\x1C7F') )
-    , ( "VedicExtensions",	( '\x1CD0', '\x1CFF') )
-    , ( "PhoneticExtensions",	( '\x1D00', '\x1D7F') )
-    , ( "PhoneticExtensionsSupplement",	( '\x1D80', '\x1DBF') )
-    , ( "CombiningDiacriticalMarksSupplement",	( '\x1DC0', '\x1DFF') )
-    , ( "LatinExtendedAdditional",	( '\x1E00', '\x1EFF') )
-    , ( "GreekExtended",	( '\x1F00', '\x1FFF') )
-    , ( "GeneralPunctuation",	( '\x2000', '\x206F') )
-    , ( "SuperscriptsandSubscripts",	( '\x2070', '\x209F') )
-    , ( "CurrencySymbols",	( '\x20A0', '\x20CF') )
-    , ( "CombiningDiacriticalMarksforSymbols",	( '\x20D0', '\x20FF') )
-    , ( "LetterlikeSymbols",	( '\x2100', '\x214F') )
-    , ( "NumberForms",	( '\x2150', '\x218F') )
-    , ( "Arrows",	( '\x2190', '\x21FF') )
-    , ( "MathematicalOperators",	( '\x2200', '\x22FF') )
-    , ( "MiscellaneousTechnical",	( '\x2300', '\x23FF') )
-    , ( "ControlPictures",	( '\x2400', '\x243F') )
-    , ( "OpticalCharacterRecognition",	( '\x2440', '\x245F') )
-    , ( "EnclosedAlphanumerics",	( '\x2460', '\x24FF') )
-    , ( "BoxDrawing",	( '\x2500', '\x257F') )
-    , ( "BlockElements",	( '\x2580', '\x259F') )
-    , ( "GeometricShapes",	( '\x25A0', '\x25FF') )
-    , ( "MiscellaneousSymbols",	( '\x2600', '\x26FF') )
-    , ( "Dingbats",	( '\x2700', '\x27BF') )
-    , ( "MiscellaneousMathematicalSymbols-A",	( '\x27C0', '\x27EF') )
-    , ( "SupplementalArrows-A",	( '\x27F0', '\x27FF') )
-    , ( "BraillePatterns",	( '\x2800', '\x28FF') )
-    , ( "SupplementalArrows-B",	( '\x2900', '\x297F') )
-    , ( "MiscellaneousMathematicalSymbols-B",	( '\x2980', '\x29FF') )
-    , ( "SupplementalMathematicalOperators",	( '\x2A00', '\x2AFF') )
-    , ( "MiscellaneousSymbolsandArrows",	( '\x2B00', '\x2BFF') )
-    , ( "Glagolitic",	( '\x2C00', '\x2C5F') )
-    , ( "LatinExtended-C",	( '\x2C60', '\x2C7F') )
-    , ( "Coptic",	( '\x2C80', '\x2CFF') )
-    , ( "GeorgianSupplement",	( '\x2D00', '\x2D2F') )
-    , ( "Tifinagh",	( '\x2D30', '\x2D7F') )
-    , ( "EthiopicExtended",	( '\x2D80', '\x2DDF') )
-    , ( "CyrillicExtended-A",	( '\x2DE0', '\x2DFF') )
-    , ( "SupplementalPunctuation",	( '\x2E00', '\x2E7F') )
-    , ( "CJKRadicalsSupplement",	( '\x2E80', '\x2EFF') )
-    , ( "KangxiRadicals",	( '\x2F00', '\x2FDF') )
-    , ( "IdeographicDescriptionCharacters",	( '\x2FF0', '\x2FFF') )
-    , ( "CJKSymbolsandPunctuation",	( '\x3000', '\x303F') )
-    , ( "Hiragana",	( '\x3040', '\x309F') )
-    , ( "Katakana",	( '\x30A0', '\x30FF') )
-    , ( "Bopomofo",	( '\x3100', '\x312F') )
-    , ( "HangulCompatibilityJamo",	( '\x3130', '\x318F') )
-    , ( "Kanbun",	( '\x3190', '\x319F') )
-    , ( "BopomofoExtended",	( '\x31A0', '\x31BF') )
-    , ( "CJKStrokes",	( '\x31C0', '\x31EF') )
-    , ( "KatakanaPhoneticExtensions",	( '\x31F0', '\x31FF') )
-    , ( "EnclosedCJKLettersandMonths",	( '\x3200', '\x32FF') )
-    , ( "CJKCompatibility",	( '\x3300', '\x33FF') )
-    , ( "CJKUnifiedIdeographsExtensionA",	( '\x3400', '\x4DBF') )
-    , ( "YijingHexagramSymbols",	( '\x4DC0', '\x4DFF') )
-    , ( "CJKUnifiedIdeographs",	( '\x4E00', '\x9FFF') )
-    , ( "YiSyllables",	( '\xA000', '\xA48F') )
-    , ( "YiRadicals",	( '\xA490', '\xA4CF') )
-    , ( "Lisu",	( '\xA4D0', '\xA4FF') )
-    , ( "Vai",	( '\xA500', '\xA63F') )
-    , ( "CyrillicExtended-B",	( '\xA640', '\xA69F') )
-    , ( "Bamum",	( '\xA6A0', '\xA6FF') )
-    , ( "ModifierToneLetters",	( '\xA700', '\xA71F') )
-    , ( "LatinExtended-D",	( '\xA720', '\xA7FF') )
-    , ( "SylotiNagri",	( '\xA800', '\xA82F') )
-    , ( "CommonIndicNumberForms",	( '\xA830', '\xA83F') )
-    , ( "Phags-pa",	( '\xA840', '\xA87F') )
-    , ( "Saurashtra",	( '\xA880', '\xA8DF') )
-    , ( "DevanagariExtended",	( '\xA8E0', '\xA8FF') )
-    , ( "KayahLi",	( '\xA900', '\xA92F') )
-    , ( "Rejang",	( '\xA930', '\xA95F') )
-    , ( "HangulJamoExtended-A",	( '\xA960', '\xA97F') )
-    , ( "Javanese",	( '\xA980', '\xA9DF') )
-    , ( "Cham",	( '\xAA00', '\xAA5F') )
-    , ( "MyanmarExtended-A",	( '\xAA60', '\xAA7F') )
-    , ( "TaiViet",	( '\xAA80', '\xAADF') )
-    , ( "MeeteiMayek",	( '\xABC0', '\xABFF') )
-    , ( "HangulSyllables",	( '\xAC00', '\xD7AF') )
-    , ( "HangulJamoExtended-B",	( '\xD7B0', '\xD7FF') )
-    , ( "HighSurrogates",	( '\xD800', '\xDB7F') )
-    , ( "HighPrivateUseSurrogates",	( '\xDB80', '\xDBFF') )
-    , ( "LowSurrogates",	( '\xDC00', '\xDFFF') )
-    , ( "PrivateUseArea",	( '\xE000', '\xF8FF') )
-    , ( "CJKCompatibilityIdeographs",	( '\xF900', '\xFAFF') )
-    , ( "AlphabeticPresentationForms",	( '\xFB00', '\xFB4F') )
-    , ( "ArabicPresentationForms-A",	( '\xFB50', '\xFDFF') )
-    , ( "VariationSelectors",	( '\xFE00', '\xFE0F') )
-    , ( "VerticalForms",	( '\xFE10', '\xFE1F') )
-    , ( "CombiningHalfMarks",	( '\xFE20', '\xFE2F') )
-    , ( "CJKCompatibilityForms",	( '\xFE30', '\xFE4F') )
-    , ( "SmallFormVariants",	( '\xFE50', '\xFE6F') )
-    , ( "ArabicPresentationForms-B",	( '\xFE70', '\xFEFF') )
-    , ( "HalfwidthandFullwidthForms",	( '\xFF00', '\xFFEF') )
-    , ( "Specials",	( '\xFFF0', '\xFFFF') )
-    , ( "LinearBSyllabary",	( '\x10000', '\x1007F') )
-    , ( "LinearBIdeograms",	( '\x10080', '\x100FF') )
-    , ( "AegeanNumbers",	( '\x10100', '\x1013F') )
-    , ( "AncientGreekNumbers",	( '\x10140', '\x1018F') )
-    , ( "AncientSymbols",	( '\x10190', '\x101CF') )
-    , ( "PhaistosDisc",	( '\x101D0', '\x101FF') )
-    , ( "Lycian",	( '\x10280', '\x1029F') )
-    , ( "Carian",	( '\x102A0', '\x102DF') )
-    , ( "OldItalic",	( '\x10300', '\x1032F') )
-    , ( "Gothic",	( '\x10330', '\x1034F') )
-    , ( "Ugaritic",	( '\x10380', '\x1039F') )
-    , ( "OldPersian",	( '\x103A0', '\x103DF') )
-    , ( "Deseret",	( '\x10400', '\x1044F') )
-    , ( "Shavian",	( '\x10450', '\x1047F') )
-    , ( "Osmanya",	( '\x10480', '\x104AF') )
-    , ( "CypriotSyllabary",	( '\x10800', '\x1083F') )
-    , ( "ImperialAramaic",	( '\x10840', '\x1085F') )
-    , ( "Phoenician",	( '\x10900', '\x1091F') )
-    , ( "Lydian",	( '\x10920', '\x1093F') )
-    , ( "Kharoshthi",	( '\x10A00', '\x10A5F') )
-    , ( "OldSouthArabian",	( '\x10A60', '\x10A7F') )
-    , ( "Avestan",	( '\x10B00', '\x10B3F') )
-    , ( "InscriptionalParthian",	( '\x10B40', '\x10B5F') )
-    , ( "InscriptionalPahlavi",	( '\x10B60', '\x10B7F') )
-    , ( "OldTurkic",	( '\x10C00', '\x10C4F') )
-    , ( "RumiNumeralSymbols",	( '\x10E60', '\x10E7F') )
-    , ( "Kaithi",	( '\x11080', '\x110CF') )
-    , ( "Cuneiform",	( '\x12000', '\x123FF') )
-    , ( "CuneiformNumbersandPunctuation",	( '\x12400', '\x1247F') )
-    , ( "EgyptianHieroglyphs",	( '\x13000', '\x1342F') )
-    , ( "ByzantineMusicalSymbols",	( '\x1D000', '\x1D0FF') )
-    , ( "MusicalSymbols",	( '\x1D100', '\x1D1FF') )
-    , ( "AncientGreekMusicalNotation",	( '\x1D200', '\x1D24F') )
-    , ( "TaiXuanJingSymbols",	( '\x1D300', '\x1D35F') )
-    , ( "CountingRodNumerals",	( '\x1D360', '\x1D37F') )
-    , ( "MathematicalAlphanumericSymbols",	( '\x1D400', '\x1D7FF') )
-    , ( "MahjongTiles",	( '\x1F000', '\x1F02F') )
-    , ( "DominoTiles",	( '\x1F030', '\x1F09F') )
-    , ( "EnclosedAlphanumericSupplement",	( '\x1F100', '\x1F1FF') )
-    , ( "EnclosedIdeographicSupplement",	( '\x1F200', '\x1F2FF') )
-    , ( "CJKUnifiedIdeographsExtensionB",	( '\x20000', '\x2A6DF') )
-    , ( "CJKUnifiedIdeographsExtensionC",	( '\x2A700', '\x2B73F') )
-    , ( "CJKCompatibilityIdeographsSupplement",	( '\x2F800', '\x2FA1F') )
-    , ( "Tags",	( '\xE0000', '\xE007F') )
-    , ( "VariationSelectorsSupplement",	( '\xE0100', '\xE01EF') )
-    , ( "SupplementaryPrivateUseArea-A",	( '\xF0000', '\xFFFFF') )
-    , ( "SupplementaryPrivateUseArea-B",	( '\x100000', '\x10FFFF') )
+    [ ( "BasicLatin",   ( '\x0000', '\x007F') )
+    , ( "Latin-1Supplement",    ( '\x0080', '\x00FF') )
+    , ( "LatinExtended-A",      ( '\x0100', '\x017F') )
+    , ( "LatinExtended-B",      ( '\x0180', '\x024F') )
+    , ( "IPAExtensions",        ( '\x0250', '\x02AF') )
+    , ( "SpacingModifierLetters",       ( '\x02B0', '\x02FF') )
+    , ( "CombiningDiacriticalMarks",    ( '\x0300', '\x036F') )
+    , ( "GreekandCoptic",       ( '\x0370', '\x03FF') )
+    , ( "Cyrillic",     ( '\x0400', '\x04FF') )
+    , ( "CyrillicSupplement",   ( '\x0500', '\x052F') )
+    , ( "Armenian",     ( '\x0530', '\x058F') )
+    , ( "Hebrew",       ( '\x0590', '\x05FF') )
+    , ( "Arabic",       ( '\x0600', '\x06FF') )
+    , ( "Syriac",       ( '\x0700', '\x074F') )
+    , ( "ArabicSupplement",     ( '\x0750', '\x077F') )
+    , ( "Thaana",       ( '\x0780', '\x07BF') )
+    , ( "NKo",  ( '\x07C0', '\x07FF') )
+    , ( "Samaritan",    ( '\x0800', '\x083F') )
+    , ( "Devanagari",   ( '\x0900', '\x097F') )
+    , ( "Bengali",      ( '\x0980', '\x09FF') )
+    , ( "Gurmukhi",     ( '\x0A00', '\x0A7F') )
+    , ( "Gujarati",     ( '\x0A80', '\x0AFF') )
+    , ( "Oriya",        ( '\x0B00', '\x0B7F') )
+    , ( "Tamil",        ( '\x0B80', '\x0BFF') )
+    , ( "Telugu",       ( '\x0C00', '\x0C7F') )
+    , ( "Kannada",      ( '\x0C80', '\x0CFF') )
+    , ( "Malayalam",    ( '\x0D00', '\x0D7F') )
+    , ( "Sinhala",      ( '\x0D80', '\x0DFF') )
+    , ( "Thai", ( '\x0E00', '\x0E7F') )
+    , ( "Lao",  ( '\x0E80', '\x0EFF') )
+    , ( "Tibetan",      ( '\x0F00', '\x0FFF') )
+    , ( "Myanmar",      ( '\x1000', '\x109F') )
+    , ( "Georgian",     ( '\x10A0', '\x10FF') )
+    , ( "HangulJamo",   ( '\x1100', '\x11FF') )
+    , ( "Ethiopic",     ( '\x1200', '\x137F') )
+    , ( "EthiopicSupplement",   ( '\x1380', '\x139F') )
+    , ( "Cherokee",     ( '\x13A0', '\x13FF') )
+    , ( "UnifiedCanadianAboriginalSyllabics",   ( '\x1400', '\x167F') )
+    , ( "Ogham",        ( '\x1680', '\x169F') )
+    , ( "Runic",        ( '\x16A0', '\x16FF') )
+    , ( "Tagalog",      ( '\x1700', '\x171F') )
+    , ( "Hanunoo",      ( '\x1720', '\x173F') )
+    , ( "Buhid",        ( '\x1740', '\x175F') )
+    , ( "Tagbanwa",     ( '\x1760', '\x177F') )
+    , ( "Khmer",        ( '\x1780', '\x17FF') )
+    , ( "Mongolian",    ( '\x1800', '\x18AF') )
+    , ( "UnifiedCanadianAboriginalSyllabicsExtended",   ( '\x18B0', '\x18FF') )
+    , ( "Limbu",        ( '\x1900', '\x194F') )
+    , ( "TaiLe",        ( '\x1950', '\x197F') )
+    , ( "NewTaiLue",    ( '\x1980', '\x19DF') )
+    , ( "KhmerSymbols", ( '\x19E0', '\x19FF') )
+    , ( "Buginese",     ( '\x1A00', '\x1A1F') )
+    , ( "TaiTham",      ( '\x1A20', '\x1AAF') )
+    , ( "Balinese",     ( '\x1B00', '\x1B7F') )
+    , ( "Sundanese",    ( '\x1B80', '\x1BBF') )
+    , ( "Lepcha",       ( '\x1C00', '\x1C4F') )
+    , ( "OlChiki",      ( '\x1C50', '\x1C7F') )
+    , ( "VedicExtensions",      ( '\x1CD0', '\x1CFF') )
+    , ( "PhoneticExtensions",   ( '\x1D00', '\x1D7F') )
+    , ( "PhoneticExtensionsSupplement", ( '\x1D80', '\x1DBF') )
+    , ( "CombiningDiacriticalMarksSupplement",  ( '\x1DC0', '\x1DFF') )
+    , ( "LatinExtendedAdditional",      ( '\x1E00', '\x1EFF') )
+    , ( "GreekExtended",        ( '\x1F00', '\x1FFF') )
+    , ( "GeneralPunctuation",   ( '\x2000', '\x206F') )
+    , ( "SuperscriptsandSubscripts",    ( '\x2070', '\x209F') )
+    , ( "CurrencySymbols",      ( '\x20A0', '\x20CF') )
+    , ( "CombiningDiacriticalMarksforSymbols",  ( '\x20D0', '\x20FF') )
+    , ( "LetterlikeSymbols",    ( '\x2100', '\x214F') )
+    , ( "NumberForms",  ( '\x2150', '\x218F') )
+    , ( "Arrows",       ( '\x2190', '\x21FF') )
+    , ( "MathematicalOperators",        ( '\x2200', '\x22FF') )
+    , ( "MiscellaneousTechnical",       ( '\x2300', '\x23FF') )
+    , ( "ControlPictures",      ( '\x2400', '\x243F') )
+    , ( "OpticalCharacterRecognition",  ( '\x2440', '\x245F') )
+    , ( "EnclosedAlphanumerics",        ( '\x2460', '\x24FF') )
+    , ( "BoxDrawing",   ( '\x2500', '\x257F') )
+    , ( "BlockElements",        ( '\x2580', '\x259F') )
+    , ( "GeometricShapes",      ( '\x25A0', '\x25FF') )
+    , ( "MiscellaneousSymbols", ( '\x2600', '\x26FF') )
+    , ( "Dingbats",     ( '\x2700', '\x27BF') )
+    , ( "MiscellaneousMathematicalSymbols-A",   ( '\x27C0', '\x27EF') )
+    , ( "SupplementalArrows-A", ( '\x27F0', '\x27FF') )
+    , ( "BraillePatterns",      ( '\x2800', '\x28FF') )
+    , ( "SupplementalArrows-B", ( '\x2900', '\x297F') )
+    , ( "MiscellaneousMathematicalSymbols-B",   ( '\x2980', '\x29FF') )
+    , ( "SupplementalMathematicalOperators",    ( '\x2A00', '\x2AFF') )
+    , ( "MiscellaneousSymbolsandArrows",        ( '\x2B00', '\x2BFF') )
+    , ( "Glagolitic",   ( '\x2C00', '\x2C5F') )
+    , ( "LatinExtended-C",      ( '\x2C60', '\x2C7F') )
+    , ( "Coptic",       ( '\x2C80', '\x2CFF') )
+    , ( "GeorgianSupplement",   ( '\x2D00', '\x2D2F') )
+    , ( "Tifinagh",     ( '\x2D30', '\x2D7F') )
+    , ( "EthiopicExtended",     ( '\x2D80', '\x2DDF') )
+    , ( "CyrillicExtended-A",   ( '\x2DE0', '\x2DFF') )
+    , ( "SupplementalPunctuation",      ( '\x2E00', '\x2E7F') )
+    , ( "CJKRadicalsSupplement",        ( '\x2E80', '\x2EFF') )
+    , ( "KangxiRadicals",       ( '\x2F00', '\x2FDF') )
+    , ( "IdeographicDescriptionCharacters",     ( '\x2FF0', '\x2FFF') )
+    , ( "CJKSymbolsandPunctuation",     ( '\x3000', '\x303F') )
+    , ( "Hiragana",     ( '\x3040', '\x309F') )
+    , ( "Katakana",     ( '\x30A0', '\x30FF') )
+    , ( "Bopomofo",     ( '\x3100', '\x312F') )
+    , ( "HangulCompatibilityJamo",      ( '\x3130', '\x318F') )
+    , ( "Kanbun",       ( '\x3190', '\x319F') )
+    , ( "BopomofoExtended",     ( '\x31A0', '\x31BF') )
+    , ( "CJKStrokes",   ( '\x31C0', '\x31EF') )
+    , ( "KatakanaPhoneticExtensions",   ( '\x31F0', '\x31FF') )
+    , ( "EnclosedCJKLettersandMonths",  ( '\x3200', '\x32FF') )
+    , ( "CJKCompatibility",     ( '\x3300', '\x33FF') )
+    , ( "CJKUnifiedIdeographsExtensionA",       ( '\x3400', '\x4DBF') )
+    , ( "YijingHexagramSymbols",        ( '\x4DC0', '\x4DFF') )
+    , ( "CJKUnifiedIdeographs", ( '\x4E00', '\x9FFF') )
+    , ( "YiSyllables",  ( '\xA000', '\xA48F') )
+    , ( "YiRadicals",   ( '\xA490', '\xA4CF') )
+    , ( "Lisu", ( '\xA4D0', '\xA4FF') )
+    , ( "Vai",  ( '\xA500', '\xA63F') )
+    , ( "CyrillicExtended-B",   ( '\xA640', '\xA69F') )
+    , ( "Bamum",        ( '\xA6A0', '\xA6FF') )
+    , ( "ModifierToneLetters",  ( '\xA700', '\xA71F') )
+    , ( "LatinExtended-D",      ( '\xA720', '\xA7FF') )
+    , ( "SylotiNagri",  ( '\xA800', '\xA82F') )
+    , ( "CommonIndicNumberForms",       ( '\xA830', '\xA83F') )
+    , ( "Phags-pa",     ( '\xA840', '\xA87F') )
+    , ( "Saurashtra",   ( '\xA880', '\xA8DF') )
+    , ( "DevanagariExtended",   ( '\xA8E0', '\xA8FF') )
+    , ( "KayahLi",      ( '\xA900', '\xA92F') )
+    , ( "Rejang",       ( '\xA930', '\xA95F') )
+    , ( "HangulJamoExtended-A", ( '\xA960', '\xA97F') )
+    , ( "Javanese",     ( '\xA980', '\xA9DF') )
+    , ( "Cham", ( '\xAA00', '\xAA5F') )
+    , ( "MyanmarExtended-A",    ( '\xAA60', '\xAA7F') )
+    , ( "TaiViet",      ( '\xAA80', '\xAADF') )
+    , ( "MeeteiMayek",  ( '\xABC0', '\xABFF') )
+    , ( "HangulSyllables",      ( '\xAC00', '\xD7AF') )
+    , ( "HangulJamoExtended-B", ( '\xD7B0', '\xD7FF') )
+    , ( "HighSurrogates",       ( '\xD800', '\xDB7F') )
+    , ( "HighPrivateUseSurrogates",     ( '\xDB80', '\xDBFF') )
+    , ( "LowSurrogates",        ( '\xDC00', '\xDFFF') )
+    , ( "PrivateUseArea",       ( '\xE000', '\xF8FF') )
+    , ( "CJKCompatibilityIdeographs",   ( '\xF900', '\xFAFF') )
+    , ( "AlphabeticPresentationForms",  ( '\xFB00', '\xFB4F') )
+    , ( "ArabicPresentationForms-A",    ( '\xFB50', '\xFDFF') )
+    , ( "VariationSelectors",   ( '\xFE00', '\xFE0F') )
+    , ( "VerticalForms",        ( '\xFE10', '\xFE1F') )
+    , ( "CombiningHalfMarks",   ( '\xFE20', '\xFE2F') )
+    , ( "CJKCompatibilityForms",        ( '\xFE30', '\xFE4F') )
+    , ( "SmallFormVariants",    ( '\xFE50', '\xFE6F') )
+    , ( "ArabicPresentationForms-B",    ( '\xFE70', '\xFEFF') )
+    , ( "HalfwidthandFullwidthForms",   ( '\xFF00', '\xFFEF') )
+    , ( "Specials",     ( '\xFFF0', '\xFFFF') )
+    , ( "LinearBSyllabary",     ( '\x10000', '\x1007F') )
+    , ( "LinearBIdeograms",     ( '\x10080', '\x100FF') )
+    , ( "AegeanNumbers",        ( '\x10100', '\x1013F') )
+    , ( "AncientGreekNumbers",  ( '\x10140', '\x1018F') )
+    , ( "AncientSymbols",       ( '\x10190', '\x101CF') )
+    , ( "PhaistosDisc", ( '\x101D0', '\x101FF') )
+    , ( "Lycian",       ( '\x10280', '\x1029F') )
+    , ( "Carian",       ( '\x102A0', '\x102DF') )
+    , ( "OldItalic",    ( '\x10300', '\x1032F') )
+    , ( "Gothic",       ( '\x10330', '\x1034F') )
+    , ( "Ugaritic",     ( '\x10380', '\x1039F') )
+    , ( "OldPersian",   ( '\x103A0', '\x103DF') )
+    , ( "Deseret",      ( '\x10400', '\x1044F') )
+    , ( "Shavian",      ( '\x10450', '\x1047F') )
+    , ( "Osmanya",      ( '\x10480', '\x104AF') )
+    , ( "CypriotSyllabary",     ( '\x10800', '\x1083F') )
+    , ( "ImperialAramaic",      ( '\x10840', '\x1085F') )
+    , ( "Phoenician",   ( '\x10900', '\x1091F') )
+    , ( "Lydian",       ( '\x10920', '\x1093F') )
+    , ( "Kharoshthi",   ( '\x10A00', '\x10A5F') )
+    , ( "OldSouthArabian",      ( '\x10A60', '\x10A7F') )
+    , ( "Avestan",      ( '\x10B00', '\x10B3F') )
+    , ( "InscriptionalParthian",        ( '\x10B40', '\x10B5F') )
+    , ( "InscriptionalPahlavi", ( '\x10B60', '\x10B7F') )
+    , ( "OldTurkic",    ( '\x10C00', '\x10C4F') )
+    , ( "RumiNumeralSymbols",   ( '\x10E60', '\x10E7F') )
+    , ( "Kaithi",       ( '\x11080', '\x110CF') )
+    , ( "Cuneiform",    ( '\x12000', '\x123FF') )
+    , ( "CuneiformNumbersandPunctuation",       ( '\x12400', '\x1247F') )
+    , ( "EgyptianHieroglyphs",  ( '\x13000', '\x1342F') )
+    , ( "ByzantineMusicalSymbols",      ( '\x1D000', '\x1D0FF') )
+    , ( "MusicalSymbols",       ( '\x1D100', '\x1D1FF') )
+    , ( "AncientGreekMusicalNotation",  ( '\x1D200', '\x1D24F') )
+    , ( "TaiXuanJingSymbols",   ( '\x1D300', '\x1D35F') )
+    , ( "CountingRodNumerals",  ( '\x1D360', '\x1D37F') )
+    , ( "MathematicalAlphanumericSymbols",      ( '\x1D400', '\x1D7FF') )
+    , ( "MahjongTiles", ( '\x1F000', '\x1F02F') )
+    , ( "DominoTiles",  ( '\x1F030', '\x1F09F') )
+    , ( "EnclosedAlphanumericSupplement",       ( '\x1F100', '\x1F1FF') )
+    , ( "EnclosedIdeographicSupplement",        ( '\x1F200', '\x1F2FF') )
+    , ( "CJKUnifiedIdeographsExtensionB",       ( '\x20000', '\x2A6DF') )
+    , ( "CJKUnifiedIdeographsExtensionC",       ( '\x2A700', '\x2B73F') )
+    , ( "CJKCompatibilityIdeographsSupplement", ( '\x2F800', '\x2FA1F') )
+    , ( "Tags", ( '\xE0000', '\xE007F') )
+    , ( "VariationSelectorsSupplement", ( '\xE0100', '\xE01EF') )
+    , ( "SupplementaryPrivateUseArea-A",        ( '\xF0000', '\xFFFFF') )
+    , ( "SupplementaryPrivateUseArea-B",        ( '\x100000', '\x10FFFF') )
     ]
 
 -- ------------------------------------------------------------
diff --git a/src/Text/Regex/XMLSchema/String/Unicode/Blocks.txt b/src/Text/Regex/XMLSchema/String/Unicode/Blocks.txt
--- a/src/Text/Regex/XMLSchema/String/Unicode/Blocks.txt
+++ b/src/Text/Regex/XMLSchema/String/Unicode/Blocks.txt
@@ -17,7 +17,7 @@
 # Note:   When comparing block names, casing, whitespace, hyphens,
 #         and underbars are ignored.
 #         For example, "Latin Extended-A" and "latin extended a" are equivalent.
-#         For more information on the comparison of property values, 
+#         For more information on the comparison of property values,
 #            see UAX #44: http://www.unicode.org/reports/tr44/
 #
 #  All code points not explicitly listed for Block
diff --git a/src/Text/Regex/XMLSchema/String/Unicode/CharProps.hs b/src/Text/Regex/XMLSchema/String/Unicode/CharProps.hs
--- a/src/Text/Regex/XMLSchema/String/Unicode/CharProps.hs
+++ b/src/Text/Regex/XMLSchema/String/Unicode/CharProps.hs
@@ -62,7 +62,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeC	:: CharSet
+isUnicodeC      :: CharSet
 isUnicodeC
   = [ ('\NUL','\US')
     , ('\DEL','\159')
@@ -94,7 +94,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeCc	:: CharSet
+isUnicodeCc     :: CharSet
 isUnicodeCc
   = [ ('\NUL','\US')
     , ('\DEL','\159')
@@ -102,7 +102,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeCf	:: CharSet
+isUnicodeCf     :: CharSet
 isUnicodeCf
   = [ ('\173','\173')
     , ('\1536','\1539')
@@ -123,7 +123,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeCo	:: CharSet
+isUnicodeCo     :: CharSet
 isUnicodeCo
   = [ ('\57344','\57344')
     , ('\63743','\63743')
@@ -135,7 +135,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeCs	:: CharSet
+isUnicodeCs     :: CharSet
 isUnicodeCs
   = [ ('\55296','\55296')
     , ('\56191','\56192')
@@ -145,7 +145,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeL	:: CharSet
+isUnicodeL      :: CharSet
 isUnicodeL
   = [ ('A','Z')
     , ('a','z')
@@ -578,7 +578,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeLl	:: CharSet
+isUnicodeLl     :: CharSet
 isUnicodeLl
   = [ ('a','z')
     , ('\170','\170')
@@ -1183,7 +1183,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeLm	:: CharSet
+isUnicodeLm     :: CharSet
 isUnicodeLm
   = [ ('\688','\705')
     , ('\710','\721')
@@ -1238,7 +1238,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeLo	:: CharSet
+isUnicodeLo     :: CharSet
 isUnicodeLo
   = [ ('\443','\443')
     , ('\448','\451')
@@ -1560,7 +1560,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeLt	:: CharSet
+isUnicodeLt     :: CharSet
 isUnicodeLt
   = [ ('\453','\453')
     , ('\456','\456')
@@ -1576,7 +1576,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeLu	:: CharSet
+isUnicodeLu     :: CharSet
 isUnicodeLu
   = [ ('A','Z')
     , ('\192','\214')
@@ -2176,7 +2176,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeM	:: CharSet
+isUnicodeM      :: CharSet
 isUnicodeM
   = [ ('\768','\879')
     , ('\1155','\1161')
@@ -2370,7 +2370,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeMc	:: CharSet
+isUnicodeMc     :: CharSet
 isUnicodeMc
   = [ ('\2307','\2307')
     , ('\2366','\2368')
@@ -2482,7 +2482,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeMe	:: CharSet
+isUnicodeMe     :: CharSet
 isUnicodeMe
   = [ ('\1160','\1161')
     , ('\1758','\1758')
@@ -2493,7 +2493,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeMn	:: CharSet
+isUnicodeMn     :: CharSet
 isUnicodeMn
   = [ ('\768','\879')
     , ('\1155','\1159')
@@ -2693,7 +2693,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeN	:: CharSet
+isUnicodeN      :: CharSet
 isUnicodeN
   = [ ('0','9')
     , ('\178','\179')
@@ -2780,7 +2780,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeNd	:: CharSet
+isUnicodeNd     :: CharSet
 isUnicodeNd
   = [ ('0','9')
     , ('\1632','\1641')
@@ -2823,7 +2823,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeNl	:: CharSet
+isUnicodeNl     :: CharSet
 isUnicodeNl
   = [ ('\5870','\5872')
     , ('\8544','\8578')
@@ -2841,7 +2841,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeNo	:: CharSet
+isUnicodeNo     :: CharSet
 isUnicodeNo
   = [ ('\178','\179')
     , ('\185','\185')
@@ -2885,7 +2885,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeP	:: CharSet
+isUnicodeP      :: CharSet
 isUnicodeP
   = [ ('!','#')
     , ('%','*')
@@ -3020,7 +3020,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodePc	:: CharSet
+isUnicodePc     :: CharSet
 isUnicodePc
   = [ ('_','_')
     , ('\8255','\8256')
@@ -3032,7 +3032,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodePd	:: CharSet
+isUnicodePd     :: CharSet
 isUnicodePd
   = [ ('-','-')
     , ('\1418','\1418')
@@ -3053,7 +3053,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodePe	:: CharSet
+isUnicodePe     :: CharSet
 isUnicodePe
   = [ (')',')')
     , (']',']')
@@ -3129,7 +3129,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodePf	:: CharSet
+isUnicodePf     :: CharSet
 isUnicodePf
   = [ ('\187','\187')
     , ('\8217','\8217')
@@ -3145,7 +3145,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodePi	:: CharSet
+isUnicodePi     :: CharSet
 isUnicodePi
   = [ ('\171','\171')
     , ('\8216','\8216')
@@ -3162,7 +3162,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodePo	:: CharSet
+isUnicodePo     :: CharSet
 isUnicodePo
   = [ ('!','#')
     , ('%','\'')
@@ -3292,7 +3292,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodePs	:: CharSet
+isUnicodePs     :: CharSet
 isUnicodePs
   = [ ('(','(')
     , ('[','[')
@@ -3370,7 +3370,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeS	:: CharSet
+isUnicodeS      :: CharSet
 isUnicodeS
   = [ ('$','$')
     , ('+','+')
@@ -3574,7 +3574,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeSc	:: CharSet
+isUnicodeSc     :: CharSet
 isUnicodeSc
   = [ ('$','$')
     , ('\162','\165')
@@ -3596,7 +3596,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeSk	:: CharSet
+isUnicodeSk     :: CharSet
 isUnicodeSk
   = [ ('^','^')
     , ('`','`')
@@ -3628,7 +3628,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeSm	:: CharSet
+isUnicodeSm     :: CharSet
 isUnicodeSm
   = [ ('+','+')
     , ('<','>')
@@ -3699,7 +3699,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeSo	:: CharSet
+isUnicodeSo     :: CharSet
 isUnicodeSo
   = [ ('\166','\167')
     , ('\169','\169')
@@ -3859,7 +3859,7 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeZ	:: CharSet
+isUnicodeZ      :: CharSet
 isUnicodeZ
   = [ (' ',' ')
     , ('\160','\160')
@@ -3874,21 +3874,21 @@
 
 -- ------------------------------------------------------------
 
-isUnicodeZl	:: CharSet
+isUnicodeZl     :: CharSet
 isUnicodeZl
   = [ ('\8232','\8232')
     ]
 
 -- ------------------------------------------------------------
 
-isUnicodeZp	:: CharSet
+isUnicodeZp     :: CharSet
 isUnicodeZp
   = [ ('\8233','\8233')
     ]
 
 -- ------------------------------------------------------------
 
-isUnicodeZs	:: CharSet
+isUnicodeZs     :: CharSet
 isUnicodeZs
   = [ (' ',' ')
     , ('\160','\160')
diff --git a/src/Text/Regex/XMLSchema/String/Unicode/GenBlocks.hs b/src/Text/Regex/XMLSchema/String/Unicode/GenBlocks.hs
--- a/src/Text/Regex/XMLSchema/String/Unicode/GenBlocks.hs
+++ b/src/Text/Regex/XMLSchema/String/Unicode/GenBlocks.hs
@@ -89,6 +89,6 @@
                            'a' <= c && c <= 'z' ||
                            '0' <= c && c <= '9' ||
                            '-' == c
-            
+
 cmt :: String
 cmt = "-- " ++ replicate 60 '-'
diff --git a/src/Text/Regex/XMLSchema/String/XML/CharProps.hs b/src/Text/Regex/XMLSchema/String/XML/CharProps.hs
--- a/src/Text/Regex/XMLSchema/String/XML/CharProps.hs
+++ b/src/Text/Regex/XMLSchema/String/XML/CharProps.hs
@@ -41,7 +41,7 @@
 -- |
 -- checking for valid XML characters
 
-isXmlChar		:: CharSet
+isXmlChar               :: CharSet
 isXmlChar
     = [ ('\x0009', '\x000A')
       , ('\x000D', '\x000D')
@@ -53,7 +53,7 @@
 -- |
 -- checking for XML space character: \\\n, \\\r, \\\t and \" \"
 
-isXmlSpaceChar		:: CharSet
+isXmlSpaceChar          :: CharSet
 isXmlSpaceChar
     = stringCS ['\x20', '\x09', '\x0D', '\x0A']
 
@@ -62,22 +62,22 @@
 --
 -- see also : 'isXmlSpaceChar'
 
-isXml11SpaceChar		:: CharSet
+isXml11SpaceChar                :: CharSet
 isXml11SpaceChar
     = stringCS ['\x20', '\x09', '\x0D', '\x0A', '\x85', '\x2028']
 
 -- |
 -- checking for XML name character
 
-isXmlNameChar		:: CharSet
+isXmlNameChar           :: CharSet
 isXmlNameChar
     = isXmlLetter
       `unionCS`
       isXmlDigit
       `unionCS`
-      (singleCS '\x2D' `unionCS` singleCS '\x2E')		-- '-' | '.'
+      (singleCS '\x2D' `unionCS` singleCS '\x2E')               -- '-' | '.'
       `unionCS`
-      (singleCS '\x3A' `unionCS` singleCS '\x5F')		-- Letter | ':' | '_'
+      (singleCS '\x3A' `unionCS` singleCS '\x5F')               -- Letter | ':' | '_'
       `unionCS`
       isXmlCombiningChar
       `unionCS`
@@ -88,20 +88,20 @@
 --
 -- see also : 'isXmlNameChar'
 
-isXmlNameStartChar		:: CharSet
+isXmlNameStartChar              :: CharSet
 isXmlNameStartChar
     = isXmlLetter
       `unionCS`
       singleCS '\x3A'
       `unionCS`
-      singleCS '\x5F'		-- Letter | ':' | '_'
+      singleCS '\x5F'           -- Letter | ':' | '_'
 
 -- |
 -- checking for XML NCName character: no \":\" allowed
 --
 -- see also : 'isXmlNameChar'
 
-isXmlNCNameChar			:: CharSet
+isXmlNCNameChar                 :: CharSet
 isXmlNCNameChar
     = isXmlNameChar
       `diffCS`
@@ -112,7 +112,7 @@
 --
 -- see also : 'isXmlNameChar', 'isXmlNCNameChar'
 
-isXmlNCNameStartChar		:: CharSet
+isXmlNCNameStartChar            :: CharSet
 isXmlNCNameStartChar
     = isXmlNameStartChar
       `diffCS`
@@ -121,7 +121,7 @@
 -- |
 -- checking for XML public id character
 
-isXmlPubidChar		:: CharSet
+isXmlPubidChar          :: CharSet
 isXmlPubidChar
     = rangeCS '0' '9'
       `unionCS`
@@ -134,7 +134,7 @@
 -- |
 -- checking for XML letter
 
-isXmlLetter		:: CharSet
+isXmlLetter             :: CharSet
 isXmlLetter
     = isXmlBaseChar
       `unionCS`
@@ -143,7 +143,7 @@
 -- |
 -- checking for XML base charater
 
-isXmlBaseChar		:: CharSet
+isXmlBaseChar           :: CharSet
 isXmlBaseChar
     = [ ('\x0041', '\x005A')
       , ('\x0061', '\x007A')
@@ -351,7 +351,7 @@
 -- |
 -- checking for XML ideographic charater
 
-isXmlIdeographicChar	:: CharSet
+isXmlIdeographicChar    :: CharSet
 isXmlIdeographicChar
     = [ ('\x3007', '\x3007')
       , ('\x3021', '\x3029')
@@ -361,7 +361,7 @@
 -- |
 -- checking for XML combining charater
 
-isXmlCombiningChar	:: CharSet
+isXmlCombiningChar      :: CharSet
 isXmlCombiningChar
     = [ ('\x0300', '\x0345')
       , ('\x0360', '\x0361')
@@ -463,7 +463,7 @@
 -- |
 -- checking for XML digit
 
-isXmlDigit		:: CharSet
+isXmlDigit              :: CharSet
 isXmlDigit
     = [ ('\x0030', '\x0039')
       , ('\x0660', '\x0669')
@@ -485,7 +485,7 @@
 -- |
 -- checking for XML extender
 
-isXmlExtender		:: CharSet
+isXmlExtender           :: CharSet
 isXmlExtender
     = [ ('\x00B7', '\x00B7')
       , ('\x02D0', '\x02D0')
@@ -511,7 +511,7 @@
 -- They are either control characters or permanently undefined Unicode characters:
 
 
-isXmlControlOrPermanentlyUndefined	:: CharSet
+isXmlControlOrPermanentlyUndefined      :: CharSet
 isXmlControlOrPermanentlyUndefined
     = [ ('\x7F', '\x84')
       , ('\x86', '\x9F')
