diff --git a/Changes b/Changes
--- a/Changes
+++ b/Changes
@@ -1,3 +1,8 @@
+0.4.0.3:
+    Relaxed dependencies on mtl and containers
+    Fixed warnings from GHC-7.5, Word(..) moved to GHC.Types
+    Removed SPECIALISE pragma from inline function (warning from 7.5, probably
+    pointless anyway)
 0.4.0.2:
     Sped up factor sieves. They need more space now, but the speedup is worth it, IMO.
     Raised spec-constr limit in MoebiusInversion.Int
diff --git a/Math/NumberTheory/GCD.hs b/Math/NumberTheory/GCD.hs
--- a/Math/NumberTheory/GCD.hs
+++ b/Math/NumberTheory/GCD.hs
@@ -164,12 +164,6 @@
 -- Auxiliaries
 
 -- gcd of two odd numbers
-{-# SPECIALISE gcdOdd :: Integer -> Integer -> Integer #-}
-#if WORD_SIZE_IN_BITS < 64
-{-# SPECIALISE gcdOdd :: Int64 -> Int64 -> Int64,
-                         Word64 -> Word64 -> Word64
-  #-}
-#endif
 {-# INLINE gcdOdd #-}
 gcdOdd :: (Integral a, Bits a) => a -> a -> a
 gcdOdd a b
diff --git a/Math/NumberTheory/GCD/LowLevel.hs b/Math/NumberTheory/GCD/LowLevel.hs
--- a/Math/NumberTheory/GCD/LowLevel.hs
+++ b/Math/NumberTheory/GCD/LowLevel.hs
@@ -10,7 +10,7 @@
 -- Normally, accessing these via the higher level interface of "Math.NumberTheory.GCD"
 -- should be sufficient.
 --
-{-# LANGUAGE MagicHash, UnboxedTuples #-}
+{-# LANGUAGE CPP, MagicHash, UnboxedTuples #-}
 module Math.NumberTheory.GCD.LowLevel
   ( -- * Specialised GCDs
     gcdInt
@@ -27,7 +27,9 @@
   ) where
 
 import GHC.Base
-import GHC.Word (Word(..))
+#if __GLASGOW_HASKELL__ < 705
+import GHC.Word (Word(..))      -- Moved to GHC.Types
+#endif
 
 import Math.NumberTheory.Utils
 
diff --git a/Math/NumberTheory/Logarithms.hs b/Math/NumberTheory/Logarithms.hs
--- a/Math/NumberTheory/Logarithms.hs
+++ b/Math/NumberTheory/Logarithms.hs
@@ -9,7 +9,7 @@
 -- Integer Logarithms. For efficiency, the internal representation of 'Integer's
 -- from integer-gmp is used.
 --
-{-# LANGUAGE MagicHash #-}
+{-# LANGUAGE CPP, MagicHash #-}
 module Math.NumberTheory.Logarithms
     ( -- * Integer logarithms with input checks
       integerLogBase
@@ -24,7 +24,9 @@
     ) where
 
 import GHC.Base
-import GHC.Word (Word(..))
+#if __GLASGOW_HASKELL__ < 705
+import GHC.Word (Word(..))      -- Moved to GHC.Types
+#endif
 
 import Data.Bits
 import Data.Array.Unboxed
diff --git a/Math/NumberTheory/Powers/Fourth.hs b/Math/NumberTheory/Powers/Fourth.hs
--- a/Math/NumberTheory/Powers/Fourth.hs
+++ b/Math/NumberTheory/Powers/Fourth.hs
@@ -29,7 +29,9 @@
 import Data.Array.Base (unsafeAt, unsafeWrite)
 
 import Data.Bits
+#if __GLASGOW_HASKELL__ < 705
 import Data.Word
+#endif
 
 import Math.NumberTheory.Logarithms.Internal (integerLog2#)
 
diff --git a/Math/NumberTheory/Powers/General.hs b/Math/NumberTheory/Powers/General.hs
--- a/Math/NumberTheory/Powers/General.hs
+++ b/Math/NumberTheory/Powers/General.hs
@@ -27,7 +27,9 @@
 import GHC.Integer.GMP.Internals
 
 import Data.Bits
+#if __GLASGOW_HASKELL__ < 705
 import Data.Word
+#endif
 import Data.List (foldl')
 import qualified Data.Set as Set
 
diff --git a/Math/NumberTheory/Powers/Squares.hs b/Math/NumberTheory/Powers/Squares.hs
--- a/Math/NumberTheory/Powers/Squares.hs
+++ b/Math/NumberTheory/Powers/Squares.hs
@@ -32,7 +32,9 @@
 import Data.Array.Base (unsafeAt, unsafeWrite)
 
 import Data.Bits
-import Data.Word
+#if __GLASGOW_HASKELL__ < 705
+import Data.Word        -- Moved to GHC.Types
+#endif
 
 import Math.NumberTheory.Logarithms.Internal (integerLog2#)
 
diff --git a/Math/NumberTheory/Primes/Factorisation/Montgomery.hs b/Math/NumberTheory/Primes/Factorisation/Montgomery.hs
--- a/Math/NumberTheory/Primes/Factorisation/Montgomery.hs
+++ b/Math/NumberTheory/Primes/Factorisation/Montgomery.hs
@@ -43,7 +43,9 @@
 #include "MachDeps.h"
 
 import GHC.Base
-import GHC.Word
+#if __GLASGOW_HASKELL__ < 705
+import GHC.Word     -- Moved to GHC.Types
+#endif
 import Data.Array.Base
 
 import System.Random
diff --git a/Math/NumberTheory/Primes/Testing/Probabilistic.hs b/Math/NumberTheory/Primes/Testing/Probabilistic.hs
--- a/Math/NumberTheory/Primes/Testing/Probabilistic.hs
+++ b/Math/NumberTheory/Primes/Testing/Probabilistic.hs
@@ -27,7 +27,9 @@
 import Data.Bits
 
 import GHC.Base
-import GHC.Word
+#if __GLASGOW_HASKELL__ < 705
+import GHC.Word     -- Moved to GHC.Types
+#endif
 import GHC.Integer.GMP.Internals
 
 -- | @'isPrime' n@ tests whether @n@ is a prime (negative or positive).
diff --git a/Math/NumberTheory/Utils.hs b/Math/NumberTheory/Utils.hs
--- a/Math/NumberTheory/Utils.hs
+++ b/Math/NumberTheory/Utils.hs
@@ -25,7 +25,9 @@
 #include "MachDeps.h"
 
 import GHC.Base
-import GHC.Word
+#if __GLASGOW_HASKELL__ < 705
+import GHC.Word     -- Word and its constructor moved to GHC.Types
+#endif
 
 import GHC.Integer
 import GHC.Integer.GMP.Internals
diff --git a/arithmoi.cabal b/arithmoi.cabal
--- a/arithmoi.cabal
+++ b/arithmoi.cabal
@@ -1,5 +1,5 @@
 name                : arithmoi
-version             : 0.4.0.2
+version             : 0.4.0.3
 cabal-version       : >= 1.6
 author              : Daniel Fischer
 copyright           : (c) 2011 Daniel Fischer
@@ -27,14 +27,15 @@
 
 category            : Math, Algorithms, Number Theory
 
-tested-with         : GHC == 6.12.3, GHC == 7.0.2, GHC == 7.0.4, GHC == 7.2.1, GHC == 7.4.1
+tested-with         : GHC == 6.12.3, GHC == 7.0.2, GHC == 7.0.4, GHC == 7.2.1, GHC == 7.4.1,
+                      GHC == 7.4.2
 
 extra-source-files  : Changes, TODO
 
 library
     build-depends       : base >= 4 && < 5, array >= 0.3 && < 0.5, ghc-prim,
-                          integer-gmp, containers >= 0.3 && < 0.5, random >= 1.0 && < 1.1,
-                          mtl >= 2.0 && < 2.1
+                          integer-gmp, containers >= 0.3 && < 0.6, random >= 1.0 && < 1.1,
+                          mtl >= 2.0 && < 2.2
     exposed-modules     : Math.NumberTheory.Logarithms
                           Math.NumberTheory.Moduli
                           Math.NumberTheory.MoebiusInversion
