diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+### 0.7.0.7 (unreleased)
+
+- update bounds, fix warnings, require ghc 8.0+
+
 ### 0.7.0.6
 
 - Fixes issue causing compilation error to happen with ghc-8.8.2 [#33][#34]
diff --git a/System/Console/Docopt/OptParse.hs b/System/Console/Docopt/OptParse.hs
--- a/System/Console/Docopt/OptParse.hs
+++ b/System/Console/Docopt/OptParse.hs
@@ -68,17 +68,17 @@
                     let rest = list \\ [pat]
                     argDelimIfNotInShortOptStack
                     makeParser $ Unordered rest
-  -- (Optional pat) ->
-  --       case pat of
-  --         Unordered ps -> case ps of
-  --           p:[] -> makeParser $ Optional p
-  --           _  -> optional $ choice $ (parseThisThenRest ps) `map` ps
-  --                 where parseThisThenRest list pat = try $ do
-  --                         makeParser pat
-  --                         let rest = list \\ [pat]
-  --                         argDelimIfNotInShortOptStack
-  --                         makeParser $ Optional $ Unordered rest
-  --         _ -> optional $ try $ makeParser pat
+  (Optional pat) ->
+        case pat of
+          Unordered ps -> case ps of
+            p:[] -> makeParser $ Optional p
+            _  -> optional $ choice $ (parseThisThenRest ps) `map` ps
+                  where parseThisThenRest list pat = try $ do
+                          makeParser pat
+                          let rest = list \\ [pat]
+                          argDelimIfNotInShortOptStack
+                          makeParser $ Optional $ Unordered rest
+          _ -> optional $ try $ makeParser pat
   (Repeated pat) -> do
       case pat of
         (Optional p) -> (try $ makeParser p) `sepBy` argDelimIfNotInShortOptStack
diff --git a/System/Console/Docopt/QQ/Instances.hs b/System/Console/Docopt/QQ/Instances.hs
--- a/System/Console/Docopt/QQ/Instances.hs
+++ b/System/Console/Docopt/QQ/Instances.hs
@@ -1,19 +1,15 @@
-{-# LANGUAGE TemplateHaskell #-}
+{-# LANGUAGE DeriveLift#-}
+{-# LANGUAGE StandaloneDeriving #-}
+{-# LANGUAGE FlexibleInstances #-}
+
 {-# OPTIONS_GHC -fno-warn-orphans #-}
 {-# OPTIONS_HADDOCK hide, prune #-}
+
 module System.Console.Docopt.QQ.Instances where
 
 import System.Console.Docopt.Types
-import Language.Haskell.TH.Lift
-
-import qualified Data.Map as M
-
-instance (Lift k, Lift v) => Lift (M.Map k v) where
-    lift m = [| M.fromList assoc |]
-        where assoc = M.toList m
+import Language.Haskell.TH.Syntax (Lift)
+import Data.Map.Internal (Map(..))
 
-$(deriveLiftMany [ ''Option
-                 , ''Pattern
-                 , ''OptionInfo
-                 , ''Docopt
-                 ])
+deriving instance Lift (Map Option OptionInfo)
+deriving instance Lift (Docopt)
diff --git a/System/Console/Docopt/Types.hs b/System/Console/Docopt/Types.hs
--- a/System/Console/Docopt/Types.hs
+++ b/System/Console/Docopt/Types.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE DeriveLift#-}
 module System.Console.Docopt.Types
     where
 
@@ -5,7 +6,7 @@
 import           Data.List (nub)
 import           Data.Map (Map)
 import qualified Data.Map as M
-
+import Language.Haskell.TH.Syntax (Lift)
 
 -- * Usage expression Types
 
@@ -17,7 +18,7 @@
                | Optional (Pattern a)
                | Repeated (Pattern a)
                | Atom a
-               deriving (Show, Eq)
+               deriving (Show, Eq, Lift)
 
 atoms :: Eq a => Pattern a -> [a]
 atoms (Sequence ps)  = concatMap atoms ps
@@ -33,7 +34,7 @@
             | Command Name
             | Argument Name
             | AnyOption
-            deriving (Show, Eq, Ord)
+            deriving (Show, Eq, Ord, Lift)
 
 type OptPattern = Pattern Option
 
@@ -57,7 +58,7 @@
                   , defaultVal :: Maybe String
                   , expectsVal :: Bool
                   , isRepeated :: Bool
-                  } deriving (Show, Eq)
+                  } deriving (Show, Eq, Lift)
 
 fromSynList :: [Option] -> OptionInfo
 fromSynList opts = OptionInfo { synonyms = opts
diff --git a/System/Console/Docopt/UsageParse.hs b/System/Console/Docopt/UsageParse.hs
--- a/System/Console/Docopt/UsageParse.hs
+++ b/System/Console/Docopt/UsageParse.hs
@@ -4,7 +4,7 @@
 import qualified Data.Map as M
 import           Data.Ord (comparing)
 import           GHC.Exts (Down(..))
-import           Data.List (nub, sortBy, maximumBy, dropWhile, dropWhileEnd)
+import           Data.List (nub, sortBy, maximumBy, dropWhileEnd)
 
 import System.Console.Docopt.ParseUtils
 import System.Console.Docopt.Types
diff --git a/docopt.cabal b/docopt.cabal
--- a/docopt.cabal
+++ b/docopt.cabal
@@ -1,5 +1,5 @@
 name:                docopt
-version:             0.7.0.6
+version:             0.7.0.7
 synopsis:            A command-line interface parser that will make you smile
 description:         Docopt parses command-line interface usage text that adheres to a familiar syntax, and from it builds a command-line argument parser that will ensure your program is invoked correctly with the available options specified in the usage text. This allows the developer to write a usage text and get an argument parser for free.
 
@@ -34,7 +34,6 @@
     Build with QuasiQuoter usage parsers, which requires Template Haskell
 
 library
-  default-language: Haskell2010
   exposed-modules:    System.Console.Docopt.NoTH
 
   other-modules:      System.Console.Docopt.ApplicativeParsec
@@ -58,11 +57,11 @@
     exposed-modules:  System.Console.Docopt
     other-modules:    System.Console.Docopt.QQ
                       System.Console.Docopt.QQ.Instances
-    build-depends:    template-haskell >= 2.15.0 && < 2.16,
-                      th-lift >= 0.8.2 && < 0.9
+    build-depends:    template-haskell >= 2.15.0 && < 2.18
 
+  default-language:   Haskell2010
+
 test-suite tests
-  default-language: Haskell2010
   type:               exitcode-stdio-1.0
   hs-source-dirs:     ./, test
   main-is:            LangAgnosticTests.hs
@@ -84,9 +83,9 @@
                       aeson,
                       bytestring,
                       text,
-                      template-haskell >= 2.15.0 && < 2.16,
-                      th-lift >= 0.8.2 && < 0.9
+                      template-haskell >= 2.15.0 && < 2.18
 
+
   other-modules:      System.Console.Docopt
                       System.Console.Docopt.ApplicativeParsec
                       System.Console.Docopt.ParseUtils
@@ -97,3 +96,5 @@
                       System.Console.Docopt.QQ
                       System.Console.Docopt.QQ.Instances
                       Paths_docopt
+
+  default-language:   Haskell2010
