diff --git a/bin/Class.hs b/bin/Class.hs
--- a/bin/Class.hs
+++ b/bin/Class.hs
@@ -28,7 +28,7 @@
 	forallT [PlainTV pos, PlainTV drv] (cxt []) $
 		stringT `arrT` stringT `arrT` stringT `arrT` varT drv `arrT`
 			listT `appT` stringT `arrT` varT pos `arrT` 
-		varT (mkName "ParseError") `appT` varT pos `appT` varT drv
+		conT (mkName "ParseError") `appT` varT pos `appT` varT drv
 	where
 	pos = mkName "pos"
 	drv = mkName "drv"
@@ -40,14 +40,13 @@
 parseErrorT :: Bool -> DecQ
 parseErrorT _ = flip (dataD (cxt []) (mkName "ParseError")
 		[PlainTV $ mkName "pos", PlainTV $ mkName "drv"])
-	[] $ (:[]) $
-	recC (mkName "ParseError") [
-		varStrictType c $ strictType notStrict $ conT $ mkName "String",
-		varStrictType m $ strictType notStrict $ conT $ mkName "String",
-		varStrictType com $ strictType notStrict $ conT $ mkName "String",
-		varStrictType d $ strictType notStrict $ varT $ mkName "drv",
-		varStrictType r $ strictType notStrict $ listT `appT` conT (mkName "String"),
-		varStrictType pos $ strictType notStrict $ varT $ mkName "pos"
+	[] $ [	recC (mkName "ParseError") [
+			varStrictType c strT,
+			varStrictType m strT,
+			varStrictType com strT,
+			varStrictType d drvT,
+			varStrictType r lstT,
+			varStrictType pos posT ]
 	 ]
 	where
 	[c, m, com, r, d, pos] = map mkName [
@@ -58,6 +57,10 @@
 		"peDerivs",
 		"pePosition"
 	 ]
+	strT = strictType notStrict $ conT $ mkName "String"
+	drvT = strictType notStrict $ varT $ mkName "drv"
+	lstT = strictType notStrict $ listT `appT` conT (mkName "String")
+	posT = strictType notStrict $ varT $ mkName "pos"
 
 {-
 
@@ -108,8 +111,9 @@
 	`arrT`
 	tupT [conT $ mkName "Int", conT $ mkName "Int"]
 pePositionSD :: DecQ
-pePositionSD = funD (mkName "pePositionS") $ (: []) $ clause
-	[pat] (normalB $ varE $ mkName "p") []
+pePositionSD = funD (mkName "pePositionS") $ [
+	clause [pat] (normalB $ varE $ mkName "p") []
+ ]
 	where
 	pat = recP (mkName "ParseError") [fieldPat (mkName "pePosition") $
 		conP (mkName "ListPos")
diff --git a/bin/papillon.hs b/bin/papillon.hs
--- a/bin/papillon.hs
+++ b/bin/papillon.hs
@@ -88,8 +88,9 @@
 	"peComment",
 	"peDerivs",
 	"peReading",
-	"Pos(..)",
+	"pePosition",
 	"pePositionS",
+	"Pos(..)",
 	"Source(..)",
 	"SourceList(..)",
 	"ListPos(..)"
diff --git a/examples/arith.hs b/examples/arith.hs
new file mode 100644
--- /dev/null
+++ b/examples/arith.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE QuasiQuotes, TypeFamilies #-}
+
+import Prelude hiding (product, sum)
+import Text.Papillon
+import Data.Char
+import System.Environment
+
+main :: IO ()
+main = do
+	arg : _ <- getArgs
+	case expr $ parse arg of
+		Right (r, _) -> print r
+		Left _ -> putStrLn "parse error"
+
+[papillon|
+
+value :: Int
+	= ds:(d:[isDigit d] { d })+	{ read ds }
+	/ '(' e:expr ')'		{ e }
+;
+product :: Int
+	= v0:value ops:(op:('*' { (*) } / '/' { div }) v:value { (`op` v) })*
+					{ foldl (flip ($)) v0 ops }
+;
+expr :: Int
+	= p0:product ops:(op:('+' { (+) } / '-' { (-) }) p:product { (`op` p) })*
+					{ foldl (flip ($)) p0 ops }
+;
+
+|]
diff --git a/examples/config.hs b/examples/config.hs
new file mode 100644
--- /dev/null
+++ b/examples/config.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE QuasiQuotes, TypeFamilies #-}
+
+import Text.Papillon
+import System.Environment
+import Data.Char
+
+main :: IO ()
+main = do
+	fp : _ <- getArgs
+	cnt <- readFile fp
+	case conf $ parse cnt of
+		Right (r, _) -> print r
+		Left _ -> putStrLn "parse error"
+
+[papillon|
+
+name :: String
+	= s:(c:[isLower c] { c })+		{ s }
+;
+value :: Int
+	= ds:(d:[isDigit d] { d })+		{ read ds }
+;
+conf1 :: (String, Int)
+	= n:name ':' ' ' v:value		{ (n, v) }
+;
+conf :: [(String, Int)]
+	= cs:(c:conf1 '\n' { c })+ !_:[True]	{ cs }
+;
+
+|]
diff --git a/examples/test.config b/examples/test.config
new file mode 100644
--- /dev/null
+++ b/examples/test.config
@@ -0,0 +1,2 @@
+hello: 33
+world: 952
diff --git a/papillon.cabal b/papillon.cabal
--- a/papillon.cabal
+++ b/papillon.cabal
@@ -2,7 +2,7 @@
 cabal-version:	>= 1.8
 
 name:		papillon
-version:	0.0.47
+version:	0.0.56
 stability:	Experimental
 author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp>
 maintainer:	Yoshikuni Jujo <PAF01143@nifty.ne.jp>
@@ -14,9 +14,12 @@
 category:	Parsing
 synopsis:	packrat parser
 description:
-	blah blah blah
+	see examples directory
 
 extra-source-files:
+  examples/arith.hs
+  examples/config.hs
+  examples/test.config
 
 source-repository	head
   type:		git
@@ -25,7 +28,7 @@
 source-repository	this
   type:		git
   location:	git://github.com/YoshikuniJujo/papillon.git
-  tag:		0.0.47
+  tag:		0.0.56
 
 library
   hs-source-dirs:	src
diff --git a/src/Text/Papillon.hs b/src/Text/Papillon.hs
--- a/src/Text/Papillon.hs
+++ b/src/Text/Papillon.hs
@@ -1,16 +1,18 @@
 module Text.Papillon (
 	papillon,
-	ParseError,
-	mkParseError,
-	peCode,
-	peMessage,
-	peDerivs,
-	peComment,
-	peReading,
 	Source(..),
 	SourceList(..),
 	Pos(..),
 	ListPos(..),
+	-- * For parse error message
+	ParseError,
+	mkParseError,
+	peDerivs,
+	peReading,
+	peMessage,
+	peCode,
+	peComment,
+	pePosition,
 	pePositionS,
 ) where
 
diff --git a/src/Text/Papillon/Papillon.hs b/src/Text/Papillon/Papillon.hs
--- a/src/Text/Papillon/Papillon.hs
+++ b/src/Text/Papillon/Papillon.hs
@@ -7,8 +7,9 @@
 	peComment,
 	peDerivs,
 	peReading,
-	Pos(..),
+	pePosition,
 	pePositionS,
+	Pos(..),
 	Source(..),
 	SourceList(..),
 	ListPos(..)) where
diff --git a/src/Text/Papillon/Parser.hs b/src/Text/Papillon/Parser.hs
--- a/src/Text/Papillon/Parser.hs
+++ b/src/Text/Papillon/Parser.hs
@@ -12,7 +12,7 @@
 	nameFromRF,
 	ParseError(..),
 	mkParseError,
-	Derivs(peg, pegFile, derivsChars),
+	Derivs(peg, pegFile, char),
 	Pos(..),
 	ListPos(..),
 	pePositionS,
@@ -164,9 +164,9 @@
               notComStr :: (Either (ParseError (Pos String) Derivs)
                                    (((), Derivs))),
               comEnd :: (Either (ParseError (Pos String) Derivs) (((), Derivs))),
-              derivsChars :: (Either (ParseError (Pos String) Derivs)
-                                     ((Token String, Derivs))),
-              derivsPosition :: (Pos String)}
+              char :: (Either (ParseError (Pos String) Derivs)
+                              ((Token String, Derivs))),
+              position :: (Pos String)}
 parse :: String -> Derivs
 parse = parse0_0 initialPos
           where parse0_0 pos s = d
@@ -244,7 +244,7 @@
                                                                 Just (c,
                                                                       s') -> do put (parse0_0 (updatePos c pos) s')
                                                                                 return c
-                                                                _ -> gets derivsPosition >>= (throwError . mkParseError "" "end of input" "" undefined [])) d
+                                                                _ -> gets position >>= (throwError . mkParseError "" "end of input" "" undefined [])) d
                 pegFile4_71 = foldl1 mplus [do pr <- StateT pragmas
                                                md <- StateT moduleDec
                                                pip <- StateT preImpPap
@@ -257,24 +257,24 @@
                                                _ <- StateT spaces
                                                return ()
                                                d160_140 <- get
-                                               xx159_141 <- StateT derivsChars
+                                               xx159_141 <- StateT char
                                                case xx159_141 of
                                                    '|' -> return ()
-                                                   _ -> gets derivsPosition >>= (throwError . mkParseError "'|'" "not match pattern: " "" d160_140 ["derivsChars"])
+                                                   _ -> gets position >>= (throwError . mkParseError "'|'" "not match pattern: " "" d160_140 ["char"])
                                                let '|' = xx159_141
                                                return ()
                                                d162_142 <- get
-                                               xx161_143 <- StateT derivsChars
+                                               xx161_143 <- StateT char
                                                case xx161_143 of
                                                    ']' -> return ()
-                                                   _ -> gets derivsPosition >>= (throwError . mkParseError "']'" "not match pattern: " "" d162_142 ["derivsChars"])
+                                                   _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d162_142 ["char"])
                                                let ']' = xx161_143
                                                return ()
                                                d164_144 <- get
-                                               xx163_145 <- StateT derivsChars
+                                               xx163_145 <- StateT char
                                                case xx163_145 of
                                                    '\n' -> return ()
-                                                   _ -> gets derivsPosition >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d164_144 ["derivsChars"])
+                                                   _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d164_144 ["char"])
                                                let '\n' = xx163_145
                                                return ()
                                                atp <- StateT afterPeg
@@ -288,24 +288,24 @@
                                                _ <- StateT spaces
                                                return ()
                                                d180_146 <- get
-                                               xx179_147 <- StateT derivsChars
+                                               xx179_147 <- StateT char
                                                case xx179_147 of
                                                    '|' -> return ()
-                                                   _ -> gets derivsPosition >>= (throwError . mkParseError "'|'" "not match pattern: " "" d180_146 ["derivsChars"])
+                                                   _ -> gets position >>= (throwError . mkParseError "'|'" "not match pattern: " "" d180_146 ["char"])
                                                let '|' = xx179_147
                                                return ()
                                                d182_148 <- get
-                                               xx181_149 <- StateT derivsChars
+                                               xx181_149 <- StateT char
                                                case xx181_149 of
                                                    ']' -> return ()
-                                                   _ -> gets derivsPosition >>= (throwError . mkParseError "']'" "not match pattern: " "" d182_148 ["derivsChars"])
+                                                   _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d182_148 ["char"])
                                                let ']' = xx181_149
                                                return ()
                                                d184_150 <- get
-                                               xx183_151 <- StateT derivsChars
+                                               xx183_151 <- StateT char
                                                case xx183_151 of
                                                    '\n' -> return ()
-                                                   _ -> gets derivsPosition >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d184_150 ["derivsChars"])
+                                                   _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d184_150 ["char"])
                                                let '\n' = xx183_151
                                                return ()
                                                atp <- StateT afterPeg
@@ -319,82 +319,82 @@
                                                return ()
                                                return []]
                 pragma6_73 = foldl1 mplus [do d196_152 <- get
-                                              xx195_153 <- StateT derivsChars
+                                              xx195_153 <- StateT char
                                               case xx195_153 of
                                                   '{' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'{'" "not match pattern: " "" d196_152 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d196_152 ["char"])
                                               let '{' = xx195_153
                                               return ()
                                               d198_154 <- get
-                                              xx197_155 <- StateT derivsChars
+                                              xx197_155 <- StateT char
                                               case xx197_155 of
                                                   '-' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d198_154 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d198_154 ["char"])
                                               let '-' = xx197_155
                                               return ()
                                               d200_156 <- get
-                                              xx199_157 <- StateT derivsChars
+                                              xx199_157 <- StateT char
                                               case xx199_157 of
                                                   '#' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'#'" "not match pattern: " "" d200_156 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d200_156 ["char"])
                                               let '#' = xx199_157
                                               return ()
                                               _ <- StateT spaces
                                               return ()
                                               d204_158 <- get
-                                              xx203_159 <- StateT derivsChars
+                                              xx203_159 <- StateT char
                                               case xx203_159 of
                                                   'L' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'L'" "not match pattern: " "" d204_158 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'L'" "not match pattern: " "" d204_158 ["char"])
                                               let 'L' = xx203_159
                                               return ()
                                               d206_160 <- get
-                                              xx205_161 <- StateT derivsChars
+                                              xx205_161 <- StateT char
                                               case xx205_161 of
                                                   'A' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'A'" "not match pattern: " "" d206_160 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'A'" "not match pattern: " "" d206_160 ["char"])
                                               let 'A' = xx205_161
                                               return ()
                                               d208_162 <- get
-                                              xx207_163 <- StateT derivsChars
+                                              xx207_163 <- StateT char
                                               case xx207_163 of
                                                   'N' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'N'" "not match pattern: " "" d208_162 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'N'" "not match pattern: " "" d208_162 ["char"])
                                               let 'N' = xx207_163
                                               return ()
                                               d210_164 <- get
-                                              xx209_165 <- StateT derivsChars
+                                              xx209_165 <- StateT char
                                               case xx209_165 of
                                                   'G' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'G'" "not match pattern: " "" d210_164 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'G'" "not match pattern: " "" d210_164 ["char"])
                                               let 'G' = xx209_165
                                               return ()
                                               d212_166 <- get
-                                              xx211_167 <- StateT derivsChars
+                                              xx211_167 <- StateT char
                                               case xx211_167 of
                                                   'U' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'U'" "not match pattern: " "" d212_166 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'U'" "not match pattern: " "" d212_166 ["char"])
                                               let 'U' = xx211_167
                                               return ()
                                               d214_168 <- get
-                                              xx213_169 <- StateT derivsChars
+                                              xx213_169 <- StateT char
                                               case xx213_169 of
                                                   'A' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'A'" "not match pattern: " "" d214_168 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'A'" "not match pattern: " "" d214_168 ["char"])
                                               let 'A' = xx213_169
                                               return ()
                                               d216_170 <- get
-                                              xx215_171 <- StateT derivsChars
+                                              xx215_171 <- StateT char
                                               case xx215_171 of
                                                   'G' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'G'" "not match pattern: " "" d216_170 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'G'" "not match pattern: " "" d216_170 ["char"])
                                               let 'G' = xx215_171
                                               return ()
                                               d218_172 <- get
-                                              xx217_173 <- StateT derivsChars
+                                              xx217_173 <- StateT char
                                               case xx217_173 of
                                                   'E' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'E'" "not match pattern: " "" d218_172 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'E'" "not match pattern: " "" d218_172 ["char"])
                                               let 'E' = xx217_173
                                               return ()
                                               _ <- StateT spaces
@@ -406,24 +406,24 @@
                                               return ()
                                               return (LanguagePragma s),
                                            do d228_174 <- get
-                                              xx227_175 <- StateT derivsChars
+                                              xx227_175 <- StateT char
                                               case xx227_175 of
                                                   '{' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'{'" "not match pattern: " "" d228_174 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d228_174 ["char"])
                                               let '{' = xx227_175
                                               return ()
                                               d230_176 <- get
-                                              xx229_177 <- StateT derivsChars
+                                              xx229_177 <- StateT char
                                               case xx229_177 of
                                                   '-' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d230_176 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d230_176 ["char"])
                                               let '-' = xx229_177
                                               return ()
                                               d232_178 <- get
-                                              xx231_179 <- StateT derivsChars
+                                              xx231_179 <- StateT char
                                               case xx231_179 of
                                                   '#' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'#'" "not match pattern: " "" d232_178 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d232_178 ["char"])
                                               let '#' = xx231_179
                                               return ()
                                               _ <- StateT spaces
@@ -435,18 +435,18 @@
                 pragmaStr7_74 = foldl1 mplus [do ddd239_180 <- get
                                                  do err <- ((do _ <- StateT pragmaEnd
                                                                 return ()) >> return False) `catchError` const (return True)
-                                                    unless err (gets derivsPosition >>= (throwError . mkParseError ('!' : "_:pragmaEnd") "not match: " "" ddd239_180 ["pragmaEnd"]))
+                                                    unless err (gets position >>= (throwError . mkParseError ('!' : "_:pragmaEnd") "not match: " "" ddd239_180 ["pragmaEnd"]))
                                                  put ddd239_180
-                                                 c <- StateT derivsChars
+                                                 c <- StateT char
                                                  s <- StateT pragmaStr
                                                  return (c : s),
                                               return ""]
                 pragmaItems8_75 = foldl1 mplus [do t <- StateT typToken
                                                    d249_181 <- get
-                                                   xx248_182 <- StateT derivsChars
+                                                   xx248_182 <- StateT char
                                                    case xx248_182 of
                                                        ',' -> return ()
-                                                       _ -> gets derivsPosition >>= (throwError . mkParseError "','" "not match pattern: " "" d249_181 ["derivsChars"])
+                                                       _ -> gets position >>= (throwError . mkParseError "','" "not match pattern: " "" d249_181 ["char"])
                                                    let ',' = xx248_182
                                                    return ()
                                                    _ <- StateT spaces
@@ -458,67 +458,67 @@
                 pragmaEnd9_76 = foldl1 mplus [do _ <- StateT spaces
                                                  return ()
                                                  d259_183 <- get
-                                                 xx258_184 <- StateT derivsChars
+                                                 xx258_184 <- StateT char
                                                  case xx258_184 of
                                                      '#' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'#'" "not match pattern: " "" d259_183 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d259_183 ["char"])
                                                  let '#' = xx258_184
                                                  return ()
                                                  d261_185 <- get
-                                                 xx260_186 <- StateT derivsChars
+                                                 xx260_186 <- StateT char
                                                  case xx260_186 of
                                                      '-' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d261_185 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d261_185 ["char"])
                                                  let '-' = xx260_186
                                                  return ()
                                                  d263_187 <- get
-                                                 xx262_188 <- StateT derivsChars
+                                                 xx262_188 <- StateT char
                                                  case xx262_188 of
                                                      '}' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'}'" "not match pattern: " "" d263_187 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'}'" "not match pattern: " "" d263_187 ["char"])
                                                  let '}' = xx262_188
                                                  return ()
                                                  return ()]
                 moduleDec10_77 = foldl1 mplus [do d265_189 <- get
-                                                  xx264_190 <- StateT derivsChars
+                                                  xx264_190 <- StateT char
                                                   case xx264_190 of
                                                       'm' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'m'" "not match pattern: " "" d265_189 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'m'" "not match pattern: " "" d265_189 ["char"])
                                                   let 'm' = xx264_190
                                                   return ()
                                                   d267_191 <- get
-                                                  xx266_192 <- StateT derivsChars
+                                                  xx266_192 <- StateT char
                                                   case xx266_192 of
                                                       'o' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'o'" "not match pattern: " "" d267_191 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'o'" "not match pattern: " "" d267_191 ["char"])
                                                   let 'o' = xx266_192
                                                   return ()
                                                   d269_193 <- get
-                                                  xx268_194 <- StateT derivsChars
+                                                  xx268_194 <- StateT char
                                                   case xx268_194 of
                                                       'd' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'d'" "not match pattern: " "" d269_193 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'d'" "not match pattern: " "" d269_193 ["char"])
                                                   let 'd' = xx268_194
                                                   return ()
                                                   d271_195 <- get
-                                                  xx270_196 <- StateT derivsChars
+                                                  xx270_196 <- StateT char
                                                   case xx270_196 of
                                                       'u' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'u'" "not match pattern: " "" d271_195 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'u'" "not match pattern: " "" d271_195 ["char"])
                                                   let 'u' = xx270_196
                                                   return ()
                                                   d273_197 <- get
-                                                  xx272_198 <- StateT derivsChars
+                                                  xx272_198 <- StateT char
                                                   case xx272_198 of
                                                       'l' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'l'" "not match pattern: " "" d273_197 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'l'" "not match pattern: " "" d273_197 ["char"])
                                                   let 'l' = xx272_198
                                                   return ()
                                                   d275_199 <- get
-                                                  xx274_200 <- StateT derivsChars
+                                                  xx274_200 <- StateT char
                                                   case xx274_200 of
                                                       'e' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'e'" "not match pattern: " "" d275_199 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d275_199 ["char"])
                                                   let 'e' = xx274_200
                                                   return ()
                                                   _ <- StateT spaces
@@ -527,10 +527,10 @@
                                                   _ <- StateT spaces
                                                   return ()
                                                   d283_201 <- get
-                                                  xx282_202 <- StateT derivsChars
+                                                  xx282_202 <- StateT char
                                                   case xx282_202 of
                                                       '(' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'('" "not match pattern: " "" d283_201 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d283_201 ["char"])
                                                   let '(' = xx282_202
                                                   return ()
                                                   _ <- StateT spaces
@@ -540,45 +540,45 @@
                                                   return ()
                                                   return (Just (n, Just s)),
                                                do d291_203 <- get
-                                                  xx290_204 <- StateT derivsChars
+                                                  xx290_204 <- StateT char
                                                   case xx290_204 of
                                                       'm' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'m'" "not match pattern: " "" d291_203 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'m'" "not match pattern: " "" d291_203 ["char"])
                                                   let 'm' = xx290_204
                                                   return ()
                                                   d293_205 <- get
-                                                  xx292_206 <- StateT derivsChars
+                                                  xx292_206 <- StateT char
                                                   case xx292_206 of
                                                       'o' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'o'" "not match pattern: " "" d293_205 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'o'" "not match pattern: " "" d293_205 ["char"])
                                                   let 'o' = xx292_206
                                                   return ()
                                                   d295_207 <- get
-                                                  xx294_208 <- StateT derivsChars
+                                                  xx294_208 <- StateT char
                                                   case xx294_208 of
                                                       'd' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'d'" "not match pattern: " "" d295_207 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'d'" "not match pattern: " "" d295_207 ["char"])
                                                   let 'd' = xx294_208
                                                   return ()
                                                   d297_209 <- get
-                                                  xx296_210 <- StateT derivsChars
+                                                  xx296_210 <- StateT char
                                                   case xx296_210 of
                                                       'u' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'u'" "not match pattern: " "" d297_209 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'u'" "not match pattern: " "" d297_209 ["char"])
                                                   let 'u' = xx296_210
                                                   return ()
                                                   d299_211 <- get
-                                                  xx298_212 <- StateT derivsChars
+                                                  xx298_212 <- StateT char
                                                   case xx298_212 of
                                                       'l' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'l'" "not match pattern: " "" d299_211 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'l'" "not match pattern: " "" d299_211 ["char"])
                                                   let 'l' = xx298_212
                                                   return ()
                                                   d301_213 <- get
-                                                  xx300_214 <- StateT derivsChars
+                                                  xx300_214 <- StateT char
                                                   case xx300_214 of
                                                       'e' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'e'" "not match pattern: " "" d301_213 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d301_213 ["char"])
                                                   let 'e' = xx300_214
                                                   return ()
                                                   _ <- StateT spaces
@@ -587,38 +587,38 @@
                                                   _ <- StateT spaces
                                                   return ()
                                                   d309_215 <- get
-                                                  xx308_216 <- StateT derivsChars
+                                                  xx308_216 <- StateT char
                                                   case xx308_216 of
                                                       'w' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'w'" "not match pattern: " "" d309_215 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'w'" "not match pattern: " "" d309_215 ["char"])
                                                   let 'w' = xx308_216
                                                   return ()
                                                   d311_217 <- get
-                                                  xx310_218 <- StateT derivsChars
+                                                  xx310_218 <- StateT char
                                                   case xx310_218 of
                                                       'h' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'h'" "not match pattern: " "" d311_217 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'h'" "not match pattern: " "" d311_217 ["char"])
                                                   let 'h' = xx310_218
                                                   return ()
                                                   d313_219 <- get
-                                                  xx312_220 <- StateT derivsChars
+                                                  xx312_220 <- StateT char
                                                   case xx312_220 of
                                                       'e' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'e'" "not match pattern: " "" d313_219 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d313_219 ["char"])
                                                   let 'e' = xx312_220
                                                   return ()
                                                   d315_221 <- get
-                                                  xx314_222 <- StateT derivsChars
+                                                  xx314_222 <- StateT char
                                                   case xx314_222 of
                                                       'r' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'r'" "not match pattern: " "" d315_221 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'r'" "not match pattern: " "" d315_221 ["char"])
                                                   let 'r' = xx314_222
                                                   return ()
                                                   d317_223 <- get
-                                                  xx316_224 <- StateT derivsChars
+                                                  xx316_224 <- StateT char
                                                   case xx316_224 of
                                                       'e' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'e'" "not match pattern: " "" d317_223 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d317_223 ["char"])
                                                   let 'e' = xx316_224
                                                   return ()
                                                   _ <- StateT spaces
@@ -627,10 +627,10 @@
                                                return Nothing]
                 moduleName11_78 = foldl1 mplus [do t <- StateT typ
                                                    d323_225 <- get
-                                                   xx322_226 <- StateT derivsChars
+                                                   xx322_226 <- StateT char
                                                    case xx322_226 of
                                                        '.' -> return ()
-                                                       _ -> gets derivsPosition >>= (throwError . mkParseError "'.'" "not match pattern: " "" d323_225 ["derivsChars"])
+                                                       _ -> gets position >>= (throwError . mkParseError "'.'" "not match pattern: " "" d323_225 ["char"])
                                                    let '.' = xx322_226
                                                    return ()
                                                    n <- StateT moduleName
@@ -640,83 +640,83 @@
                 moduleDecStr12_79 = foldl1 mplus [do ddd328_227 <- get
                                                      do err <- ((do _ <- StateT whr
                                                                     return ()) >> return False) `catchError` const (return True)
-                                                        unless err (gets derivsPosition >>= (throwError . mkParseError ('!' : "_:whr") "not match: " "" ddd328_227 ["whr"]))
+                                                        unless err (gets position >>= (throwError . mkParseError ('!' : "_:whr") "not match: " "" ddd328_227 ["whr"]))
                                                      put ddd328_227
-                                                     c <- StateT derivsChars
+                                                     c <- StateT char
                                                      s <- StateT moduleDecStr
                                                      return (c : s),
                                                   return ""]
                 whr13_80 = foldl1 mplus [do _ <- StateT spaces
                                             return ()
                                             d338_228 <- get
-                                            xx337_229 <- StateT derivsChars
+                                            xx337_229 <- StateT char
                                             case xx337_229 of
                                                 ')' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "')'" "not match pattern: " "" d338_228 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d338_228 ["char"])
                                             let ')' = xx337_229
                                             return ()
                                             _ <- StateT spaces
                                             return ()
                                             d342_230 <- get
-                                            xx341_231 <- StateT derivsChars
+                                            xx341_231 <- StateT char
                                             case xx341_231 of
                                                 'w' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'w'" "not match pattern: " "" d342_230 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'w'" "not match pattern: " "" d342_230 ["char"])
                                             let 'w' = xx341_231
                                             return ()
                                             d344_232 <- get
-                                            xx343_233 <- StateT derivsChars
+                                            xx343_233 <- StateT char
                                             case xx343_233 of
                                                 'h' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'h'" "not match pattern: " "" d344_232 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'h'" "not match pattern: " "" d344_232 ["char"])
                                             let 'h' = xx343_233
                                             return ()
                                             d346_234 <- get
-                                            xx345_235 <- StateT derivsChars
+                                            xx345_235 <- StateT char
                                             case xx345_235 of
                                                 'e' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'e'" "not match pattern: " "" d346_234 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d346_234 ["char"])
                                             let 'e' = xx345_235
                                             return ()
                                             d348_236 <- get
-                                            xx347_237 <- StateT derivsChars
+                                            xx347_237 <- StateT char
                                             case xx347_237 of
                                                 'r' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'r'" "not match pattern: " "" d348_236 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'r'" "not match pattern: " "" d348_236 ["char"])
                                             let 'r' = xx347_237
                                             return ()
                                             d350_238 <- get
-                                            xx349_239 <- StateT derivsChars
+                                            xx349_239 <- StateT char
                                             case xx349_239 of
                                                 'e' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'e'" "not match pattern: " "" d350_238 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'e'" "not match pattern: " "" d350_238 ["char"])
                                             let 'e' = xx349_239
                                             return ()
                                             return ()]
                 preImpPap14_81 = foldl1 mplus [do ddd351_240 <- get
                                                   do err <- ((do _ <- StateT importPapillon
                                                                  return ()) >> return False) `catchError` const (return True)
-                                                     unless err (gets derivsPosition >>= (throwError . mkParseError ('!' : "_:importPapillon") "not match: " "" ddd351_240 ["importPapillon"]))
+                                                     unless err (gets position >>= (throwError . mkParseError ('!' : "_:importPapillon") "not match: " "" ddd351_240 ["importPapillon"]))
                                                   put ddd351_240
                                                   ddd354_241 <- get
                                                   do err <- ((do _ <- StateT pap
                                                                  return ()) >> return False) `catchError` const (return True)
-                                                     unless err (gets derivsPosition >>= (throwError . mkParseError ('!' : "_:pap") "not match: " "" ddd354_241 ["pap"]))
+                                                     unless err (gets position >>= (throwError . mkParseError ('!' : "_:pap") "not match: " "" ddd354_241 ["pap"]))
                                                   put ddd354_241
-                                                  c <- StateT derivsChars
+                                                  c <- StateT char
                                                   pip <- StateT preImpPap
                                                   return (cons c pip),
                                                return emp]
                 prePeg15_82 = foldl1 mplus [do ddd361_242 <- get
                                                do err <- ((do _ <- StateT pap
                                                               return ()) >> return False) `catchError` const (return True)
-                                                  unless err (gets derivsPosition >>= (throwError . mkParseError ('!' : "_:pap") "not match: " "" ddd361_242 ["pap"]))
+                                                  unless err (gets position >>= (throwError . mkParseError ('!' : "_:pap") "not match: " "" ddd361_242 ["pap"]))
                                                put ddd361_242
-                                               c <- StateT derivsChars
+                                               c <- StateT char
                                                pp <- StateT prePeg
                                                return (cons c pp),
                                             return emp]
-                afterPeg16_83 = foldl1 mplus [do c <- StateT derivsChars
+                afterPeg16_83 = foldl1 mplus [do c <- StateT char
                                                  atp <- StateT afterPeg
                                                  return (cons c atp),
                                               return emp]
@@ -724,21 +724,21 @@
                                                        xx372_244 <- StateT varToken
                                                        case xx372_244 of
                                                            "import" -> return ()
-                                                           _ -> gets derivsPosition >>= (throwError . mkParseError "\"import\"" "not match pattern: " "" d373_243 ["varToken"])
+                                                           _ -> gets position >>= (throwError . mkParseError "\"import\"" "not match pattern: " "" d373_243 ["varToken"])
                                                        let "import" = xx372_244
                                                        return ()
                                                        d375_245 <- get
                                                        xx374_246 <- StateT typToken
                                                        case xx374_246 of
                                                            "Text" -> return ()
-                                                           _ -> gets derivsPosition >>= (throwError . mkParseError "\"Text\"" "not match pattern: " "" d375_245 ["typToken"])
+                                                           _ -> gets position >>= (throwError . mkParseError "\"Text\"" "not match pattern: " "" d375_245 ["typToken"])
                                                        let "Text" = xx374_246
                                                        return ()
                                                        d377_247 <- get
-                                                       xx376_248 <- StateT derivsChars
+                                                       xx376_248 <- StateT char
                                                        case xx376_248 of
                                                            '.' -> return ()
-                                                           _ -> gets derivsPosition >>= (throwError . mkParseError "'.'" "not match pattern: " "" d377_247 ["derivsChars"])
+                                                           _ -> gets position >>= (throwError . mkParseError "'.'" "not match pattern: " "" d377_247 ["char"])
                                                        let '.' = xx376_248
                                                        return ()
                                                        _ <- StateT spaces
@@ -747,18 +747,18 @@
                                                        xx380_250 <- StateT typToken
                                                        case xx380_250 of
                                                            "Papillon" -> return ()
-                                                           _ -> gets derivsPosition >>= (throwError . mkParseError "\"Papillon\"" "not match pattern: " "" d381_249 ["typToken"])
+                                                           _ -> gets position >>= (throwError . mkParseError "\"Papillon\"" "not match pattern: " "" d381_249 ["typToken"])
                                                        let "Papillon" = xx380_250
                                                        return ()
                                                        ddd382_251 <- get
                                                        do err <- ((do d384_252 <- get
-                                                                      xx383_253 <- StateT derivsChars
+                                                                      xx383_253 <- StateT char
                                                                       case xx383_253 of
                                                                           '.' -> return ()
-                                                                          _ -> gets derivsPosition >>= (throwError . mkParseError "'.'" "not match pattern: " "" d384_252 ["derivsChars"])
+                                                                          _ -> gets position >>= (throwError . mkParseError "'.'" "not match pattern: " "" d384_252 ["char"])
                                                                       let '.' = xx383_253
                                                                       return ()) >> return False) `catchError` const (return True)
-                                                          unless err (gets derivsPosition >>= (throwError . mkParseError ('!' : "'.':") "not match: " "" ddd382_251 ["derivsChars"]))
+                                                          unless err (gets position >>= (throwError . mkParseError ('!' : "'.':") "not match: " "" ddd382_251 ["char"]))
                                                        put ddd382_251
                                                        return ()]
                 varToken18_85 = foldl1 mplus [do v <- StateT variable
@@ -770,87 +770,87 @@
                                                  return ()
                                                  return t]
                 pap20_87 = foldl1 mplus [do d394_254 <- get
-                                            xx393_255 <- StateT derivsChars
+                                            xx393_255 <- StateT char
                                             case xx393_255 of
                                                 '\n' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d394_254 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d394_254 ["char"])
                                             let '\n' = xx393_255
                                             return ()
                                             d396_256 <- get
-                                            xx395_257 <- StateT derivsChars
+                                            xx395_257 <- StateT char
                                             case xx395_257 of
                                                 '[' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'['" "not match pattern: " "" d396_256 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d396_256 ["char"])
                                             let '[' = xx395_257
                                             return ()
                                             d398_258 <- get
-                                            xx397_259 <- StateT derivsChars
+                                            xx397_259 <- StateT char
                                             case xx397_259 of
                                                 'p' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'p'" "not match pattern: " "" d398_258 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'p'" "not match pattern: " "" d398_258 ["char"])
                                             let 'p' = xx397_259
                                             return ()
                                             d400_260 <- get
-                                            xx399_261 <- StateT derivsChars
+                                            xx399_261 <- StateT char
                                             case xx399_261 of
                                                 'a' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'a'" "not match pattern: " "" d400_260 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'a'" "not match pattern: " "" d400_260 ["char"])
                                             let 'a' = xx399_261
                                             return ()
                                             d402_262 <- get
-                                            xx401_263 <- StateT derivsChars
+                                            xx401_263 <- StateT char
                                             case xx401_263 of
                                                 'p' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'p'" "not match pattern: " "" d402_262 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'p'" "not match pattern: " "" d402_262 ["char"])
                                             let 'p' = xx401_263
                                             return ()
                                             d404_264 <- get
-                                            xx403_265 <- StateT derivsChars
+                                            xx403_265 <- StateT char
                                             case xx403_265 of
                                                 'i' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'i'" "not match pattern: " "" d404_264 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'i'" "not match pattern: " "" d404_264 ["char"])
                                             let 'i' = xx403_265
                                             return ()
                                             d406_266 <- get
-                                            xx405_267 <- StateT derivsChars
+                                            xx405_267 <- StateT char
                                             case xx405_267 of
                                                 'l' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'l'" "not match pattern: " "" d406_266 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'l'" "not match pattern: " "" d406_266 ["char"])
                                             let 'l' = xx405_267
                                             return ()
                                             d408_268 <- get
-                                            xx407_269 <- StateT derivsChars
+                                            xx407_269 <- StateT char
                                             case xx407_269 of
                                                 'l' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'l'" "not match pattern: " "" d408_268 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'l'" "not match pattern: " "" d408_268 ["char"])
                                             let 'l' = xx407_269
                                             return ()
                                             d410_270 <- get
-                                            xx409_271 <- StateT derivsChars
+                                            xx409_271 <- StateT char
                                             case xx409_271 of
                                                 'o' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'o'" "not match pattern: " "" d410_270 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'o'" "not match pattern: " "" d410_270 ["char"])
                                             let 'o' = xx409_271
                                             return ()
                                             d412_272 <- get
-                                            xx411_273 <- StateT derivsChars
+                                            xx411_273 <- StateT char
                                             case xx411_273 of
                                                 'n' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'n'" "not match pattern: " "" d412_272 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'n'" "not match pattern: " "" d412_272 ["char"])
                                             let 'n' = xx411_273
                                             return ()
                                             d414_274 <- get
-                                            xx413_275 <- StateT derivsChars
+                                            xx413_275 <- StateT char
                                             case xx413_275 of
                                                 '|' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'|'" "not match pattern: " "" d414_274 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'|'" "not match pattern: " "" d414_274 ["char"])
                                             let '|' = xx413_275
                                             return ()
                                             d416_276 <- get
-                                            xx415_277 <- StateT derivsChars
+                                            xx415_277 <- StateT char
                                             case xx415_277 of
                                                 '\n' -> return ()
-                                                _ -> gets derivsPosition >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d416_276 ["derivsChars"])
+                                                _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d416_276 ["char"])
                                             let '\n' = xx415_277
                                             return ()
                                             return ()]
@@ -865,14 +865,14 @@
                                                    xx425_279 <- StateT varToken
                                                    case xx425_279 of
                                                        "source" -> return ()
-                                                       _ -> gets derivsPosition >>= (throwError . mkParseError "\"source\"" "not match pattern: " "" d426_278 ["varToken"])
+                                                       _ -> gets position >>= (throwError . mkParseError "\"source\"" "not match pattern: " "" d426_278 ["varToken"])
                                                    let "source" = xx425_279
                                                    return ()
                                                    d428_280 <- get
-                                                   xx427_281 <- StateT derivsChars
+                                                   xx427_281 <- StateT char
                                                    case xx427_281 of
                                                        ':' -> return ()
-                                                       _ -> gets derivsPosition >>= (throwError . mkParseError "':'" "not match pattern: " "" d428_280 ["derivsChars"])
+                                                       _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d428_280 ["char"])
                                                    let ':' = xx427_281
                                                    return ()
                                                    _ <- StateT spaces
@@ -889,17 +889,17 @@
                                                    _ <- StateT spaces
                                                    return ()
                                                    d444_282 <- get
-                                                   xx443_283 <- StateT derivsChars
+                                                   xx443_283 <- StateT char
                                                    case xx443_283 of
                                                        ':' -> return ()
-                                                       _ -> gets derivsPosition >>= (throwError . mkParseError "':'" "not match pattern: " "" d444_282 ["derivsChars"])
+                                                       _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d444_282 ["char"])
                                                    let ':' = xx443_283
                                                    return ()
                                                    d446_284 <- get
-                                                   xx445_285 <- StateT derivsChars
+                                                   xx445_285 <- StateT char
                                                    case xx445_285 of
                                                        ':' -> return ()
-                                                       _ -> gets derivsPosition >>= (throwError . mkParseError "':'" "not match pattern: " "" d446_284 ["derivsChars"])
+                                                       _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d446_284 ["char"])
                                                    let ':' = xx445_285
                                                    return ()
                                                    _ <- StateT spaces
@@ -908,10 +908,10 @@
                                                    _ <- StateT spaces
                                                    return ()
                                                    d454_286 <- get
-                                                   xx453_287 <- StateT derivsChars
+                                                   xx453_287 <- StateT char
                                                    case xx453_287 of
                                                        '=' -> return ()
-                                                       _ -> gets derivsPosition >>= (throwError . mkParseError "'='" "not match pattern: " "" d454_286 ["derivsChars"])
+                                                       _ -> gets position >>= (throwError . mkParseError "'='" "not match pattern: " "" d454_286 ["char"])
                                                    let '=' = xx453_287
                                                    return ()
                                                    _ <- StateT spaces
@@ -920,10 +920,10 @@
                                                    _ <- StateT spaces
                                                    return ()
                                                    d462_288 <- get
-                                                   xx461_289 <- StateT derivsChars
+                                                   xx461_289 <- StateT char
                                                    case xx461_289 of
                                                        ';' -> return ()
-                                                       _ -> gets derivsPosition >>= (throwError . mkParseError "';'" "not match pattern: " "" d462_288 ["derivsChars"])
+                                                       _ -> gets position >>= (throwError . mkParseError "';'" "not match pattern: " "" d462_288 ["char"])
                                                    let ';' = xx461_289
                                                    return ()
                                                    return (mkDef v t sel)]
@@ -931,10 +931,10 @@
                                                   _ <- StateT spaces
                                                   return ()
                                                   d468_290 <- get
-                                                  xx467_291 <- StateT derivsChars
+                                                  xx467_291 <- StateT char
                                                   case xx467_291 of
                                                       '/' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'/'" "not match pattern: " "" d468_290 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'/'" "not match pattern: " "" d468_290 ["char"])
                                                   let '/' = xx467_291
                                                   return ()
                                                   _ <- StateT spaces
@@ -947,10 +947,10 @@
                                                      _ <- StateT spaces
                                                      return ()
                                                      d480_292 <- get
-                                                     xx479_293 <- StateT derivsChars
+                                                     xx479_293 <- StateT char
                                                      case xx479_293 of
                                                          '{' -> return ()
-                                                         _ -> gets derivsPosition >>= (throwError . mkParseError "'{'" "not match pattern: " "" d480_292 ["derivsChars"])
+                                                         _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d480_292 ["char"])
                                                      let '{' = xx479_293
                                                      return ()
                                                      _ <- StateT spaces
@@ -959,10 +959,10 @@
                                                      _ <- StateT spaces
                                                      return ()
                                                      d488_294 <- get
-                                                     xx487_295 <- StateT derivsChars
+                                                     xx487_295 <- StateT char
                                                      case xx487_295 of
                                                          '}' -> return ()
-                                                         _ -> gets derivsPosition >>= (throwError . mkParseError "'}'" "not match pattern: " "" d488_294 ["derivsChars"])
+                                                         _ -> gets position >>= (throwError . mkParseError "'}'" "not match pattern: " "" d488_294 ["char"])
                                                      let '}' = xx487_295
                                                      return ()
                                                      return (mkExpressionHs e h)]
@@ -973,10 +973,10 @@
                                                    return (cons l e),
                                                 return emp]
                 nameLeaf_28_95 = foldl1 mplus [do d496_296 <- get
-                                                  xx495_297 <- StateT derivsChars
+                                                  xx495_297 <- StateT char
                                                   case xx495_297 of
                                                       '!' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'!'" "not match pattern: " "" d496_296 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'!'" "not match pattern: " "" d496_296 ["char"])
                                                   let '!' = xx495_297
                                                   return ()
                                                   nl <- StateT nameLeafNoCom
@@ -985,9 +985,9 @@
                                                   com <- optional3_298 (StateT comForErr)
                                                   return (NotAfter nl $ maybe "" id com),
                                                do d504_299 <- get
-                                                  xx503_300 <- StateT derivsChars
+                                                  xx503_300 <- StateT char
                                                   let c = xx503_300
-                                                  unless (isAmp c) (gets derivsPosition >>= (throwError . mkParseError "isAmp c" "not match: " "" d504_299 ["derivsChars"]))
+                                                  unless (isAmp c) (gets position >>= (throwError . mkParseError "isAmp c" "not match: " "" d504_299 ["char"]))
                                                   nl <- StateT nameLeaf
                                                   return (After nl),
                                                do nl <- StateT nameLeaf
@@ -997,10 +997,10 @@
                                                  return ()
                                                  com <- optional3_298 (StateT comForErr)
                                                  d516_301 <- get
-                                                 xx515_302 <- StateT derivsChars
+                                                 xx515_302 <- StateT char
                                                  case xx515_302 of
                                                      ':' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "':'" "not match pattern: " "" d516_301 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d516_301 ["char"])
                                                  let ':' = xx515_302
                                                  return ()
                                                  (rf, p) <- StateT leaf
@@ -1016,10 +1016,10 @@
                                                       return ()
                                                       com <- optional3_298 (StateT comForErr)
                                                       d532_303 <- get
-                                                      xx531_304 <- StateT derivsChars
+                                                      xx531_304 <- StateT char
                                                       case xx531_304 of
                                                           ':' -> return ()
-                                                          _ -> gets derivsPosition >>= (throwError . mkParseError "':'" "not match pattern: " "" d532_303 ["derivsChars"])
+                                                          _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d532_303 ["char"])
                                                       let ':' = xx531_304
                                                       return ()
                                                       (rf, p) <- StateT leaf
@@ -1029,64 +1029,64 @@
                                                       return ()
                                                       return (NameLeaf (n, "") FromToken Nothing)]
                 comForErr31_98 = foldl1 mplus [do d540_305 <- get
-                                                  xx539_306 <- StateT derivsChars
+                                                  xx539_306 <- StateT char
                                                   case xx539_306 of
                                                       '{' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'{'" "not match pattern: " "" d540_305 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d540_305 ["char"])
                                                   let '{' = xx539_306
                                                   return ()
                                                   d542_307 <- get
-                                                  xx541_308 <- StateT derivsChars
+                                                  xx541_308 <- StateT char
                                                   case xx541_308 of
                                                       '-' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d542_307 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d542_307 ["char"])
                                                   let '-' = xx541_308
                                                   return ()
                                                   d544_309 <- get
-                                                  xx543_310 <- StateT derivsChars
+                                                  xx543_310 <- StateT char
                                                   case xx543_310 of
                                                       '#' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'#'" "not match pattern: " "" d544_309 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d544_309 ["char"])
                                                   let '#' = xx543_310
                                                   return ()
                                                   _ <- StateT spaces
                                                   return ()
                                                   d548_311 <- get
-                                                  xx547_312 <- StateT derivsChars
+                                                  xx547_312 <- StateT char
                                                   case xx547_312 of
                                                       '"' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d548_311 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d548_311 ["char"])
                                                   let '"' = xx547_312
                                                   return ()
                                                   s <- StateT stringLit
                                                   d552_313 <- get
-                                                  xx551_314 <- StateT derivsChars
+                                                  xx551_314 <- StateT char
                                                   case xx551_314 of
                                                       '"' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d552_313 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d552_313 ["char"])
                                                   let '"' = xx551_314
                                                   return ()
                                                   _ <- StateT spaces
                                                   return ()
                                                   d556_315 <- get
-                                                  xx555_316 <- StateT derivsChars
+                                                  xx555_316 <- StateT char
                                                   case xx555_316 of
                                                       '#' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'#'" "not match pattern: " "" d556_315 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d556_315 ["char"])
                                                   let '#' = xx555_316
                                                   return ()
                                                   d558_317 <- get
-                                                  xx557_318 <- StateT derivsChars
+                                                  xx557_318 <- StateT char
                                                   case xx557_318 of
                                                       '-' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d558_317 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d558_317 ["char"])
                                                   let '-' = xx557_318
                                                   return ()
                                                   d560_319 <- get
-                                                  xx559_320 <- StateT derivsChars
+                                                  xx559_320 <- StateT char
                                                   case xx559_320 of
                                                       '}' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'}'" "not match pattern: " "" d560_319 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'}'" "not match pattern: " "" d560_319 ["char"])
                                                   let '}' = xx559_320
                                                   return ()
                                                   _ <- StateT spaces
@@ -1107,14 +1107,14 @@
                                                _ <- StateT spaces
                                                return ()
                                                d582_321 <- get
-                                               xx581_322 <- StateT derivsChars
+                                               xx581_322 <- StateT char
                                                let q = xx581_322
-                                               unless (isBQ q) (gets derivsPosition >>= (throwError . mkParseError "isBQ q" "not match: " "" d582_321 ["derivsChars"]))
+                                               unless (isBQ q) (gets position >>= (throwError . mkParseError "isBQ q" "not match: " "" d582_321 ["char"]))
                                                t <- StateT typ
                                                d586_323 <- get
-                                               xx585_324 <- StateT derivsChars
+                                               xx585_324 <- StateT char
                                                let q_ = xx585_324
-                                               unless (isBQ q_) (gets derivsPosition >>= (throwError . mkParseError "isBQ q_" "not match: " "" d586_323 ["derivsChars"]))
+                                               unless (isBQ q_) (gets position >>= (throwError . mkParseError "isBQ q_" "not match: " "" d586_323 ["char"]))
                                                _ <- StateT spaces
                                                return ()
                                                po <- StateT patOp
@@ -1127,18 +1127,18 @@
                                              ps <- StateT pats
                                              return (conToPatQ t ps),
                                           do d600_325 <- get
-                                             xx599_326 <- StateT derivsChars
+                                             xx599_326 <- StateT char
                                              case xx599_326 of
                                                  '(' -> return ()
-                                                 _ -> gets derivsPosition >>= (throwError . mkParseError "'('" "not match pattern: " "" d600_325 ["derivsChars"])
+                                                 _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d600_325 ["char"])
                                              let '(' = xx599_326
                                              return ()
                                              o <- StateT opConName
                                              d604_327 <- get
-                                             xx603_328 <- StateT derivsChars
+                                             xx603_328 <- StateT char
                                              case xx603_328 of
                                                  ')' -> return ()
-                                                 _ -> gets derivsPosition >>= (throwError . mkParseError "')'" "not match pattern: " "" d604_327 ["derivsChars"])
+                                                 _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d604_327 ["char"])
                                              let ')' = xx603_328
                                              return ()
                                              _ <- StateT spaces
@@ -1153,7 +1153,7 @@
                                               xx613_330 <- StateT variable
                                               case xx613_330 of
                                                   "_" -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "\"_\"" "not match pattern: " "" d614_329 ["variable"])
+                                                  _ -> gets position >>= (throwError . mkParseError "\"_\"" "not match pattern: " "" d614_329 ["variable"])
                                               let "_" = xx613_330
                                               return ()
                                               return wildP,
@@ -1162,10 +1162,10 @@
                                            do i <- StateT integer
                                               return (litP (integerL i)),
                                            do d620_331 <- get
-                                              xx619_332 <- StateT derivsChars
+                                              xx619_332 <- StateT char
                                               case xx619_332 of
                                                   '-' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d620_331 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d620_331 ["char"])
                                               let '-' = xx619_332
                                               return ()
                                               _ <- StateT spaces
@@ -1173,66 +1173,66 @@
                                               i <- StateT integer
                                               return (litP (integerL $ negate i)),
                                            do d626_333 <- get
-                                              xx625_334 <- StateT derivsChars
+                                              xx625_334 <- StateT char
                                               case xx625_334 of
                                                   '\'' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d626_333 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d626_333 ["char"])
                                               let '\'' = xx625_334
                                               return ()
                                               c <- StateT charLit
                                               d630_335 <- get
-                                              xx629_336 <- StateT derivsChars
+                                              xx629_336 <- StateT char
                                               case xx629_336 of
                                                   '\'' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d630_335 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d630_335 ["char"])
                                               let '\'' = xx629_336
                                               return ()
                                               return (charP c),
                                            do d632_337 <- get
-                                              xx631_338 <- StateT derivsChars
+                                              xx631_338 <- StateT char
                                               case xx631_338 of
                                                   '"' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d632_337 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d632_337 ["char"])
                                               let '"' = xx631_338
                                               return ()
                                               s <- StateT stringLit
                                               d636_339 <- get
-                                              xx635_340 <- StateT derivsChars
+                                              xx635_340 <- StateT char
                                               case xx635_340 of
                                                   '"' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d636_339 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d636_339 ["char"])
                                               let '"' = xx635_340
                                               return ()
                                               return (stringP s),
                                            do d638_341 <- get
-                                              xx637_342 <- StateT derivsChars
+                                              xx637_342 <- StateT char
                                               case xx637_342 of
                                                   '(' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'('" "not match pattern: " "" d638_341 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d638_341 ["char"])
                                               let '(' = xx637_342
                                               return ()
                                               p <- StateT patList
                                               d642_343 <- get
-                                              xx641_344 <- StateT derivsChars
+                                              xx641_344 <- StateT char
                                               case xx641_344 of
                                                   ')' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "')'" "not match pattern: " "" d642_343 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d642_343 ["char"])
                                               let ')' = xx641_344
                                               return ()
                                               return (tupP p),
                                            do d644_345 <- get
-                                              xx643_346 <- StateT derivsChars
+                                              xx643_346 <- StateT char
                                               case xx643_346 of
                                                   '[' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'['" "not match pattern: " "" d644_345 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d644_345 ["char"])
                                               let '[' = xx643_346
                                               return ()
                                               p <- StateT patList
                                               d648_347 <- get
-                                              xx647_348 <- StateT derivsChars
+                                              xx647_348 <- StateT char
                                               case xx647_348 of
                                                   ']' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "']'" "not match pattern: " "" d648_347 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d648_347 ["char"])
                                               let ']' = xx647_348
                                               return ()
                                               return (listP p)]
@@ -1240,10 +1240,10 @@
                                                  _ <- StateT spaces
                                                  return ()
                                                  d654_349 <- get
-                                                 xx653_350 <- StateT derivsChars
+                                                 xx653_350 <- StateT char
                                                  case xx653_350 of
                                                      ',' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "','" "not match pattern: " "" d654_349 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "','" "not match pattern: " "" d654_349 ["char"])
                                                  let ',' = xx653_350
                                                  return ()
                                                  _ <- StateT spaces
@@ -1254,39 +1254,39 @@
                                                  return [p],
                                               return []]
                 opConName37_104 = foldl1 mplus [do d662_351 <- get
-                                                   xx661_352 <- StateT derivsChars
+                                                   xx661_352 <- StateT char
                                                    case xx661_352 of
                                                        ':' -> return ()
-                                                       _ -> gets derivsPosition >>= (throwError . mkParseError "':'" "not match pattern: " "" d662_351 ["derivsChars"])
+                                                       _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d662_351 ["char"])
                                                    let ':' = xx661_352
                                                    return ()
                                                    ot <- StateT opTail
                                                    return (mkName $ colon : ot)]
                 charLit38_105 = foldl1 mplus [do d666_353 <- get
-                                                 xx665_354 <- StateT derivsChars
+                                                 xx665_354 <- StateT char
                                                  let c = xx665_354
-                                                 unless (isAlphaNumOt c) (gets derivsPosition >>= (throwError . mkParseError "isAlphaNumOt c" "not match: " "" d666_353 ["derivsChars"]))
+                                                 unless (isAlphaNumOt c) (gets position >>= (throwError . mkParseError "isAlphaNumOt c" "not match: " "" d666_353 ["char"]))
                                                  return c,
                                               do d668_355 <- get
-                                                 xx667_356 <- StateT derivsChars
+                                                 xx667_356 <- StateT char
                                                  case xx667_356 of
                                                      '\\' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d668_355 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d668_355 ["char"])
                                                  let '\\' = xx667_356
                                                  return ()
                                                  c <- StateT escapeC
                                                  return c]
                 stringLit39_106 = foldl1 mplus [do d672_357 <- get
-                                                   xx671_358 <- StateT derivsChars
+                                                   xx671_358 <- StateT char
                                                    let c = xx671_358
-                                                   unless (isStrLitC c) (gets derivsPosition >>= (throwError . mkParseError "isStrLitC c" "not match: " "" d672_357 ["derivsChars"]))
+                                                   unless (isStrLitC c) (gets position >>= (throwError . mkParseError "isStrLitC c" "not match: " "" d672_357 ["char"]))
                                                    s <- StateT stringLit
                                                    return (cons c s),
                                                 do d676_359 <- get
-                                                   xx675_360 <- StateT derivsChars
+                                                   xx675_360 <- StateT char
                                                    case xx675_360 of
                                                        '\\' -> return ()
-                                                       _ -> gets derivsPosition >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d676_359 ["derivsChars"])
+                                                       _ -> gets position >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d676_359 ["char"])
                                                    let '\\' = xx675_360
                                                    return ()
                                                    c <- StateT escapeC
@@ -1294,42 +1294,42 @@
                                                    return (c : s),
                                                 return emp]
                 escapeC40_107 = foldl1 mplus [do d682_361 <- get
-                                                 xx681_362 <- StateT derivsChars
+                                                 xx681_362 <- StateT char
                                                  case xx681_362 of
                                                      '"' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d682_361 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d682_361 ["char"])
                                                  let '"' = xx681_362
                                                  return ()
                                                  return '"',
                                               do d684_363 <- get
-                                                 xx683_364 <- StateT derivsChars
+                                                 xx683_364 <- StateT char
                                                  case xx683_364 of
                                                      '\'' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d684_363 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d684_363 ["char"])
                                                  let '\'' = xx683_364
                                                  return ()
                                                  return '\'',
                                               do d686_365 <- get
-                                                 xx685_366 <- StateT derivsChars
+                                                 xx685_366 <- StateT char
                                                  case xx685_366 of
                                                      '\\' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d686_365 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d686_365 ["char"])
                                                  let '\\' = xx685_366
                                                  return ()
                                                  return '\\',
                                               do d688_367 <- get
-                                                 xx687_368 <- StateT derivsChars
+                                                 xx687_368 <- StateT char
                                                  case xx687_368 of
                                                      'n' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'n'" "not match pattern: " "" d688_367 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'n'" "not match pattern: " "" d688_367 ["char"])
                                                  let 'n' = xx687_368
                                                  return ()
                                                  return '\n',
                                               do d690_369 <- get
-                                                 xx689_370 <- StateT derivsChars
+                                                 xx689_370 <- StateT char
                                                  case xx689_370 of
                                                      't' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'t'" "not match pattern: " "" d690_369 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'t'" "not match pattern: " "" d690_369 ["char"])
                                                  let 't' = xx689_370
                                                  return ()
                                                  return tab]
@@ -1341,28 +1341,28 @@
                                            return emp]
                 readFromLs42_109 = foldl1 mplus [do rf <- StateT readFrom
                                                     d700_371 <- get
-                                                    xx699_372 <- StateT derivsChars
+                                                    xx699_372 <- StateT char
                                                     case xx699_372 of
                                                         '*' -> return ()
-                                                        _ -> gets derivsPosition >>= (throwError . mkParseError "'*'" "not match pattern: " "" d700_371 ["derivsChars"])
+                                                        _ -> gets position >>= (throwError . mkParseError "'*'" "not match pattern: " "" d700_371 ["char"])
                                                     let '*' = xx699_372
                                                     return ()
                                                     return (FromList rf),
                                                  do rf <- StateT readFrom
                                                     d704_373 <- get
-                                                    xx703_374 <- StateT derivsChars
+                                                    xx703_374 <- StateT char
                                                     case xx703_374 of
                                                         '+' -> return ()
-                                                        _ -> gets derivsPosition >>= (throwError . mkParseError "'+'" "not match pattern: " "" d704_373 ["derivsChars"])
+                                                        _ -> gets position >>= (throwError . mkParseError "'+'" "not match pattern: " "" d704_373 ["char"])
                                                     let '+' = xx703_374
                                                     return ()
                                                     return (FromList1 rf),
                                                  do rf <- StateT readFrom
                                                     d708_375 <- get
-                                                    xx707_376 <- StateT derivsChars
+                                                    xx707_376 <- StateT char
                                                     case xx707_376 of
                                                         '?' -> return ()
-                                                        _ -> gets derivsPosition >>= (throwError . mkParseError "'?'" "not match pattern: " "" d708_375 ["derivsChars"])
+                                                        _ -> gets position >>= (throwError . mkParseError "'?'" "not match pattern: " "" d708_375 ["char"])
                                                     let '?' = xx707_376
                                                     return ()
                                                     return (FromOptional rf),
@@ -1371,26 +1371,26 @@
                 readFrom43_110 = foldl1 mplus [do v <- StateT variable
                                                   return (FromVariable v),
                                                do d714_377 <- get
-                                                  xx713_378 <- StateT derivsChars
+                                                  xx713_378 <- StateT char
                                                   case xx713_378 of
                                                       '(' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'('" "not match pattern: " "" d714_377 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d714_377 ["char"])
                                                   let '(' = xx713_378
                                                   return ()
                                                   s <- StateT selection
                                                   d718_379 <- get
-                                                  xx717_380 <- StateT derivsChars
+                                                  xx717_380 <- StateT char
                                                   case xx717_380 of
                                                       ')' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "')'" "not match pattern: " "" d718_379 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d718_379 ["char"])
                                                   let ')' = xx717_380
                                                   return ()
                                                   return (FromSelection s)]
                 test44_111 = foldl1 mplus [do d720_381 <- get
-                                              xx719_382 <- StateT derivsChars
+                                              xx719_382 <- StateT char
                                               case xx719_382 of
                                                   '[' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "'['" "not match pattern: " "" d720_381 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d720_381 ["char"])
                                               let '[' = xx719_382
                                               return ()
                                               h <- StateT hsExpLam
@@ -1398,18 +1398,18 @@
                                               return ()
                                               com <- optional3_298 (StateT comForErr)
                                               d728_383 <- get
-                                              xx727_384 <- StateT derivsChars
+                                              xx727_384 <- StateT char
                                               case xx727_384 of
                                                   ']' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "']'" "not match pattern: " "" d728_383 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d728_383 ["char"])
                                               let ']' = xx727_384
                                               return ()
                                               return (h, maybe "" id com)]
                 hsExpLam45_112 = foldl1 mplus [do d730_385 <- get
-                                                  xx729_386 <- StateT derivsChars
+                                                  xx729_386 <- StateT char
                                                   case xx729_386 of
                                                       '\\' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d730_385 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'\\\\'" "not match pattern: " "" d730_385 ["char"])
                                                   let '\\' = xx729_386
                                                   return ()
                                                   _ <- StateT spaces
@@ -1418,16 +1418,16 @@
                                                   _ <- StateT spaces
                                                   return ()
                                                   d738_387 <- get
-                                                  xx737_388 <- StateT derivsChars
+                                                  xx737_388 <- StateT char
                                                   case xx737_388 of
                                                       '-' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d738_387 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d738_387 ["char"])
                                                   let '-' = xx737_388
                                                   return ()
                                                   d740_389 <- get
-                                                  xx739_390 <- StateT derivsChars
+                                                  xx739_390 <- StateT char
                                                   let c = xx739_390
-                                                  unless (isGt c) (gets derivsPosition >>= (throwError . mkParseError "isGt c" "not match: " "" d740_389 ["derivsChars"]))
+                                                  unless (isGt c) (gets position >>= (throwError . mkParseError "isGt c" "not match: " "" d740_389 ["char"]))
                                                   _ <- StateT spaces
                                                   return ()
                                                   e <- StateT hsExpTyp
@@ -1436,17 +1436,17 @@
                                                   return e]
                 hsExpTyp46_113 = foldl1 mplus [do eo <- StateT hsExpOp
                                                   d750_391 <- get
-                                                  xx749_392 <- StateT derivsChars
+                                                  xx749_392 <- StateT char
                                                   case xx749_392 of
                                                       ':' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "':'" "not match pattern: " "" d750_391 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d750_391 ["char"])
                                                   let ':' = xx749_392
                                                   return ()
                                                   d752_393 <- get
-                                                  xx751_394 <- StateT derivsChars
+                                                  xx751_394 <- StateT char
                                                   case xx751_394 of
                                                       ':' -> return ()
-                                                      _ -> gets derivsPosition >>= (throwError . mkParseError "':'" "not match pattern: " "" d752_393 ["derivsChars"])
+                                                      _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d752_393 ["char"])
                                                   let ':' = xx751_394
                                                   return ()
                                                   _ <- StateT spaces
@@ -1466,54 +1466,54 @@
                                               do e <- StateT hsExp
                                                  return (getEx e)]
                 hsOp48_115 = foldl1 mplus [do d772_395 <- get
-                                              xx771_396 <- StateT derivsChars
+                                              xx771_396 <- StateT char
                                               let c = xx771_396
-                                              unless (isOpHeadChar c) (gets derivsPosition >>= (throwError . mkParseError "isOpHeadChar c" "not match: " "" d772_395 ["derivsChars"]))
+                                              unless (isOpHeadChar c) (gets position >>= (throwError . mkParseError "isOpHeadChar c" "not match: " "" d772_395 ["char"]))
                                               o <- StateT opTail
                                               return (varE (mkName (cons c o))),
                                            do d776_397 <- get
-                                              xx775_398 <- StateT derivsChars
+                                              xx775_398 <- StateT char
                                               case xx775_398 of
                                                   ':' -> return ()
-                                                  _ -> gets derivsPosition >>= (throwError . mkParseError "':'" "not match pattern: " "" d776_397 ["derivsChars"])
+                                                  _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d776_397 ["char"])
                                               let ':' = xx775_398
                                               return ()
                                               ddd777_399 <- get
                                               do err <- ((do d779_400 <- get
-                                                             xx778_401 <- StateT derivsChars
+                                                             xx778_401 <- StateT char
                                                              case xx778_401 of
                                                                  ':' -> return ()
-                                                                 _ -> gets derivsPosition >>= (throwError . mkParseError "':'" "not match pattern: " "" d779_400 ["derivsChars"])
+                                                                 _ -> gets position >>= (throwError . mkParseError "':'" "not match pattern: " "" d779_400 ["char"])
                                                              let ':' = xx778_401
                                                              return ()) >> return False) `catchError` const (return True)
-                                                 unless err (gets derivsPosition >>= (throwError . mkParseError ('!' : "':':") "not match: " "" ddd777_399 ["derivsChars"]))
+                                                 unless err (gets position >>= (throwError . mkParseError ('!' : "':':") "not match: " "" ddd777_399 ["char"]))
                                               put ddd777_399
                                               o <- StateT opTail
                                               return (conE (mkName (':' : o))),
                                            do d783_402 <- get
-                                              xx782_403 <- StateT derivsChars
+                                              xx782_403 <- StateT char
                                               let c = xx782_403
-                                              unless (isBQ c) (gets derivsPosition >>= (throwError . mkParseError "isBQ c" "not match: " "" d783_402 ["derivsChars"]))
+                                              unless (isBQ c) (gets position >>= (throwError . mkParseError "isBQ c" "not match: " "" d783_402 ["char"]))
                                               v <- StateT variable
                                               d787_404 <- get
-                                              xx786_405 <- StateT derivsChars
+                                              xx786_405 <- StateT char
                                               let c_ = xx786_405
-                                              unless (isBQ c_) (gets derivsPosition >>= (throwError . mkParseError "isBQ c_" "not match: " "" d787_404 ["derivsChars"]))
+                                              unless (isBQ c_) (gets position >>= (throwError . mkParseError "isBQ c_" "not match: " "" d787_404 ["char"]))
                                               return (varE (mkName v)),
                                            do d789_406 <- get
-                                              xx788_407 <- StateT derivsChars
+                                              xx788_407 <- StateT char
                                               let c = xx788_407
-                                              unless (isBQ c) (gets derivsPosition >>= (throwError . mkParseError "isBQ c" "not match: " "" d789_406 ["derivsChars"]))
+                                              unless (isBQ c) (gets position >>= (throwError . mkParseError "isBQ c" "not match: " "" d789_406 ["char"]))
                                               t <- StateT typ
                                               d793_408 <- get
-                                              xx792_409 <- StateT derivsChars
+                                              xx792_409 <- StateT char
                                               let c_ = xx792_409
-                                              unless (isBQ c_) (gets derivsPosition >>= (throwError . mkParseError "isBQ c_" "not match: " "" d793_408 ["derivsChars"]))
+                                              unless (isBQ c_) (gets position >>= (throwError . mkParseError "isBQ c_" "not match: " "" d793_408 ["char"]))
                                               return (conE (mkName t))]
                 opTail49_116 = foldl1 mplus [do d795_410 <- get
-                                                xx794_411 <- StateT derivsChars
+                                                xx794_411 <- StateT char
                                                 let c = xx794_411
-                                                unless (isOpTailChar c) (gets derivsPosition >>= (throwError . mkParseError "isOpTailChar c" "not match: " "" d795_410 ["derivsChars"]))
+                                                unless (isOpTailChar c) (gets position >>= (throwError . mkParseError "isOpTailChar c" "not match: " "" d795_410 ["char"]))
                                                 s <- StateT opTail
                                                 return (cons c s),
                                              return emp]
@@ -1525,10 +1525,10 @@
                                             do e <- StateT hsExp1
                                                return (toEx e)]
                 hsExp151_118 = foldl1 mplus [do d807_412 <- get
-                                                xx806_413 <- StateT derivsChars
+                                                xx806_413 <- StateT char
                                                 case xx806_413 of
                                                     '(' -> return ()
-                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "'('" "not match pattern: " "" d807_412 ["derivsChars"])
+                                                    _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d807_412 ["char"])
                                                 let '(' = xx806_413
                                                 return ()
                                                 l <- optional3_298 (foldl1 mplus [do e <- StateT hsExpTyp
@@ -1541,42 +1541,42 @@
                                                 r <- optional3_298 (foldl1 mplus [do e <- StateT hsExpTyp
                                                                                      return e])
                                                 d823_414 <- get
-                                                xx822_415 <- StateT derivsChars
+                                                xx822_415 <- StateT char
                                                 case xx822_415 of
                                                     ')' -> return ()
-                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "')'" "not match pattern: " "" d823_414 ["derivsChars"])
+                                                    _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d823_414 ["char"])
                                                 let ')' = xx822_415
                                                 return ()
                                                 return (infixE l o r),
                                              do d825_416 <- get
-                                                xx824_417 <- StateT derivsChars
+                                                xx824_417 <- StateT char
                                                 case xx824_417 of
                                                     '(' -> return ()
-                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "'('" "not match pattern: " "" d825_416 ["derivsChars"])
+                                                    _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d825_416 ["char"])
                                                 let '(' = xx824_417
                                                 return ()
                                                 et <- StateT hsExpTpl
                                                 d829_418 <- get
-                                                xx828_419 <- StateT derivsChars
+                                                xx828_419 <- StateT char
                                                 case xx828_419 of
                                                     ')' -> return ()
-                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "')'" "not match pattern: " "" d829_418 ["derivsChars"])
+                                                    _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d829_418 ["char"])
                                                 let ')' = xx828_419
                                                 return ()
                                                 return (tupE et),
                                              do d831_420 <- get
-                                                xx830_421 <- StateT derivsChars
+                                                xx830_421 <- StateT char
                                                 case xx830_421 of
                                                     '[' -> return ()
-                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "'['" "not match pattern: " "" d831_420 ["derivsChars"])
+                                                    _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d831_420 ["char"])
                                                 let '[' = xx830_421
                                                 return ()
                                                 et <- StateT hsExpTpl
                                                 d835_422 <- get
-                                                xx834_423 <- StateT derivsChars
+                                                xx834_423 <- StateT char
                                                 case xx834_423 of
                                                     ']' -> return ()
-                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "']'" "not match pattern: " "" d835_422 ["derivsChars"])
+                                                    _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d835_422 ["char"])
                                                 let ']' = xx834_423
                                                 return ()
                                                 return (listE et),
@@ -1589,42 +1589,42 @@
                                                 return ()
                                                 return (litE (integerL i)),
                                              do d845_424 <- get
-                                                xx844_425 <- StateT derivsChars
+                                                xx844_425 <- StateT char
                                                 case xx844_425 of
                                                     '\'' -> return ()
-                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d845_424 ["derivsChars"])
+                                                    _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d845_424 ["char"])
                                                 let '\'' = xx844_425
                                                 return ()
                                                 c <- StateT charLit
                                                 d849_426 <- get
-                                                xx848_427 <- StateT derivsChars
+                                                xx848_427 <- StateT char
                                                 case xx848_427 of
                                                     '\'' -> return ()
-                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d849_426 ["derivsChars"])
+                                                    _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d849_426 ["char"])
                                                 let '\'' = xx848_427
                                                 return ()
                                                 return (litE (charL c)),
                                              do d851_428 <- get
-                                                xx850_429 <- StateT derivsChars
+                                                xx850_429 <- StateT char
                                                 case xx850_429 of
                                                     '"' -> return ()
-                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d851_428 ["derivsChars"])
+                                                    _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d851_428 ["char"])
                                                 let '"' = xx850_429
                                                 return ()
                                                 s <- StateT stringLit
                                                 d855_430 <- get
-                                                xx854_431 <- StateT derivsChars
+                                                xx854_431 <- StateT char
                                                 case xx854_431 of
                                                     '"' -> return ()
-                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d855_430 ["derivsChars"])
+                                                    _ -> gets position >>= (throwError . mkParseError "'\"'" "not match pattern: " "" d855_430 ["char"])
                                                 let '"' = xx854_431
                                                 return ()
                                                 return (litE (stringL s)),
                                              do d857_432 <- get
-                                                xx856_433 <- StateT derivsChars
+                                                xx856_433 <- StateT char
                                                 case xx856_433 of
                                                     '-' -> return ()
-                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d857_432 ["derivsChars"])
+                                                    _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d857_432 ["char"])
                                                 let '-' = xx856_433
                                                 return ()
                                                 _ <- StateT spaces
@@ -1635,9 +1635,9 @@
                                                   _ <- StateT spaces
                                                   return ()
                                                   d867_434 <- get
-                                                  xx866_435 <- StateT derivsChars
+                                                  xx866_435 <- StateT char
                                                   let c = xx866_435
-                                                  unless (isComma c) (gets derivsPosition >>= (throwError . mkParseError "isComma c" "not match: " "" d867_434 ["derivsChars"]))
+                                                  unless (isComma c) (gets position >>= (throwError . mkParseError "isComma c" "not match: " "" d867_434 ["char"]))
                                                   _ <- StateT spaces
                                                   return ()
                                                   et <- StateT hsExpTpl
@@ -1647,16 +1647,16 @@
                                                return emp]
                 hsTypeArr53_120 = foldl1 mplus [do l <- StateT hsType
                                                    d877_436 <- get
-                                                   xx876_437 <- StateT derivsChars
+                                                   xx876_437 <- StateT char
                                                    case xx876_437 of
                                                        '-' -> return ()
-                                                       _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d877_436 ["derivsChars"])
+                                                       _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d877_436 ["char"])
                                                    let '-' = xx876_437
                                                    return ()
                                                    d879_438 <- get
-                                                   xx878_439 <- StateT derivsChars
+                                                   xx878_439 <- StateT char
                                                    let c = xx878_439
-                                                   unless (isGt c) (gets derivsPosition >>= (throwError . mkParseError "isGt c" "not match: " "" d879_438 ["derivsChars"]))
+                                                   unless (isGt c) (gets position >>= (throwError . mkParseError "isGt c" "not match: " "" d879_438 ["char"]))
                                                    _ <- StateT spaces
                                                    return ()
                                                    r <- StateT hsTypeArr
@@ -1669,83 +1669,83 @@
                                              do t <- StateT hsType1
                                                 return (toTyp t)]
                 hsType155_122 = foldl1 mplus [do d893_440 <- get
-                                                 xx892_441 <- StateT derivsChars
+                                                 xx892_441 <- StateT char
                                                  case xx892_441 of
                                                      '[' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'['" "not match pattern: " "" d893_440 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d893_440 ["char"])
                                                  let '[' = xx892_441
                                                  return ()
                                                  d895_442 <- get
-                                                 xx894_443 <- StateT derivsChars
+                                                 xx894_443 <- StateT char
                                                  case xx894_443 of
                                                      ']' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "']'" "not match pattern: " "" d895_442 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d895_442 ["char"])
                                                  let ']' = xx894_443
                                                  return ()
                                                  _ <- StateT spaces
                                                  return ()
                                                  return listT,
                                               do d899_444 <- get
-                                                 xx898_445 <- StateT derivsChars
+                                                 xx898_445 <- StateT char
                                                  case xx898_445 of
                                                      '[' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'['" "not match pattern: " "" d899_444 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'['" "not match pattern: " "" d899_444 ["char"])
                                                  let '[' = xx898_445
                                                  return ()
                                                  t <- StateT hsTypeArr
                                                  d903_446 <- get
-                                                 xx902_447 <- StateT derivsChars
+                                                 xx902_447 <- StateT char
                                                  case xx902_447 of
                                                      ']' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "']'" "not match pattern: " "" d903_446 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "']'" "not match pattern: " "" d903_446 ["char"])
                                                  let ']' = xx902_447
                                                  return ()
                                                  _ <- StateT spaces
                                                  return ()
                                                  return (appT listT t),
                                               do d907_448 <- get
-                                                 xx906_449 <- StateT derivsChars
+                                                 xx906_449 <- StateT char
                                                  case xx906_449 of
                                                      '(' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'('" "not match pattern: " "" d907_448 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d907_448 ["char"])
                                                  let '(' = xx906_449
                                                  return ()
                                                  _ <- StateT spaces
                                                  return ()
                                                  tt <- StateT hsTypeTpl
                                                  d913_450 <- get
-                                                 xx912_451 <- StateT derivsChars
+                                                 xx912_451 <- StateT char
                                                  case xx912_451 of
                                                      ')' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "')'" "not match pattern: " "" d913_450 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d913_450 ["char"])
                                                  let ')' = xx912_451
                                                  return ()
                                                  return (tupT tt),
                                               do t <- StateT typToken
                                                  return (conT (mkName t)),
                                               do d917_452 <- get
-                                                 xx916_453 <- StateT derivsChars
+                                                 xx916_453 <- StateT char
                                                  case xx916_453 of
                                                      '(' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'('" "not match pattern: " "" d917_452 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'('" "not match pattern: " "" d917_452 ["char"])
                                                  let '(' = xx916_453
                                                  return ()
                                                  d919_454 <- get
-                                                 xx918_455 <- StateT derivsChars
+                                                 xx918_455 <- StateT char
                                                  case xx918_455 of
                                                      '-' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d919_454 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d919_454 ["char"])
                                                  let '-' = xx918_455
                                                  return ()
                                                  d921_456 <- get
-                                                 xx920_457 <- StateT derivsChars
+                                                 xx920_457 <- StateT char
                                                  let c = xx920_457
-                                                 unless (isGt c) (gets derivsPosition >>= (throwError . mkParseError "isGt c" "not match: " "" d921_456 ["derivsChars"]))
+                                                 unless (isGt c) (gets position >>= (throwError . mkParseError "isGt c" "not match: " "" d921_456 ["char"]))
                                                  d923_458 <- get
-                                                 xx922_459 <- StateT derivsChars
+                                                 xx922_459 <- StateT char
                                                  case xx922_459 of
                                                      ')' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "')'" "not match pattern: " "" d923_458 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "')'" "not match pattern: " "" d923_458 ["char"])
                                                  let ')' = xx922_459
                                                  return ()
                                                  _ <- StateT spaces
@@ -1753,9 +1753,9 @@
                                                  return arrowT]
                 hsTypeTpl56_123 = foldl1 mplus [do t <- StateT hsTypeArr
                                                    d929_460 <- get
-                                                   xx928_461 <- StateT derivsChars
+                                                   xx928_461 <- StateT char
                                                    let c = xx928_461
-                                                   unless (isComma c) (gets derivsPosition >>= (throwError . mkParseError "isComma c" "not match: " "" d929_460 ["derivsChars"]))
+                                                   unless (isComma c) (gets position >>= (throwError . mkParseError "isComma c" "not match: " "" d929_460 ["char"]))
                                                    _ <- StateT spaces
                                                    return ()
                                                    tt <- StateT hsTypeTpl
@@ -1784,27 +1784,27 @@
                                             do d <- StateT digit
                                                return d,
                                             do d961_463 <- get
-                                               xx960_464 <- StateT derivsChars
+                                               xx960_464 <- StateT char
                                                case xx960_464 of
                                                    '\'' -> return ()
-                                                   _ -> gets derivsPosition >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d961_463 ["derivsChars"])
+                                                   _ -> gets position >>= (throwError . mkParseError "'\\''" "not match pattern: " "" d961_463 ["char"])
                                                let '\'' = xx960_464
                                                return ()
                                                return '\'']
                 upper62_129 = foldl1 mplus [do d963_465 <- get
-                                               xx962_466 <- StateT derivsChars
+                                               xx962_466 <- StateT char
                                                let u = xx962_466
-                                               unless (isUpper u) (gets derivsPosition >>= (throwError . mkParseError "isUpper u" "not match: " "" d963_465 ["derivsChars"]))
+                                               unless (isUpper u) (gets position >>= (throwError . mkParseError "isUpper u" "not match: " "" d963_465 ["char"]))
                                                return u]
                 lower63_130 = foldl1 mplus [do d965_467 <- get
-                                               xx964_468 <- StateT derivsChars
+                                               xx964_468 <- StateT char
                                                let l = xx964_468
-                                               unless (isLowerU l) (gets derivsPosition >>= (throwError . mkParseError "isLowerU l" "not match: " "" d965_467 ["derivsChars"]))
+                                               unless (isLowerU l) (gets position >>= (throwError . mkParseError "isLowerU l" "not match: " "" d965_467 ["char"]))
                                                return l]
                 digit64_131 = foldl1 mplus [do d967_469 <- get
-                                               xx966_470 <- StateT derivsChars
+                                               xx966_470 <- StateT char
                                                let d = xx966_470
-                                               unless (isDigit d) (gets derivsPosition >>= (throwError . mkParseError "isDigit d" "not match: " "" d967_469 ["derivsChars"]))
+                                               unless (isDigit d) (gets position >>= (throwError . mkParseError "isDigit d" "not match: " "" d967_469 ["char"]))
                                                return d]
                 spaces65_132 = foldl1 mplus [do _ <- StateT space
                                                 return ()
@@ -1813,22 +1813,22 @@
                                                 return (),
                                              return ()]
                 space66_133 = foldl1 mplus [do d973_471 <- get
-                                               xx972_472 <- StateT derivsChars
+                                               xx972_472 <- StateT char
                                                let s = xx972_472
-                                               unless (isSpace s) (gets derivsPosition >>= (throwError . mkParseError "isSpace s" "not match: " "" d973_471 ["derivsChars"]))
+                                               unless (isSpace s) (gets position >>= (throwError . mkParseError "isSpace s" "not match: " "" d973_471 ["char"]))
                                                return (),
                                             do d975_473 <- get
-                                               xx974_474 <- StateT derivsChars
+                                               xx974_474 <- StateT char
                                                case xx974_474 of
                                                    '-' -> return ()
-                                                   _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d975_473 ["derivsChars"])
+                                                   _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d975_473 ["char"])
                                                let '-' = xx974_474
                                                return ()
                                                d977_475 <- get
-                                               xx976_476 <- StateT derivsChars
+                                               xx976_476 <- StateT char
                                                case xx976_476 of
                                                    '-' -> return ()
-                                                   _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d977_475 ["derivsChars"])
+                                                   _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d977_475 ["char"])
                                                let '-' = xx976_476
                                                return ()
                                                _ <- StateT notNLString
@@ -1842,43 +1842,43 @@
                 notNLString67_134 = foldl1 mplus [do ddd984_477 <- get
                                                      do err <- ((do _ <- StateT newLine
                                                                     return ()) >> return False) `catchError` const (return True)
-                                                        unless err (gets derivsPosition >>= (throwError . mkParseError ('!' : "_:newLine") "not match: " "" ddd984_477 ["newLine"]))
+                                                        unless err (gets position >>= (throwError . mkParseError ('!' : "_:newLine") "not match: " "" ddd984_477 ["newLine"]))
                                                      put ddd984_477
-                                                     c <- StateT derivsChars
+                                                     c <- StateT char
                                                      s <- StateT notNLString
                                                      return (cons c s),
                                                   return emp]
                 newLine68_135 = foldl1 mplus [do d992_478 <- get
-                                                 xx991_479 <- StateT derivsChars
+                                                 xx991_479 <- StateT char
                                                  case xx991_479 of
                                                      '\n' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d992_478 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'\\n'" "not match pattern: " "" d992_478 ["char"])
                                                  let '\n' = xx991_479
                                                  return ()
                                                  return ()]
                 comment69_136 = foldl1 mplus [do d994_480 <- get
-                                                 xx993_481 <- StateT derivsChars
+                                                 xx993_481 <- StateT char
                                                  case xx993_481 of
                                                      '{' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'{'" "not match pattern: " "" d994_480 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'{'" "not match pattern: " "" d994_480 ["char"])
                                                  let '{' = xx993_481
                                                  return ()
                                                  d996_482 <- get
-                                                 xx995_483 <- StateT derivsChars
+                                                 xx995_483 <- StateT char
                                                  case xx995_483 of
                                                      '-' -> return ()
-                                                     _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d996_482 ["derivsChars"])
+                                                     _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d996_482 ["char"])
                                                  let '-' = xx995_483
                                                  return ()
                                                  ddd997_484 <- get
                                                  do err <- ((do d999_485 <- get
-                                                                xx998_486 <- StateT derivsChars
+                                                                xx998_486 <- StateT char
                                                                 case xx998_486 of
                                                                     '#' -> return ()
-                                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "'#'" "not match pattern: " "" d999_485 ["derivsChars"])
+                                                                    _ -> gets position >>= (throwError . mkParseError "'#'" "not match pattern: " "" d999_485 ["char"])
                                                                 let '#' = xx998_486
                                                                 return ()) >> return False) `catchError` const (return True)
-                                                    unless err (gets derivsPosition >>= (throwError . mkParseError ('!' : "'#':") "not match: " "" ddd997_484 ["derivsChars"]))
+                                                    unless err (gets position >>= (throwError . mkParseError ('!' : "'#':") "not match: " "" ddd997_484 ["char"]))
                                                  put ddd997_484
                                                  _ <- StateT comments
                                                  return ()
@@ -1898,31 +1898,31 @@
                 notComStr71_138 = foldl1 mplus [do ddd1012_487 <- get
                                                    do err <- ((do _ <- StateT comment
                                                                   return ()) >> return False) `catchError` const (return True)
-                                                      unless err (gets derivsPosition >>= (throwError . mkParseError ('!' : "_:comment") "not match: " "" ddd1012_487 ["comment"]))
+                                                      unless err (gets position >>= (throwError . mkParseError ('!' : "_:comment") "not match: " "" ddd1012_487 ["comment"]))
                                                    put ddd1012_487
                                                    ddd1015_488 <- get
                                                    do err <- ((do _ <- StateT comEnd
                                                                   return ()) >> return False) `catchError` const (return True)
-                                                      unless err (gets derivsPosition >>= (throwError . mkParseError ('!' : "_:comEnd") "not match: " "" ddd1015_488 ["comEnd"]))
+                                                      unless err (gets position >>= (throwError . mkParseError ('!' : "_:comEnd") "not match: " "" ddd1015_488 ["comEnd"]))
                                                    put ddd1015_488
-                                                   _ <- StateT derivsChars
+                                                   _ <- StateT char
                                                    return ()
                                                    _ <- StateT notComStr
                                                    return ()
                                                    return (),
                                                 return ()]
                 comEnd72_139 = foldl1 mplus [do d1023_489 <- get
-                                                xx1022_490 <- StateT derivsChars
+                                                xx1022_490 <- StateT char
                                                 case xx1022_490 of
                                                     '-' -> return ()
-                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "'-'" "not match pattern: " "" d1023_489 ["derivsChars"])
+                                                    _ -> gets position >>= (throwError . mkParseError "'-'" "not match pattern: " "" d1023_489 ["char"])
                                                 let '-' = xx1022_490
                                                 return ()
                                                 d1025_491 <- get
-                                                xx1024_492 <- StateT derivsChars
+                                                xx1024_492 <- StateT char
                                                 case xx1024_492 of
                                                     '}' -> return ()
-                                                    _ -> gets derivsPosition >>= (throwError . mkParseError "'}'" "not match pattern: " "" d1025_491 ["derivsChars"])
+                                                    _ -> gets position >>= (throwError . mkParseError "'}'" "not match pattern: " "" d1025_491 ["char"])
                                                 let '}' = xx1024_492
                                                 return ()
                                                 return ()]
diff --git a/src/Text/Papillon/SyntaxTree.hs b/src/Text/Papillon/SyntaxTree.hs
--- a/src/Text/Papillon/SyntaxTree.hs
+++ b/src/Text/Papillon/SyntaxTree.hs
@@ -15,7 +15,7 @@
 
 nameFromRF :: ReadFrom -> [String]
 nameFromRF (FromVariable s) = [s]
-nameFromRF FromToken = ["derivsChars"]
+nameFromRF FromToken = ["char"]
 nameFromRF (FromList rf) = nameFromRF rf
 nameFromRF (FromList1 rf) = nameFromRF rf
 nameFromRF (FromOptional rf) = nameFromRF rf
diff --git a/src/Text/PapillonCore.hs b/src/Text/PapillonCore.hs
--- a/src/Text/PapillonCore.hs
+++ b/src/Text/PapillonCore.hs
@@ -2,21 +2,31 @@
 	FlexibleInstances #-}
 
 module Text.PapillonCore (
+	-- * For Text.Papillon library
 	papillonCore,
 
-	papillonFile,
-	PPragma(..),
-	ModuleName,
-	ExportList,
-	Code,
-
 	Source(..),
 	SourceList(..),
-	ParseError(..),
+
+	-- ** For parse error message
+	ParseError,
 	mkParseError,
+	peDerivs,
+	peReading,
+	peMessage,
+	peCode,
+	peComment,
+	pePosition,
+	pePositionS,
 	Pos(..),
 	ListPos(..),
-	pePositionS,
+
+	-- * For papillon command
+	papillonFile,
+	PPragma(..),
+	ModuleName,
+	ExportList,
+	Code,
 ) where
 
 import Language.Haskell.TH
@@ -158,7 +168,7 @@
 	p = pePositionS pe
 
 showReading :: Derivs -> String -> String
-showReading d "derivsChars" = case derivsChars d of
+showReading d "char" = case char d of
 	Right (c, _) -> show c
 	Left _ -> error "bad"
 showReading _ n = "yet: " ++ n
@@ -190,8 +200,8 @@
 		(if isOptionalUsed pg then od else [])
 
 dvCharsN, dvPosN :: Name
-dvCharsN = mkName "derivsChars"
-dvPosN = mkName "derivsPosition"
+dvCharsN = mkName "char"
+dvPosN = mkName "position"
 
 derivs :: Bool -> TypeQ -> TypeQ -> Peg -> DecQ
 derivs _ src tkn pegg = dataD (cxt []) (mkName "Derivs") [] [
@@ -242,18 +252,18 @@
 parseE :: IORef Int -> Bool -> Name -> [Name] -> Peg -> ClauseQ
 parseE g th pgn pnames pegg = do
 	tmps <- mapM (newNewName g) names
-	parseE' g th pgn tmps pnames
+	parseE' g th pgn tmps pnames $ map mkName names
 	where
 	names = map (\(n, _, _) -> n) pegg
-parseE' :: IORef Int -> Bool -> Name -> [Name] -> [Name] -> ClauseQ
-parseE' g th pgn tmps pnames = do
+parseE' :: IORef Int -> Bool -> Name -> [Name] -> [Name] -> [Name] -> ClauseQ
+parseE' g th pgn tmps pnames names = do
 	chars <- newNewName g "chars"
 	clause [varP $ mkName "pos", varP $ mkName "s"]
 					(normalB $ varE $ mkName "d") $ [
 		flip (valD $ varP $ mkName "d") [] $ normalB $ appsE $
 			conE (mkName "Derivs") :
 				map varE tmps ++ [varE chars, varE $ mkName "pos"]
-	 ] ++ zipWith (parseE1 th) tmps pnames ++ [parseChar th pgn chars]
+	 ] ++ zipWith3 (parseE1 th) tmps pnames names ++ [parseChar th pgn chars]
 
 parseChar :: Bool -> Name -> Name -> DecQ
 parseChar th pgn chars = flip (valD $ varP chars) [] $ normalB $
@@ -283,10 +293,9 @@
 	s' = mkName "s'"
 	returnE = varE $ returnN th
 	parseGenE = varE pgn
-parseE1 :: Bool -> Name -> Name -> DecQ
-parseE1 th tmp name = flip (valD $ varP tmp) [] $ normalB $
-	varE (runStateTN th) `appE` varE name
-		`appE` varE (mkName "d")
+parseE1 :: Bool -> Name -> Name -> Name -> DecQ
+parseE1 th tmp name _ = flip (valD $ varP tmp) [] $ normalB $
+	varE (runStateTN th) `appE` varE name `appE` varE (mkName "d")
 
 pSomes :: IORef Int -> Bool -> Name -> Name -> Name -> [Name] -> Peg -> DecsQ
 pSomes g th lst lst1 opt = zipWithM $ pSomes1 g th lst lst1 opt
