diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# dockerfile-composer
+# dockerfile-creator
 
 Build Dockerfiles using Haskell with an embedded DSL.
 
diff --git a/dockerfile-creator.cabal b/dockerfile-creator.cabal
--- a/dockerfile-creator.cabal
+++ b/dockerfile-creator.cabal
@@ -1,13 +1,13 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.31.2.
+-- This file has been generated from package.yaml by hpack version 0.34.4.
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 301ffca16b19023e556f9590e046688e1b2da2f00506cf1f5f353972eb71ff45
+-- hash: fbcbae9e11125cf03d93aaa1089210f84d3a208cc6c2411e54cdf972d00a2bb5
 
 name:           dockerfile-creator
-version:        0.1.0.0
+version:        0.1.1.0
 description:    Embedded DSL to create Dockerfiles using Haskell. Please see the README on GitHub at <https://github.com/hadolint/dockerfile-creator#readme>
 homepage:       https://github.com/hadolint/dockerfile-creator#readme
 bug-reports:    https://github.com/hadolint/dockerfile-creator/issues
@@ -40,7 +40,7 @@
     , bytestring >=0.10
     , data-default-class
     , free
-    , language-docker >=8.1
+    , language-docker >=10.0.0
     , megaparsec >=8.0
     , mtl
     , template-haskell
@@ -71,7 +71,7 @@
     , filepath
     , free
     , hspec
-    , language-docker >=8.1
+    , language-docker >=10.0.0
     , megaparsec >=8.0
     , mtl
     , process
diff --git a/src/Language/Docker/EDSL.hs b/src/Language/Docker/EDSL.hs
--- a/src/Language/Docker/EDSL.hs
+++ b/src/Language/Docker/EDSL.hs
@@ -55,11 +55,11 @@
 runD (From (EBaseImage name t d a p) n) = runDef Syntax.From (Syntax.BaseImage name t d a p) n
 runD (CmdArgs as n) = runDef Syntax.Cmd as n
 runD (Shell as n) = runDef Syntax.Shell as n
-runD (AddArgs s d c n) = runDef Syntax.Add (Syntax.AddArgs s d c) n
+runD (AddArgs s d co cm n) = runDef Syntax.Add (Syntax.AddArgs s d co cm) n
 runD (User u n) = runDef Syntax.User u n
 runD (Label ps n) = runDef Syntax.Label ps n
 runD (StopSignal s n) = runDef Syntax.Stopsignal s n
-runD (CopyArgs s d c f n) = runDef Syntax.Copy (Syntax.CopyArgs s d c f) n
+runD (CopyArgs s d co cm f n) = runDef Syntax.Copy (Syntax.CopyArgs s d co cm f) n
 runD (RunArgs as fs n) = runDef Syntax.Run (Syntax.RunArgs as fs) n
 runD (Workdir d n) = runDef Syntax.Workdir d n
 runD (Expose ps n) = runDef Syntax.Expose ps n
@@ -210,7 +210,7 @@
 -- copy $ ["some_file"] `to` "/some/path" `fromStage` "builder"
 -- @
 copy :: MonadFree EInstruction m => Syntax.CopyArgs -> m ()
-copy (Syntax.CopyArgs sources dest ch src) = copyArgs sources dest ch src
+copy (Syntax.CopyArgs sources dest co cm src) = copyArgs sources dest co cm src
 
 -- | Create a COPY instruction from a given build stage.
 -- This is a shorthand version of using 'copy' with combinators.
@@ -224,7 +224,7 @@
   NonEmpty Syntax.SourcePath ->
   Syntax.TargetPath ->
   m ()
-copyFromStage stage source dest = copy $ Syntax.CopyArgs source dest Syntax.NoChown stage
+copyFromStage stage source dest = copy $ Syntax.CopyArgs source dest Syntax.NoChown Syntax.NoChmod stage
 
 -- | Create an ADD instruction. This is often used as a shorthand version
 -- of copy when no extra options are needed. Currently there is no way to
@@ -234,7 +234,7 @@
 -- add ["foo.js", "bar.js"] "."
 -- @
 add :: MonadFree EInstruction m => NonEmpty Syntax.SourcePath -> Syntax.TargetPath -> m ()
-add sources dest = addArgs sources dest Syntax.NoChown
+add sources dest = addArgs sources dest Syntax.NoChown Syntax.NoChmod
 
 -- | Converts a NonEmpty list of strings to a NonEmpty list of 'Syntax.SourcePath'
 --
@@ -288,7 +288,7 @@
 -- copy $ ["foo.js"] `to` "." `ownedBy`
 -- @
 to :: NonEmpty Syntax.SourcePath -> Syntax.TargetPath -> Syntax.CopyArgs
-to sources dest = Syntax.CopyArgs sources dest Syntax.NoChown Syntax.NoSource
+to sources dest = Syntax.CopyArgs sources dest Syntax.NoChown Syntax.NoChmod Syntax.NoSource
 
 ports :: [Syntax.Port] -> Syntax.Ports
 ports = Syntax.Ports
diff --git a/src/Language/Docker/EDSL/Types.hs b/src/Language/Docker/EDSL/Types.hs
--- a/src/Language/Docker/EDSL/Types.hs
+++ b/src/Language/Docker/EDSL/Types.hs
@@ -27,6 +27,7 @@
       (NonEmpty Syntax.SourcePath)
       Syntax.TargetPath
       Syntax.Chown
+      Syntax.Chmod
       next
   | User
       Text
@@ -41,6 +42,7 @@
       (NonEmpty Syntax.SourcePath)
       Syntax.TargetPath
       Syntax.Chown
+      Syntax.Chmod
       Syntax.CopySource
       next
   | RunArgs
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
@@ -45,6 +45,8 @@
 
 deriveLift ''Chown
 
+deriveLift ''Chmod
+
 deriveLift ''CopySource
 
 deriveLift ''CopyArgs
@@ -78,3 +80,9 @@
 deriveLift ''RunFlags
 
 deriveLift ''RunArgs
+
+deriveLift ''PragmaDirective
+
+deriveLift ''EscapeChar
+
+deriveLift ''SyntaxImage
