diff --git a/language-docker.cabal b/language-docker.cabal
--- a/language-docker.cabal
+++ b/language-docker.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 70e47067ca87323030f8daa6fd4e2848e695e6068ef611c71c89d5bd5694da25
+-- hash: 2177b40144f01ae0a40effd326ed6357de50c47b559d1a0d307d298994c38b37
 
 name:           language-docker
-version:        4.0.0
+version:        4.0.1
 synopsis:       Dockerfile parser, pretty-printer and embedded DSL
 description:    All functions for parsing, printing and writting Dockerfiles are exported through @Language.Docker@. For more fine-grained operations look for specific modules that implement a certain functionality.
                 See the <https://github.com/hadolint/language-docker GitHub project> for the source-code and examples.
@@ -52,17 +52,14 @@
   build-depends:
       base >=4.8 && <5
     , bytestring >=0.10
-    , filepath
     , free
     , mtl
     , parsec >=3.1
     , pretty
-    , semigroups
     , split >=0.2
     , template-haskell
     , text
     , th-lift
-    , th-lift-instances
     , time
   default-language: Haskell2010
 
@@ -92,11 +89,9 @@
     , parsec >=3.1
     , pretty
     , process
-    , semigroups
     , split >=0.2
     , template-haskell
     , text
     , th-lift
-    , th-lift-instances
     , time
   default-language: Haskell2010
diff --git a/src/Language/Docker/Syntax/Lift.hs b/src/Language/Docker/Syntax/Lift.hs
--- a/src/Language/Docker/Syntax/Lift.hs
+++ b/src/Language/Docker/Syntax/Lift.hs
@@ -5,11 +5,14 @@
 import Data.Fixed (Fixed)
 import Data.List.NonEmpty (NonEmpty)
 import Data.Time.Clock (DiffTime)
-import Instances.TH.Lift ()
 import Language.Haskell.TH.Lift
 import Language.Haskell.TH.Syntax ()
+import qualified Data.ByteString as ByteString
 
 import Language.Docker.Syntax
+
+instance Lift ByteString.ByteString where
+  lift b = [| ByteString.pack $(lift $ ByteString.unpack b) |]
 
 deriveLift ''NonEmpty
 
