diff --git a/Benchmark/bench.hs b/Benchmark/bench.hs
--- a/Benchmark/bench.hs
+++ b/Benchmark/bench.hs
@@ -1,5 +1,4 @@
-import Crypto.Cipher.AES128
-import Crypto.Cipher.AES
+import qualified Crypto.Cipher.AES128 as AES128
 import Crypto.Classes
 import Crypto.Types
 import Criterion
@@ -12,11 +11,9 @@
     let iv  = zeroIV
         ivV = B.replicate 16 0
     pt <- getEntropy (2^16)
-    k  <- buildKeyIO :: IO AESKey128
-    let kV = initAES (B.pack [0..15])
+    k  <- buildKeyIO :: IO AES128.AESKey128
+    let kV = AES.initAES (B.pack [0..15])
     defaultMain
-        [ bench "aes-ecb cipher-aes128" $ nf (encryptBlock k) pt
-        , bench "aes-ctr cipher-aes128" $ nf (fst . ctr k iv) pt
-        , bench "aes-ecb cipher-aes"    $ nf (encryptECB kV) pt
-        , bench "aes-ctr cipher-aes"    $ nf (encryptCTR kV ivV) pt
-        , bench "aes-gcm cipher-aes"    $ nf (fst . encryptGCM kV ivV B.empty) pt]
+        [ bench "aes-ecb cipher-aes128" $ nf (AES128.encryptBlock k) pt
+        , bench "aes-ctr cipher-aes128" $ nf (fst . AES128.ctr k iv) pt
+        ]
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,14 +1,15 @@
+{-# LANGUAGE CPP #-}
+import Control.Monad (unless)
 import Distribution.Simple
 import Distribution.Simple.LocalBuildInfo
-import Distribution.Simple.Setup
-import Distribution.PackageDescription
 import Distribution.Simple.Utils
 import Distribution.Simple.Program
 import Distribution.Verbosity
 import System.Process
-import System.Directory
 import System.Exit
+import System.IO (hFlush, stdout)
 
+main :: IO ()
 main = defaultMainWithHooks hk
  where
  hk = simpleUserHooks { buildHook = \pd lbi uh bf -> do
@@ -17,7 +18,7 @@
                                             mConf  = lookupProgram ccProg (withPrograms lbi)
                                             hcConf = lookupProgram hcProg (withPrograms lbi)
                                             err = error "Could not determine C compiler"
-                                            cc  = locationPath . programLocation  . maybe err id $ mConf
+                                            _cc  = locationPath . programLocation  . maybe err id $ mConf
                                             hc  = locationPath . programLocation  . maybe err id $ hcConf
                                         b <- canUseAesIntrinsicsFlag hc
                                         let newWithPrograms1 = userSpecifyArgs "gcc" aesArgs (withPrograms lbi)
@@ -40,6 +41,30 @@
                                 , "int real_main() {"
                                 , "return 0; }"
                                 ])
-        ec <- rawSystemExitCode normal cc (aesArgsHC ++ ["-c", tmpDir ++ "/testIntrinsic.c"])
+        ec <- myRawSystemExitCode normal cc (aesArgsHC ++ ["-c", tmpDir ++ "/testIntrinsic.c"])
         notice normal $ "Result of NI Intrinsics Test: " ++ show (ec == ExitSuccess)
         return (ec == ExitSuccess)
+
+myRawSystemExitCode :: Verbosity -> FilePath -> [String] -> IO ExitCode
+#if __GLASGOW_HASKELL__ >= 704
+-- We know for sure, that if GHC >= 7.4 implies Cabal >= 1.14
+myRawSystemExitCode = rawSystemExitCode
+#else
+-- Legacy branch:
+-- We implement our own 'rawSystemExitCode', this will even work if
+-- the user happens to have Cabal >= 1.14 installed with GHC 7.0 or
+-- 7.2
+myRawSystemExitCode verbosity path args = do
+    printRawCommandAndArgs verbosity path args
+    hFlush stdout
+    exitcode <- rawSystem path args
+    unless (exitcode == ExitSuccess) $ do
+        debug verbosity $ path ++ " returned " ++ show exitcode
+    return exitcode
+  where
+    printRawCommandAndArgs :: Verbosity -> FilePath -> [String] -> IO ()
+    printRawCommandAndArgs verbosity path args
+      | verbosity >= deafening = print (path, args)
+      | verbosity >= verbose = putStrLn $ unwords (path : args)
+      | otherwise = return ()
+#endif
diff --git a/cipher-aes128.cabal b/cipher-aes128.cabal
--- a/cipher-aes128.cabal
+++ b/cipher-aes128.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                cipher-aes128
-version:             0.7.0.1
+version:             0.7.0.2
 synopsis:            AES and common modes using AES-NI when available.
 description:         Cipher-aes128 is an implementation of AES and common modes of operation.  It borrows Hanquez's C AES code (see 'cipher-aes') but
                      is unique due to including compile-time detection of
@@ -20,7 +20,8 @@
 build-type:          Custom
 -- build-type:          Simple
 -- ^^^ For HaLVM
-cabal-version:       >=1.12
+cabal-version:       >=1.10
+tested-with:         GHC==7.10.3
 
 extra-source-files:       ./cbits/*.h, ./cbits/*.c
                         , AUTHORS
@@ -63,9 +64,10 @@
   type:         exitcode-stdio-1.0
   hs-source-dirs:       . Benchmark
   main-is:              bench.hs
-  build-depends:        base < 5, criterion, crypto-api, entropy, bytestring, tagged, cereal, cipher-aes
+  build-depends:        base < 5, criterion, crypto-api, entropy, bytestring, tagged, cereal
   ghc-options:          -O2
   include-dirs:        cbits
+  default-language:    Haskell2010
   c-sources:           ./cbits/aes.c
                      , ./cbits/aes_generic.c
                      , ./cbits/aes_x86ni.c
