diff --git a/Text/Appar/Parser.hs b/Text/Appar/Parser.hs
--- a/Text/Appar/Parser.hs
+++ b/Text/Appar/Parser.hs
@@ -55,6 +55,7 @@
 
 import Control.Applicative
 import Control.Monad
+import Control.Monad.Fail
 import Data.Char
 import Text.Appar.Input
 
@@ -83,6 +84,8 @@
     p >>= f  = P $ \bs -> case runParser p bs of
         (Nothing, bs') -> (Nothing, bs')
         (Just a,  bs') -> runParser (f a) bs'
+
+instance MonadFail (MkParser inp) where
     fail _   = P $ \bs -> (Nothing, bs)
 
 instance MonadPlus (MkParser inp) where
diff --git a/appar.cabal b/appar.cabal
--- a/appar.cabal
+++ b/appar.cabal
@@ -1,5 +1,5 @@
 Name:                   appar
-Version:                0.1.4
+Version:                0.1.5
 Author:                 Kazu Yamamoto <kazu@iij.ad.jp>
 Maintainer:             Kazu Yamamoto <kazu@iij.ad.jp>
 License:                BSD3
@@ -11,10 +11,7 @@
 Build-Type:             Simple
 Extra-Source-Files:     README
 library
-  if impl(ghc >= 6.12)
-    GHC-Options:        -Wall -fno-warn-unused-do-bind
-  else
-    GHC-Options:        -Wall
+  GHC-Options:          -Wall -Wcompat -Wnoncanonical-monadfail-instances
   Exposed-Modules:      Text.Appar.String
                         Text.Appar.ByteString
                         Text.Appar.LazyByteString
