diff --git a/System/USB/IDDB/LinuxUsbIdRepo.hs b/System/USB/IDDB/LinuxUsbIdRepo.hs
--- a/System/USB/IDDB/LinuxUsbIdRepo.hs
+++ b/System/USB/IDDB/LinuxUsbIdRepo.hs
@@ -1,6 +1,7 @@
-{-# LANGUAGE CPP #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE UnicodeSyntax #-}
+{-# LANGUAGE CPP
+           , NoImplicitPrelude
+           , UnicodeSyntax 
+  #-}
 
 {-| Functions to acquire a database from <http://linux-usb.org>. -}
 
@@ -20,7 +21,7 @@
 
 -- base
 import Control.Arrow         ( second )
-import Control.Monad         ( (>>=), (>>), fail, fmap, return )
+import Control.Monad         ( (>>=), (>>), fmap, return )
 import Data.Bool             ( Bool, not )
 import Data.Char             ( String, isSpace )
 import Data.Function         ( ($), id )
@@ -31,7 +32,7 @@
 import Data.Maybe            ( Maybe, fromJust )
 import Data.Tuple            ( fst )
 import Numeric               ( readHex )
-import Prelude               ( Num, error, fromInteger, seq )
+import Prelude               ( Num, error, seq )
 import System.IO             ( IO, FilePath )
 #if MIN_VERSION_base(4,2,0)
 import System.IO             ( IOMode(ReadMode)
@@ -39,6 +40,11 @@
                              )
 #else
 import System.IO             ( readFile )
+#endif
+
+#if __GLASGOW_HASKELL__ < 700
+import Control.Monad ( fail )
+import Prelude       ( fromInteger )
 #endif
 
 -- base-unicode-symbols
diff --git a/System/USB/IDDB/UsbDotOrg.hs b/System/USB/IDDB/UsbDotOrg.hs
--- a/System/USB/IDDB/UsbDotOrg.hs
+++ b/System/USB/IDDB/UsbDotOrg.hs
@@ -1,5 +1,7 @@
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE UnicodeSyntax #-}
+{-# LANGUAGE CPP
+           , NoImplicitPrelude
+           , UnicodeSyntax 
+  #-}
 
 {-| Functions to acquire a database from <http://www.usb.org>. -}
 
@@ -18,13 +20,17 @@
 -------------------------------------------------------------------------------
 
 -- base
-import Control.Monad         ( (>>=), fail, fmap, return )
+import Control.Monad         ( (>>=), fmap, return )
 import Data.Char             ( String )
 import Data.Function         ( ($) )
 import Data.Int              ( Int )
 import Data.Maybe            ( Maybe, fromJust )
 import System.IO             ( IO, FilePath, readFile )
 import Text.Read             ( read )
+
+#if __GLASGOW_HASKELL__ < 700
+import Control.Monad ( fail )
+#endif
 
 -- base-unicode-symbols
 import Data.Function.Unicode ( (∘) )
diff --git a/usb-id-database.cabal b/usb-id-database.cabal
--- a/usb-id-database.cabal
+++ b/usb-id-database.cabal
@@ -1,5 +1,5 @@
 name:          usb-id-database
-version:       0.4.0.4
+version:       0.4.0.5
 cabal-version: >=1.6
 build-type:    Simple
 stability:     provisional
@@ -33,7 +33,7 @@
                , bytestring                 == 0.9.*
                , containers                 <  0.5
                , containers-unicode-symbols <  0.4
-               , parsimony                  >= 1 && < 1.1
+               , parsimony                  >= 1 && < 1.2
   ghc-options: -Wall
   cpp-options: -DBUILD_WITH_CABAL
   exposed-modules: System.USB.IDDB
