diff --git a/Hidden/ParseLib.hs b/Hidden/ParseLib.hs
--- a/Hidden/ParseLib.hs
+++ b/Hidden/ParseLib.hs
@@ -47,15 +47,16 @@
 repeatParse, greedyRepeatParse ::
   MonadPlus m => Int -> Maybe Int -> m b -> m [b]
 repeatParse mn (Just mx) p
-  | mn == mx = replicateM mn p
-  | mn <  mx = replicateM mn p `mplus`
-                 (p >:> repeatParse mn (Just $ mx - 1) p)
+  | mn == mx  = replicateM mn p
+  | mn <  mx  = replicateM mn p `mplus` (p >:> repeatParse mn (Just $ mx - 1) p)
+  | otherwise = error "minimal larger than maximal"
 repeatParse mn Nothing p
   = replicateM mn p `mplus` (p >:> repeatParse mn Nothing p)
 greedyRepeatParse mn (Just mx) p
-  | mn == mx = replicateM mn p
-  | mn <  mx = (p >:> greedyRepeatParse mn (Just $ mx - 1) p) `mplus`
-                 replicateM mn p
+  | mn == mx  = replicateM mn p
+  | mn <  mx  = (p >:> greedyRepeatParse mn (Just $ mx - 1) p) `mplus`
+                  replicateM mn p
+  | otherwise = error "minimal larger than maximal"
 greedyRepeatParse mn Nothing p
   = (p >:> greedyRepeatParse mn Nothing p) `mplus` replicateM mn p
 
diff --git a/Hidden/ParseRegexStr.hs b/Hidden/ParseRegexStr.hs
--- a/Hidden/ParseRegexStr.hs
+++ b/Hidden/ParseRegexStr.hs
@@ -108,7 +108,8 @@
 
 parseTokenX :: RegexSrcParser RegexAction
 parseTokenX = ( spot isSpace >> return NopRegex ) `mplus`
-	      ( token '#' >> list (spot (/='\n')) >>= skipRet (token '\n') >>=
+	      ( token '#' >> list (spot (/='\n')) >>=
+	        skipRet (token '\n' `mplus` endOfInput '\n') >>=
 	        return . Comment )
 
 parsePluses ::
diff --git a/Hidden/RegexPRTypes.hs b/Hidden/RegexPRTypes.hs
--- a/Hidden/RegexPRTypes.hs
+++ b/Hidden/RegexPRTypes.hs
@@ -48,6 +48,7 @@
 setMode 'i' = modify . modifySnd . modifyFirst  . const
 setMode 'm' = modify . modifySnd . modifySecond . const
 setMode 'x' = modify . modifySnd . modifyThird  . const
+setMode m   = error $ "no " ++ [m] ++ " mode"
 
 isModeI, isModeM, isModeX :: RegexSrcParser Bool
 isModeI = gets $ first  . snd
diff --git a/Hidden/TestMain.hs b/Hidden/TestMain.hs
--- a/Hidden/TestMain.hs
+++ b/Hidden/TestMain.hs
@@ -159,4 +159,5 @@
  , Just ( ("\227\129\130", ("", "")), [] )
                                         ~=?
      matchRegexPR "\227\129\130" "\227\129\130"
+ , "abc!abc!abc!bc"                ~=? gsubRegexPR "(?ixm) aBc   . # comment   " "abc!" "abc\nABCDAbcAbc"
  ]
diff --git a/TODO b/TODO
deleted file mode 100644
--- a/TODO
+++ /dev/null
@@ -1,19 +0,0 @@
-2008.1.12 Sat.
-(?> )
-(?ixm-ixm)
-(?ixm-ixm: )
-日本語(UTF-8)対応
-
-2008.1.17 Thr.
-(?<! )
-
-(?ixm-ixm)
-(?ixm-ixm: )
-の2者は実装済み。
-
-TODO LIST
-(?<! )
-\w\W\s\S\d\D in char class([ .. ])
-\08とかについて
-(?> )
-日本語(UTF-8)対応。
diff --git a/TODO.ja.utf-8 b/TODO.ja.utf-8
new file mode 100644
--- /dev/null
+++ b/TODO.ja.utf-8
@@ -0,0 +1,19 @@
+2008.1.12 Sat.
+(?> )
+(?ixm-ixm)
+(?ixm-ixm: )
+日本語(UTF-8)対応
+
+2008.1.17 Thr.
+(?<! )
+
+(?ixm-ixm)
+(?ixm-ixm: )
+の2者は実装済み。
+
+TODO LIST
+(?<! )
+\w\W\s\S\d\D in char class([ .. ])
+\08とかについて
+(?> )
+日本語(UTF-8)対応。
diff --git a/regexpr.cabal b/regexpr.cabal
--- a/regexpr.cabal
+++ b/regexpr.cabal
@@ -1,5 +1,5 @@
 Name:		regexpr
-Version:	0.2.2
+Version:	0.2.3
 License:	GPL
 License-File:	LICENSE
 Author:		Yoshikuni Jujo <PAF01143@nifty.ne.jp>
@@ -23,6 +23,11 @@
                Just (("abc",("kkkabchij","de")),[])
   .
   gsubRegexPR "\\G(\\d\\d\\d)" "\\1," "123456 789" => "123,456, 789"
+  .
+  subRegexPR "(?<=(.)(.)(.))e" " \\3\\2\\1 " "abcdefg" => "abcd dcb fg"
+  .
+  gsubRegexPR "(?ixm)  aBc  . # comment \n\n" "abc!" "abc\nABCDAbcAbc" =>
+               "abc!abc!abc!bc"
 Category:	Text
 Build-Depends:	base, mtl, HUnit
 Build-Type:     Simple
@@ -31,5 +36,5 @@
 		Hidden.ParseLibCore, Hidden.RegexPRCore,
 		Hidden.ParseRegexStr, Hidden.SrcRegActList,
 		Hidden.TestMain
-Extra-source-files: TODO, localConfigure
+Extra-source-files: TODO.ja.utf-8, localConfigure
 ghc-options:    -Wall -O2 -optl-Wl,-s
