diff --git a/llvm-pkg-config.cabal b/llvm-pkg-config.cabal
--- a/llvm-pkg-config.cabal
+++ b/llvm-pkg-config.cabal
@@ -1,5 +1,6 @@
+Cabal-Version:       2.2
 Name:                llvm-pkg-config
-Version:             0.0.1
+Version:             0.0.2
 Synopsis:            Generate Pkg-Config configuration file for LLVM
 Description:
   Building the @llvm-base@ package is fragile due to its configuration process.
@@ -38,7 +39,7 @@
   .
   The package also includes the bash script @make-pkg-config.sh@
   that should also generate the @llvm.pc@ file.
-License:             BSD3
+License:             BSD-3-Clause
 License-file:        LICENSE
 Author:              Henning Thielemann
 Maintainer:          llvm@henning-thielemann.de
@@ -46,31 +47,31 @@
 Tested-With:         GHC==7.4.2, GHC==7.8.4, GHC==8.0.1
 Category:            Code Generation
 Build-type:          Simple
-Cabal-version:       >=1.6
 Data-Files:
   make-pkg-config.sh
 
 Source-Repository this
-  Tag:         0.0.1
+  Tag:         0.0.2
   Type:        darcs
-  Location:    http://hub.darcs.net/thielema/llvm-pkg-config/
+  Location:    https://hub.darcs.net/thielema/llvm-pkg-config/
 
 Source-Repository head
   Type:        darcs
-  Location:    http://hub.darcs.net/thielema/llvm-pkg-config/
+  Location:    https://hub.darcs.net/thielema/llvm-pkg-config/
 
 
 Executable llvm-pkg-config
+  Default-Language: Haskell98
   Main-is: Main.hs
   Other-Modules:
     Options
-    Utility
   Hs-Source-Dirs: src
   GHC-Options: -Wall -threaded
   Build-depends:
-    Cabal >=1.14 && <2,
-    process >=1.0 && <1.5,
+    Cabal >=1.14 && <4,
+    shell-utility >=0.0 && <0.2,
+    process >=1.0 && <1.7,
     explicit-exception >=0.1.7 && <0.2,
-    transformers >=0.2.2 && <0.6,
-    utility-ht >=0.0.8 && <0.1,
+    transformers >=0.2.2 && <0.7,
+    utility-ht >=0.0.14 && <0.1,
     base >=4.2 && <5
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -1,13 +1,12 @@
 module Main (main) where
 
 import qualified Options
-import Utility (exitFailureMsg, )
+import Shell.Utility.Exit (exitFailureMsg)
 
 import qualified System.Process as Proc
 import Distribution.Simple.Utils (setFileOrdinary, )
 
-import qualified Data.List.HT as ListHT
-import qualified Data.List as List
+import qualified Data.List.Reverse.StrictSpine as ListRev
 import qualified Data.Char as Char
 import Text.Printf (printf, )
 
@@ -17,15 +16,13 @@
 
 callLLVMConfig :: Options.T -> String -> IO String
 callLLVMConfig flags arg =
-   fmap (ListHT.dropWhileRev Char.isSpace) $
+   fmap (ListRev.dropWhile Char.isSpace) $
    Proc.readProcess (Options.llvmConfigPath flags) [arg] ""
 
 createPkgConfig :: Options.T -> IO String
 createPkgConfig flags = do
    fullVersion <- callLLVMConfig flags "--version"
    let version = takeWhile (\c -> Char.isDigit c || c=='.') fullVersion
-   cxxflags <- callLLVMConfig flags "--cxxflags"
-   let stdflags = filter (List.isPrefixOf "-std") $ words cxxflags
    libdir <- callLLVMConfig flags "--libdir"
    includedir <- callLLVMConfig flags "--includedir"
    return $ unlines $
@@ -36,7 +33,7 @@
       "Requires:" :
       "Conflicts:" :
       printf "Libs: -L%s -lLLVM-%s" libdir version :
-      printf "Cflags: -I%s%s" includedir (concatMap (' ':) stdflags) :
+      printf "Cflags: -I%s" includedir :
       []
 
 run :: Options.T -> IO ()
diff --git a/src/Utility.hs b/src/Utility.hs
deleted file mode 100644
--- a/src/Utility.hs
+++ /dev/null
@@ -1,10 +0,0 @@
-module Utility where
-
-import qualified System.Exit as Exit
-import qualified System.IO as IO
-
-
-exitFailureMsg :: String -> IO ()
-exitFailureMsg msg = do
-   IO.hPutStrLn IO.stderr msg
-   Exit.exitFailure
