diff --git a/MissingH.cabal b/MissingH.cabal
--- a/MissingH.cabal
+++ b/MissingH.cabal
@@ -1,9 +1,9 @@
 Name: MissingH
-Version: 1.2.0.2
+Version: 1.2.1.0
 License: BSD3
 Maintainer: John Goerzen <jgoerzen@complete.org>
 Author: John Goerzen
-Copyright: Copyright (c) 2004-2011 John Goerzen
+Copyright: Copyright (c) 2004-2014 John Goerzen
 license-file: LICENSE
 extra-source-files: LICENSE,
                     announcements/0.10.0.txt,
@@ -102,6 +102,7 @@
 
   Build-Depends: network, parsec, base,
                mtl, HUnit, regex-compat,
+               errorcall-eq-instance,
                filepath,
                hslogger
   If flag(splitBase)
diff --git a/src/Data/Compression/Inflate.hs b/src/Data/Compression/Inflate.hs
--- a/src/Data/Compression/Inflate.hs
+++ b/src/Data/Compression/Inflate.hs
@@ -37,6 +37,7 @@
 import Data.List
 import Data.Maybe
 import qualified Data.Char
+import Control.Applicative
 import Control.Monad
 
 import Data.Bits
@@ -123,6 +124,14 @@
                                 in y s'
  -- return :: a -> InfM a
     return x = InfM $ \s -> (x, s)
+
+instance Applicative InfM where
+    pure = return
+    (<*>) = ap
+
+instance Functor InfM where
+    fmap f (InfM g) = InfM $ \s ->
+        case g s of ~(a, s') -> (f a, s')
 
 set_bits :: [Bit] -> InfM ()
 set_bits bs = InfM $ const ((), State bs 0 (array (0, 32767) []) 0)
diff --git a/src/System/Cmd/Utils.hs b/src/System/Cmd/Utils.hs
--- a/src/System/Cmd/Utils.hs
+++ b/src/System/Cmd/Utils.hs
@@ -95,7 +95,7 @@
 -- FIXME - largely obsoleted by 6.4 - convert to wrappers.
 
 import System.Exit
-import System.Cmd
+import System.Process (rawSystem)
 import System.Log.Logger
 #if !(defined(mingw32_HOST_OS) || defined(mingw32_TARGET_OS) || defined(__MINGW32__))
 import System.Posix.IO
@@ -325,7 +325,11 @@
                 Just (Exited (ExitSuccess)) -> return ()
                 Just (Exited (ExitFailure fc)) ->
                     cmdfailed funcname fp args fc
+#if MIN_VERSION_unix(2,7,0)
+                Just (Terminated sig _) ->
+#else
                 Just (Terminated sig) ->
+#endif
                     warnfail fp args $ "Terminated by signal " ++ show sig
                 Just (Stopped sig) ->
                     warnfail fp args $ "Stopped by signal " ++ show sig
@@ -351,7 +355,11 @@
        case ec of
             Exited ExitSuccess -> return ()
             Exited (ExitFailure fc) -> cmdfailed "safeSystem" command args fc
+#if MIN_VERSION_unix(2,7,0)
+            Terminated s _ -> cmdsignalled "safeSystem" command args s
+#else
             Terminated s -> cmdsignalled "safeSystem" command args s
+#endif
             Stopped s -> cmdsignalled "safeSystem" command args s
 #endif
 
diff --git a/src/System/Debian.hs b/src/System/Debian.hs
--- a/src/System/Debian.hs
+++ b/src/System/Debian.hs
@@ -28,7 +28,7 @@
                        )
     where
 
-import System.Cmd
+import System.Process
 import System.IO.Unsafe
 import System.Exit
 
diff --git a/testsrc/Eithertest.hs b/testsrc/Eithertest.hs
--- a/testsrc/Eithertest.hs
+++ b/testsrc/Eithertest.hs
@@ -12,9 +12,7 @@
 import Data.Either.Utils
 import Test.HUnit.Tools
 import Control.Exception
-
-instance Eq ErrorCall where
-    (ErrorCall x) == (ErrorCall y) = x == y
+import Control.Exception.ErrorCall.EqInstance
 
 test_maybeToEither =
     let f msg inp exp = TestLabel msg $ TestCase $ assertEqual "" exp inp in
