diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -97,6 +97,9 @@
 import Distribution.Simple.Utils (die)
 #endif
 import Distribution.Simple.Utils (info, installOrdinaryFile, notice)
+#if MIN_VERSION_Cabal(2,2,0)
+import Distribution.Types.GenericPackageDescription (lookupFlagAssignment)
+#endif
 import Distribution.Verbosity (Verbosity, normal)
 import System.Directory (
   createDirectoryIfMissing,
@@ -332,8 +335,13 @@
     _ -> do
       -- Inspect the 'qt4' and 'qt5' package flags.
       let flags = configConfigurationsFlags configFlags
-          qt4Flag = fromMaybe False $ lookup (mkFlagName "qt4") flags
-          qt5Flag = fromMaybe False $ lookup (mkFlagName "qt5") flags
+#if MIN_VERSION_Cabal(2,2,0)
+          lookupFlag = lookupFlagAssignment
+#else
+          lookupFlag = lookup
+#endif
+          qt4Flag = fromMaybe False $ lookupFlag (mkFlagName "qt4") flags
+          qt5Flag = fromMaybe False $ lookupFlag (mkFlagName "qt5") flags
           qtFlag = if qt4Flag then Just 4 else if qt5Flag then Just 5 else Nothing
       when (qt4Flag && qt5Flag) $
         dieFn $ concat
diff --git a/qtah-qt5.cabal b/qtah-qt5.cabal
--- a/qtah-qt5.cabal
+++ b/qtah-qt5.cabal
@@ -1,5 +1,5 @@
 name: qtah-qt5
-version: 0.5.0
+version: 0.5.1
 synopsis: Qt bindings for Haskell
 homepage: http://khumba.net/projects/qtah
 license: LGPL-3
diff --git a/src/Graphics/UI/Qtah/Internal/Callback.hs-boot b/src/Graphics/UI/Qtah/Internal/Callback.hs-boot
--- a/src/Graphics/UI/Qtah/Internal/Callback.hs-boot
+++ b/src/Graphics/UI/Qtah/Internal/Callback.hs-boot
@@ -1,8 +1,4 @@
-{-# LANGUAGE CPP, FlexibleContexts, FlexibleInstances, GeneralizedNewtypeDeriving, MultiParamTypeClasses, ScopedTypeVariables, TypeSynonymInstances, UndecidableInstances #-}
-#if !MIN_VERSION_base(4,8,0)
-{-# LANGUAGE OverlappingInstances #-}
-#endif
-
+{-# LANGUAGE FlexibleContexts, FlexibleInstances, ForeignFunctionInterface, GeneralizedNewtypeDeriving, MonoLocalBinds, MultiParamTypeClasses, ScopedTypeVariables, TypeSynonymInstances, UndecidableInstances #-}
 ---------- GENERATED FILE, EDITS WILL BE LOST ----------
 
 module Graphics.UI.Qtah.Internal.Callback (
diff --git a/src/Graphics/UI/Qtah/Std.hs b/src/Graphics/UI/Qtah/Std.hs
--- a/src/Graphics/UI/Qtah/Std.hs
+++ b/src/Graphics/UI/Qtah/Std.hs
@@ -1,8 +1,4 @@
-{-# LANGUAGE CPP, FlexibleContexts, FlexibleInstances, GeneralizedNewtypeDeriving, MultiParamTypeClasses, ScopedTypeVariables, TypeSynonymInstances, UndecidableInstances #-}
-#if !MIN_VERSION_base(4,8,0)
-{-# LANGUAGE OverlappingInstances #-}
-#endif
-
+{-# LANGUAGE FlexibleContexts, FlexibleInstances, ForeignFunctionInterface, GeneralizedNewtypeDeriving, MonoLocalBinds, MultiParamTypeClasses, ScopedTypeVariables, TypeSynonymInstances, UndecidableInstances #-}
 ---------- GENERATED FILE, EDITS WILL BE LOST ----------
 
 module Graphics.UI.Qtah.Std (
@@ -63,18 +59,10 @@
 class StdStringValue a where
   withStdStringPtr :: a -> (StdStringConst -> HoppyP.IO b) -> HoppyP.IO b
 
-#if MIN_VERSION_base(4,8,0)
 instance {-# OVERLAPPABLE #-} StdStringConstPtr a => StdStringValue a where
-#else
-instance StdStringConstPtr a => StdStringValue a where
-#endif
   withStdStringPtr = HoppyP.flip ($) . toStdStringConst
 
-#if MIN_VERSION_base(4,8,0)
 instance {-# OVERLAPPING #-} StdStringValue (HoppyP.String) where
-#else
-instance StdStringValue (HoppyP.String) where
-#endif
   withStdStringPtr = HoppyFHR.withCppObj
 
 class (HoppyFHR.CppPtr this) => StdStringConstPtr this where
